After some attempts I modified the general structure of the project. In 
summary:

int main()
{
   Signature Keys;   
   Keys.KeyGen();

   Menu Start;        //object with options for creating/filling files
   Start.FileGen();  
}

//FileGen() save file and calls CalcHash();CalcHash() calls 
SignHash();SignHash() calls LoadPrivate(), gets the private key and finally 
signs the digest calculated. 

class Signature               //in signature.h
{public:
   string Digest;
   string DigSignature;
constructor
destructor 
  static void KeyGen();
   void SavePrivate(string,RSA::PrivateKey);
   void LoadPrivate();
   void CalcHash(string);
   void SignHash();
};
//I will define also SavePublic() , LoadPublic() and VerifySignature() 
(when signing process will work)

static AutoSeededRandomPool rng;
void Signature::KeyGen()
{
   static RSA::PrivateKey PV;
   PV.GenerateRandomWithKeySize(rng,1536);
   static RSA;;PublicKey PU;
// validation code 
   string saving;
   saving = "//path";
   Signature Saving;
   Saving.SavePV(saving, PV);   
}
void Signature::SavePV(const string saving, RSA::PrivateKey PV)
{
  ByteQueue queue;
  PV.Save(queue);
  Save(saving, queue);
}

Now I'm in troubles because SavePV doesn't compile and I don't know why. I 
think that I pass the parameters in a wrong way...... I need some 
advices....


Il giorno domenica 15 luglio 2012 16:13:48 UTC+2, David Irvine ha scritto:
>
> No worries. 
>
> If you want the same keys though you could create a static method to 
> return the generated key. As it stands you will be regenerating the key 
> every time (I tink, at least if you always run GenerateKeys method which 
> will overwrite the contents of the static keys). It's maybe best to create 
> keys and pass them into your object (const) if you want to use them as I 
> think you do. That way you can control which keys are in use by the object 
> and recreate additional objects when you work with multiple keys. 
>
> You will, perhaps then find it easier to create checking objects etc. with 
> the same key pair.
>
> Best Regards
> David Irvine
>
>
>
>
> On Sun, Jul 15, 2012 at 1:37 PM, Michele <[email protected]>wrote:
>
>> Done!! Now item 4) of my first post works fine. 
>>
>> Here is a part of my Signature.cpp :
>>
>> static CryptoPP::AutoSeededRandomPool rng;               //this fixed rng 
>> troblues as David Irvine suggested
>>
>> void Signature::SignHash()                   //method declared in my 
>> Signature.h file
>> {
>> [...]
>> static RSA::PrivateKey RSAprivate;                                 
>> RSAprivate.GenerateRandomWithKeySize(rng,1536);
>>
>> static RSA::PublicKey RSApublic;                                     
>> //keys created inside the method as Fraser suggested
>>                                                                           
>>             //and not declared inside the class as Ingo Naumann suggested
>> [...]
>> }
>> I'm not sure that the key pair is generated only once ( as I want). I'm 
>> going to verify that key pair is not re-generated every time i call the 
>> method , because I have to sign every file with the same RSAprivate.
>>
>> Thanks Everybody!!
>> Now I'm going to work on item 5) of my first post: perform the integrity 
>> check of files (created/hashed/signed). I think that, because of I declared 
>> my key pair as local static variables, I must implement a method 
>> Signature::IntegrityCheck() inside my Signature.cpp, because outside of it 
>> the keys will not be visible.......
>>
>> Il giorno sabato 14 luglio 2012 21:44:24 UTC+2, Michele ha scritto:
>>
>>> Ok David, now i'm deleting RNG from class members. I'm not sure that 
>>> I've understand your example but i will try...
>>>
>>> Il giorno sabato 14 luglio 2012 19:08:07 UTC+2, David Irvine ha scritto:
>>>>
>>>> It seems you may not be using the RNG correctly. It's generally 
>>>> preferred to have on per thread at least (or a global if you like).  i.e. 
>>>> in test.cpp you will see how this was done. In your case I am not sure you 
>>>> should have a  class member RNG used as you have. This can cause all sorts 
>>>> of issues with threading and protection of the os provided generator etc. 
>>>>  
>>>> static OFB_Mode<AES>::Encryption s_globalRNG;
>>>>
>>>> RandomNumberGenerator & GlobalRNG()
>>>>  {
>>>>          return s_globalRNG;
>>>>  }
>>>>  
>>>> See the docs here 
>>>> http://www.cryptopp.com/**wiki/RandomNumberGenerator<http://www.cryptopp.com/wiki/RandomNumberGenerator>
>>>>
>>>> Best Regards
>>>> David Irvine
>>>>
>>>>
>>>> On Sat, Jul 14, 2012 at 5:53 PM, Michele 
>>>> <[email protected]>wrote:
>>>>
>>>>> RSA::PrivateKey RSAprivate;
>>>>> string DigitalSIgn;
>>>>>
>>>>
>>>>  -- 
>> 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