I'm having what appears to be the same problem with StringSource. The
following function works with Crypto++ 5.1 in VS2003, but does not
work with Crypto++ 5.4 or 5.5.2. In VS2003, it throws an exception. In
VS2008 no errors occur, but "signature" is not populated. I'm
upgrading our code to VS2008, and am stuck at this point - since Crypto
++ 5.1 does not work under VS2008. Is there a work-around?

int rsa_sha1_sign( const string &key, const string &plaintext, string
&signature)
{
  try
  {
    AutoSeededRandomPool rng;

    RSASSA_PKCS1v15_SHA_Signer privkey(StringSource(key, true, new
Base64Decoder()));

    SecByteBlock sbbSignature(privkey.SignatureLength());

    privkey.SignMessage(rng, (byte const*) plaintext.data(),
plaintext.size(), sbbSignature.begin());

    StringSource source(sbbSignature, true, new Base64Encoder(new
StringSink(signature),false));
  }
  catch(CryptoPP::Exception)
  {
    return 0;
  }
  return 1;
}


On Feb 29, 7:22 am, whatazor <[EMAIL PROTECTED]> wrote:
> Hi,
> I've used this code (but the difference is only that the class is
> instanciated internally to function brackets) and the behaviour
> doesn't change.
>
> :(
>
> On 25 Feb, 00:23, "Jeffrey Walton" <[EMAIL PROTECTED]> wrote:
>
>
>
> > Hi w,
>
> > I suspect it has to with your usage of the library. Try the following.
>
> > Jeff
>
> > #include <iostream>
> > #include <string>
>
> > using std::string;
> > using std::cout;
> > using std::endl;
>
> > #include "default.h"
> > #include "filters.h"
>
> > using CryptoPP::DefaultEncryptorWithMAC;
> > using CryptoPP::DefaultDecryptorWithMAC;
> > using CryptoPP::StringSink;
> > using CryptoPP::StringSource;
>
> > int main(int argc, char* argv[])
> > {
> >     string message = "secret message";
> >     string password = "password";
> >     string encrypted, recovered;
>
> >     StringSource(
> >         message,
> >         true,
> >         new DefaultEncryptorWithMAC(
> >             password.c_str(),
> >             new StringSink( encrypted )
> >         ) // DefaultEncryptorWithMAC
> >     ); // StringSource
>
> >     StringSource(
> >         encrypted,
> >         true,
> >         new DefaultDecryptorWithMAC(
> >             password.c_str(),
> >             new StringSink( recovered )
> >         ) // DefaultDecryptorWithMAC
> >     ); // StringSource
>
> >     cout << "Recovered Text:" << endl;
> >     cout << "  " << recovered << endl;
>
> >     return 0;
>
> > }
>
> > On 2/22/08, whatazor <[EMAIL PROTECTED]> wrote:
>
> > > Hi All,
> > > I use crypto 5.4 and I notice a strange problem using an automated
> > > test for testing a wrapping class of StringSource I have. This
> > > wrapping class only call StringSource, but the problems is that
> > > sometimes (not regularly) StringSource throw an exception even if this
> > > automated test use always the same string to crypt and then decrypt,
> > > and the same passphrase
>
> > > try
> > >  {
> > >    StringSink *ssink = new StringSink(out);
> > >    DefaultEncryptorWithMAC  * mac =    new
> > > DefaultEncryptorWithMAC(passPhrase, ssink);
>
> > >    StringSource s((const byte *)in, len, true, mac);
> > >  }
> > >  catch (...)
> > >  {
> > >    result = false;
> > >  }
>
> > > where is the problem?
>
> > > thx you very much
> > > w- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [EMAIL PROTECTED]
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
-~----------~----~----~----~------~----~------~--~---

Reply via email to