Hi Jeff,
Ok I think those RSA errors with memory are due to this pipelining, because
the b64decode(..) b64encode(..) is called every where, and if I understand
correctly, the string inside will be destroyed and I have to use the
redirector. Can you confirm if you agree with this code change and my
understanding of the problem ?
*Previous Code:*
std::string b64encode(std::string str)
{
std::string encoded;
CryptoPP::StringSource(str, true,
new CryptoPP::Base64Encoder(
new CryptoPP::StringSink(encoded),
false
)
);
return encoded; //encoded will be destroyed once StringSource(..) goes out
of scope
}
*New Code:*
std::string b64encode(std::string str)
{
std::string encoded;
CryptoPP::Base64Encoder df(new CryptoPP::StringSink(encoded),false);
CryptoPP::StringSource(str, true, new Redirector(df) );
return encoded; //encoded won't be destroyed
}
based on this:
CCM< AES, TAG_SIZE >::Decryption d;
d.SetKeyWithIV( key, key.size(), iv, sizeof(iv) );
AuthenticatedDecryptionFilter df( d, new StringSink( recovered ) ); //
AuthenticatedDecryptionFilter // Cipher text includes the MAC tag
StringSource ss( cipher, true, new Redirector( df ) ); // StringSource //
If the object does not throw, here's the only // opportunity to check the
data's integrity
bool b = df.GetLastResult();
if( true == b ) { cout << recovered << endl; }
On Thursday, April 27, 2023 at 1:35:43 PM UTC-4 Jeffrey Walton wrote:
On Thu, Apr 27, 2023 at 1:31 PM Dwight Kulkarni <[email protected]>
wrote:
>
> I note an example code sample for b64encode(..). I note that there are
"new" calls inside the constructor(..).
>
> The result is returned in the encoded string.
>
> Do I need to do anything to delete the memory from the new calls ?
>
> What happens to the memory in the variable "encoded", if the variable is
passed up to another function and the StringSink is destroyed.
>
> Should I make a copy of encoded and send it on to be safe ?
https://www.cryptopp.com/wiki/Pipelining#Ownership
Jeff
--
You received this message because you are subscribed to the Google Groups
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/cryptopp-users/3cb2a4e9-3319-49ee-a7f3-4ab8e7596043n%40googlegroups.com.