Hi David,

this is the error i read in the shell: /bin/sh: line 1: 5233 Segmentation 
fault        /root/<myfolder>/debug/ . /src/ <myproject>. I'm new user of 
C++ so it could be not a segfault, but i'm not able to understand if it is 
or not. The class Sign is:

class Sign
{
private:
RSA::PrivateKey RSAprivate;
string DigitalSIgn;
public:
string Digest;
AutoSeededRandomPool RNG;
RSA::PublicKey RSApublic(RSA::PrivateKey);

contructor
destructor

void HashCalc(string);
void KeyGen();
void SignHash();
};

This class is used by a cpp file where i implemented those function, in 
summary:

void SIgn::HashCalc()
{
[...]  //calculate the Digest of a text and transform it in exadecimal 
format

Sign objectsign; 

if(keygen == false)               //call KeyGen only once
{
objectsign.KeyGen();
keygen = true;
}

objectsign.SignHash(Digest);
}

void Sign::KeyGen()
{
AutoSeededRandomPool RNG;
RSA::PrivateKey RSAprivate;
RSAprivate.GenerateRandomWithKeySize(RNG,1536);
RSA::PublicKey RSApublic(RSAprivate);

keygen=true;
}

void Sign::SignHash()
{
// here is the code i wrote in previous post
}

I hope this is what you asked....

Il giorno sabato 14 luglio 2012 18:11:47 UTC+2, David Irvine ha scritto:
>
> Are you sure you are getting a segfault and not an exception (possibly 
> from the RNG, I am not sure how you are using this). Could you post the 
> frame stack or perhaps a mini (smallest possible) version of a program that 
> exposes this issue. 
>
> Best Regards
> David Irvine
>
> On Sat, Jul 14, 2012 at 4:37 PM, Michele <[email protected]>wrote:
>
>> 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<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<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 cryptopp-users-unsubscribe@**
>>>>> googlegroups.com <[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 cryptopp-users-unsubscribe@**
>>>> googlegroups.com <[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