--- rpl/src/chiffrement.c 2013/02/26 19:56:11 1.5 +++ rpl/src/chiffrement.c 2013/02/27 14:12:57 1.6 @@ -40,10 +40,10 @@ chiffrement(const EVP_CIPHER *type_chiff unsigned char *message, unsigned int longueur_message, unsigned char *clef, unsigned int longueur_clef, unsigned char *vecteur_initialisation, - unsigned int longueur_vecteur_initialisation, - unsigned int longueur_bloc_de_chiffrement, unsigned int *longueur_message_chiffre) { + int i; + int longueur_bloc_de_chiffrement; int longueur_message_1; int longueur_message_2; @@ -53,6 +53,8 @@ chiffrement(const EVP_CIPHER *type_chiff EVP_CIPHER_CTX_init(&contexte); + longueur_bloc_de_chiffrement = EVP_CIPHER_block_size(type_chiffrement); + if (EVP_CipherInit_ex(&contexte, type_chiffrement, NULL, clef, vecteur_initialisation, (encodage == d_vrai) ? 1 : 0) != 1) { @@ -86,6 +88,14 @@ chiffrement(const EVP_CIPHER *type_chiff } (*longueur_message_chiffre) = longueur_message_1 + longueur_message_2; + + // Mise à jour du vecteur d'initialisation + + for(i =0; i < EVP_CIPHER_iv_length(type_chiffrement); i++) + { + vecteur_initialisation[i] = contexte.iv[i]; + } + EVP_CIPHER_CTX_cleanup(&contexte); return(message_chiffre);