OK, now i'm sure that i generate a pair RSAprivate/RSApublic of valid keys. 
My new signing function is:

void Sign::SignHash( string Digest)
{
RSASS < PSS , SHA1 >::Signer Signer(RSAprivate);

StringSource( Digest, true, new SignerFilter( RNG, Signer, new 
StringSink(Sign ) ) );
}

It crashes again in a Segmentation fault; i tried to fix this using 
Redirector (as my previous post)...another Segmentation fault... 

Il giorno sabato 14 luglio 2012 16:02:33 UTC+2, Michele ha scritto:
>
> Hi Fraser, you are right!!
>
> I've just tried ( sorry for my english) your "checking code" and the 
> result is false twice. So i modified my code with that you suggested, in 
> previous email:
>
> [...]
>
> 1. RSA::PrivateKey RSAprivate;
> 2. RSAprivate.GenerateRandomWithKeySize(RNG,2048);
> 3. RSA::PublicKey RSApublic(RSAprivate);
>
> [...]
>
> Now it can't compile because of an error in 2.line : "expected contructor, 
> destructor, or type conversion before ' . ' token". Now i'm reading keys 
> and formats to fix this... thanks for your help!
>
> Cheers, Michele.
>
>
> Il giorno sabato 14 luglio 2012 15:06:12 UTC+2, Fraser ha scritto:
>>
>>  Hi Michele,
>>
>> Yes, you're only constructing the private key here, and then initialising 
>> the public key with an invalid private key, which makes the public key 
>> invalid also.  The keys are not being *generated* here.
>>
>> Inside Signature::SignHash, try adding the following to check:
>>
>> bool valid_private(RSAprivate.Validate(RNG, 0));
>> bool valid_public(RSApublic.Validate(RNG, 0));
>> if (!valid_private || !valid_public) {
>>   std::cerr << std::boolalpha << "Valid private key: " << valid_private
>>             << "   Valid public key: " << valid_public << '\n';
>>   return;
>> }
>>
>> So, somewhere before you first use the keys, you need to generate them, 
>> as per my previous email.  For more info, see 
>> http://www.cryptopp.com/wiki/Keys_and_Formats#Generating.2C_Validating.2C_Saving.2C_and_Loading_Keys
>>
>> Cheers,
>> Fraser.
>>
>>
>> On 14/07/2012 09:47, Michele wrote:
>>  
>> Yes, before calling Signature::SignHash i generate my keys with that code 
>>
>>  CryptoPP::RSA::PrivateKey RSAPrivate;               //private key 
>> generating
>> CryptoPP::RSA::PublicKey RSAPublic(RSAPrivate);        //public key 
>> generating
>>
>>  I took this code in a wiki sample and i tested it in a stand alone 
>> project and it worked. Your advice is to modify this code with that you 
>> wrote?
>>
>>  Cheers, Michele
>>
>> Il giorno sabato 14 luglio 2012 02:56:48 UTC+2, Fraser ha scritto: 
>>>
>>>  Hi Michele,
>>>
>>> I take it that before you call Signature::SignHash, you *are*generating 
>>> your private and public keys?  Something like:
>>>
>>> RSAprivate.GenerateRandomWithKeySize(RNG, 2048);
>>> RSApublic = CryptoPP::RSA::PublicKey(RSAprivate);
>>>
>>> Cheers,
>>> Fraser.
>>>
>>> On 13/07/2012 10:56, Michele wrote:
>>>  
>>> Hi, 
>>> I'm working on a simple project on KDevelop (linux Slackware virtual 
>>> machine, on a Windows 7 host). I have to write a C++ code that : 1) creates 
>>> a folder; 2) creates a number of text files in that folder; 3) Calculates a 
>>> hash of each file with RIPEMD128; 4) Signs each hash with RSA ; 5)performs 
>>> an integrity check if requested. 
>>> I'm using Cryptopp 5.6.1 for RIPEMD128 and RSA functions.
>>> I realized and tested points 1) 2) and 3). I realized and tested point 
>>> 4) following CryptoPP Signature Scheme Wiki: 
>>> http://www.cryptopp.com/wiki/RSA_Signature_Schemes, and it works fine. 
>>> Now i'm trying to integrate point 4) with the project and i realized the 
>>> following "signing function":
>>>
>>>  CrypoPP::AutoSeededRandomPool RNG;
>>>
>>>  CryptoPP::RSA::PrivateKey RSAprivate;
>>> CryptoPP::RSA::PublicKey RSApublic ( RSAprivate);
>>>
>>>  void Signature::SignHash(string Hash)
>>> {
>>>     string Digest = Hash;
>>>     string Signature = "";
>>>
>>>      CryptoPP::RSASS<Cryptopp::PSS,CryptoPP::SHA1>::Signer 
>>> signer(RSAprivate);
>>>     cout << "cotrol point 1";
>>>
>>>      CryptoPP::StringSource( Digest,true , new CryptoPP::SignerFilter ( 
>>> RNG , signer, new CryptoPP::StringSink ( Signature ) ) );
>>>     cout << "control point 2";
>>> }
>>>
>>>  If i launch the program it prints control point 1 and then it crashes 
>>> in a Segmentation fault (bin/sh: line 1 3216 Segmentation fault           
>>>  /root/<directory>/debug/. /src/<project>) !!
>>> I'm a new user of C++ and Slackware and i don't know how to solve this 
>>> problem ( I think that segmentation fault derives from a memory and/or a 
>>> C++ contructor/destructor problem....... )
>>>
>>>  Anyone can help me to solve this fault?
>>>  -- 
>>> 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. 
>>>
>>>
>>>
>>>  -- 
>> 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. 
>>
>>
>>
>>  

-- 
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