--- rpl/src/chiffrement.c 2016/03/01 22:12:26 1.24 +++ rpl/src/chiffrement.c 2016/09/27 10:43:23 1.25 @@ -50,16 +50,21 @@ chiffrement(struct_processus *s_etat_pro unsigned char *message_chiffre; - EVP_CIPHER_CTX contexte; + EVP_CIPHER_CTX *contexte; - EVP_CIPHER_CTX_init(&contexte); + if ((contexte = EVP_CIPHER_CTX_new()) == NULL) + { + return(NULL); + } + + EVP_CIPHER_CTX_reset(contexte); longueur_bloc_de_chiffrement = EVP_CIPHER_block_size(type_chiffrement); - if (EVP_CipherInit_ex(&contexte, type_chiffrement, NULL, clef, + if (EVP_CipherInit_ex(contexte, type_chiffrement, NULL, clef, vecteur_initialisation, (encodage == d_vrai) ? 1 : 0) != 1) { - EVP_CIPHER_CTX_cleanup(&contexte); + EVP_CIPHER_CTX_free(contexte); return(NULL); } @@ -69,22 +74,23 @@ chiffrement(struct_processus *s_etat_pro if ((message_chiffre = malloc(((size_t) (*longueur_message_chiffre)) * sizeof(unsigned char))) == NULL) { + EVP_CIPHER_CTX_free(contexte); return(NULL); } - if (EVP_CipherUpdate(&contexte, message_chiffre, &longueur_message_1, + if (EVP_CipherUpdate(contexte, message_chiffre, &longueur_message_1, message, (int) longueur_message) != 1) { free(message_chiffre); - EVP_CIPHER_CTX_cleanup(&contexte); + EVP_CIPHER_CTX_free(contexte); return(NULL); } - if (EVP_CipherFinal_ex(&contexte, message_chiffre + longueur_message_1, + if (EVP_CipherFinal_ex(contexte, message_chiffre + longueur_message_1, &longueur_message_2) != 1) { free(message_chiffre); - EVP_CIPHER_CTX_cleanup(&contexte); + EVP_CIPHER_CTX_free(contexte); return(NULL); } @@ -94,10 +100,10 @@ chiffrement(struct_processus *s_etat_pro for(i = 0; i < EVP_CIPHER_iv_length(type_chiffrement); i++) { - vecteur_initialisation[i] = contexte.iv[i]; + vecteur_initialisation[i] = EVP_CIPHER_CTX_iv(contexte)[i]; } - EVP_CIPHER_CTX_cleanup(&contexte); + EVP_CIPHER_CTX_free(contexte); return(message_chiffre); }