Hi all,
I have a problem using EVP interface .
This is my routine to encrypt data:
int encrypt(EVP_CIPHER_CTX *x, char * in, char * buf_out )
{
int text_len;
int loutU;
int loutF;
text_len = strlen(in) + 1; // i.e : adding '\0'
if( EVP_EncryptUpdate(x, (unsigned char *)buf_out, &loutU, ( unsigned
char*) in, text_len) == 0 )
return -1;
if( EVP_EncryptFinal_ex(x, (unsigned char *) &buf_out[loutU], &loutF) == 0 )
return -1;
return loutU + loutF;
}
And this to decrypt:
int decrypt(char* in, EVP_CIPHER_CTX * x, int size_cipher_text, char *
buffer_decrypted)
{
int loutU;
int loutF;
if( EVP_DecryptUpdate(x, (unsigned char *)(buffer_decrypted),
&loutU,(unsigned char *) in, size_cipher_text) ==0 )
return -1;
if( EVP_DecryptFinal_ex(x, (unsigned char *) (&buffer_decrypted[loutU]),
&loutF) == 0 )
return -1;
bzero(in, size_cipher_text);
return loutU + loutF;
}
Client send to Server encrypt data, first time all works fine, but second time
no.
For example if I first time send:
"Stack Overflow" server print "Stack Overflow",
but second time anything client sends, server always print "erflow".
Note that erflow is part of 2-nd byte of first message.
Can you help me?
Thanks
Enrico