mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
fixed bug in aes
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-GenericTunneling@6297 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
66de50508b
commit
cd2d702e44
@ -81,10 +81,10 @@ int main(int argc,char *argv[])
|
|||||||
for(int j=0;j<8;++j)
|
for(int j=0;j<8;++j)
|
||||||
salt[j] = lrand48() & 0xff ;
|
salt[j] = lrand48() & 0xff ;
|
||||||
|
|
||||||
unsigned char output_data[source_string.size() + 1 + 16] ;
|
unsigned char output_data[source_string.size() + 16] ;
|
||||||
uint32_t output_data_length = source_string.size() + 1 + 16 ;
|
uint32_t output_data_length = source_string.size() + 16 ;
|
||||||
|
|
||||||
CHECK(RsAes::aes_crypt_8_16( (const uint8_t*)source_string.c_str(),source_string.length()+1,key_data,salt,output_data,output_data_length)) ;
|
CHECK(RsAes::aes_crypt_8_16( (const uint8_t*)source_string.c_str(),source_string.length(),key_data,salt,output_data,output_data_length)) ;
|
||||||
|
|
||||||
std::cerr << "Round " << i << " salt=" ;
|
std::cerr << "Round " << i << " salt=" ;
|
||||||
printHex(salt,8) ;
|
printHex(salt,8) ;
|
||||||
@ -92,19 +92,19 @@ int main(int argc,char *argv[])
|
|||||||
printHex(output_data,output_data_length) ;
|
printHex(output_data,output_data_length) ;
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
|
||||||
unsigned char output_data2[output_data_length + 1 + 16] ;
|
unsigned char output_data2[output_data_length + 16] ;
|
||||||
uint32_t output_data_length2 = output_data_length + 1 + 16 ;
|
uint32_t output_data_length2 = output_data_length + 16 ;
|
||||||
|
|
||||||
CHECK(RsAes::aes_decrypt_8_16(output_data,output_data_length,key_data,salt,output_data2,output_data_length2)) ;
|
CHECK(RsAes::aes_decrypt_8_16(output_data,output_data_length,key_data,salt,output_data2,output_data_length2)) ;
|
||||||
|
|
||||||
// std::cerr << " output_length = " << output_data_length2 << ", decrypted string = " ;
|
std::cerr << " output_length = " << output_data_length2 << ", decrypted string = " ;
|
||||||
// printHex(output_data2,output_data_length2) ;
|
printHex(output_data2,output_data_length2) ;
|
||||||
// std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
|
||||||
CHECK(std::string( (const char *)output_data2,output_data_length2) == source_string) ;
|
CHECK(std::string( (const char *)output_data2,output_data_length2) == source_string) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
FINALREPORT("Sha1Test") ;
|
FINALREPORT("AESTest") ;
|
||||||
return TESTRESULT() ;
|
return TESTRESULT() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,15 +57,13 @@ bool RsAes::aes_crypt_8_16(const uint8_t *input_data,uint32_t input_data_length,
|
|||||||
if(output_data_length < (uint32_t)c_len)
|
if(output_data_length < (uint32_t)c_len)
|
||||||
return false ;
|
return false ;
|
||||||
|
|
||||||
output_data_length = c_len ;
|
|
||||||
|
|
||||||
/* update ciphertext, c_len is filled with the length of ciphertext generated,
|
/* update ciphertext, c_len is filled with the length of ciphertext generated,
|
||||||
*len is the size of plaintext in bytes */
|
*len is the size of plaintext in bytes */
|
||||||
|
|
||||||
EVP_EncryptUpdate(&e_ctx, output_data, &c_len, input_data, input_data_length);
|
EVP_EncryptUpdate(&e_ctx, output_data, &c_len, input_data, input_data_length);
|
||||||
|
|
||||||
/* update ciphertext with the final remaining bytes */
|
/* update ciphertext with the final remaining bytes */
|
||||||
EVP_EncryptFinal_ex(&e_ctx, const_cast<uint8_t*>(input_data)+c_len, &f_len);
|
EVP_EncryptFinal_ex(&e_ctx, output_data+c_len, &f_len);
|
||||||
|
|
||||||
output_data_length = c_len + f_len;
|
output_data_length = c_len + f_len;
|
||||||
|
|
||||||
@ -109,7 +107,7 @@ bool RsAes::aes_decrypt_8_16(const uint8_t *input_data,uint32_t input_data_lengt
|
|||||||
EVP_DecryptUpdate(&e_ctx, output_data, &c_len, input_data, input_data_length);
|
EVP_DecryptUpdate(&e_ctx, output_data, &c_len, input_data, input_data_length);
|
||||||
|
|
||||||
/* update ciphertext with the final remaining bytes */
|
/* update ciphertext with the final remaining bytes */
|
||||||
EVP_DecryptFinal_ex(&e_ctx, const_cast<uint8_t*>(input_data)+c_len, &f_len);
|
EVP_DecryptFinal_ex(&e_ctx, output_data+c_len, &f_len);
|
||||||
|
|
||||||
output_data_length = c_len + f_len;
|
output_data_length = c_len + f_len;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user