version 1.29, 2017/08/03 17:17:42
|
version 1.43, 2024/07/04 08:38:47
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.28 |
RPL/2 (R) version 4.1.36 |
Copyright (C) 1989-2017 Dr. BERTRAND Joël |
Copyright (C) 1989-2024 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 43 chiffrement(struct_processus *s_etat_pro
|
Line 43 chiffrement(struct_processus *s_etat_pro
|
unsigned char *vecteur_initialisation, |
unsigned char *vecteur_initialisation, |
integer8 *longueur_message_chiffre) |
integer8 *longueur_message_chiffre) |
{ |
{ |
int i; |
|
int longueur_bloc_de_chiffrement; |
int longueur_bloc_de_chiffrement; |
int longueur_message_1; |
int longueur_message_1; |
int longueur_message_2; |
int longueur_message_2; |
|
|
|
integer8 nombre_blocs; |
|
|
unsigned char *message_chiffre; |
unsigned char *message_chiffre; |
|
|
EVP_CIPHER_CTX *contexte; |
EVP_CIPHER_CTX *contexte; |
Line 68 chiffrement(struct_processus *s_etat_pro
|
Line 69 chiffrement(struct_processus *s_etat_pro
|
return(NULL); |
return(NULL); |
} |
} |
|
|
(*longueur_message_chiffre) = ((longueur_message / |
nombre_blocs = longueur_message / longueur_bloc_de_chiffrement; |
longueur_bloc_de_chiffrement) + 1) * longueur_bloc_de_chiffrement; |
|
|
if ((longueur_message % longueur_bloc_de_chiffrement) != 0) |
|
{ |
|
nombre_blocs++; |
|
} |
|
|
if ((message_chiffre = malloc(((size_t) (*longueur_message_chiffre)) * |
(*longueur_message_chiffre) = nombre_blocs * longueur_bloc_de_chiffrement; |
|
|
|
// On prévoit une zone de garde pour EVP_CipherFinal_ex() en espérant |
|
// qu'il ne faille pas plus qu'une longueur de bloc de chiffrement. |
|
if ((message_chiffre = malloc(((size_t) ((*longueur_message_chiffre) |
|
+ longueur_bloc_de_chiffrement)) * |
sizeof(unsigned char))) == NULL) |
sizeof(unsigned char))) == NULL) |
{ |
{ |
EVP_CIPHER_CTX_free(contexte); |
EVP_CIPHER_CTX_free(contexte); |
Line 98 chiffrement(struct_processus *s_etat_pro
|
Line 108 chiffrement(struct_processus *s_etat_pro
|
|
|
// Mise à jour du vecteur d'initialisation |
// Mise à jour du vecteur d'initialisation |
|
|
for(i = 0; i < EVP_CIPHER_iv_length(type_chiffrement); i++) |
EVP_CIPHER_CTX_get_updated_iv(contexte, vecteur_initialisation, |
{ |
(size_t) EVP_CIPHER_iv_length(type_chiffrement)); |
vecteur_initialisation[i] = EVP_CIPHER_CTX_iv(contexte)[i]; |
|
} |
|
|
|
EVP_CIPHER_CTX_free(contexte); |
EVP_CIPHER_CTX_free(contexte); |
|
|