bool z3ResEx::z3Decrypt ( TMemoryStream &src, TMemoryStream &dst, unsigned char *key, unsigned int keylen ) { StringSource keyStr( key, keylen, true ); AutoSeededRandomPool rng; ECIES<ECP>::Decryptor ellipticalEnc( keyStr ); unsigned char *tmpBuffer( new unsigned char[ src.Size() ] ); DecodingResult dr = ellipticalEnc.Decrypt( rng, src.Data(), src.Size(), tmpBuffer ); if( !( dr.isValidCoding ) || ( dr.messageLength == 0 ) ) { delete tmpBuffer; return false; } dst.Write( tmpBuffer, dr.messageLength ); delete tmpBuffer; return true; }
bool z3ResEx::z3Decrypt ( TMemoryStream &src, TMemoryStream &dst, unsigned char *key, unsigned int keylen ) { StringSource keyStr( key, keylen, true ); AutoSeededRandomPool rng; ECIES<ECP>::Decryptor ellipticalEnc( keyStr ); vector<unsigned char> tmpBuffer(src.Size()); DecodingResult dr = ellipticalEnc.Decrypt( rng, src.Data(), src.Size(), &tmpBuffer[0] ); if( dr.isValidCoding && dr.messageLength > 0 ) { dst.Write(&tmpBuffer[0], dr.messageLength); return true; } return false; }