PV.Save(your transfomration); should do the trick.
See this page
http://www.cryptopp.com/docs/ref/class_crypto_material.html#a690c7ce3e765a502b29b47a08c1a4e7b

Best Regards
David Irvine


On Mon, Jul 16, 2012 at 2:39 PM, Michele Gucciardo <
[email protected]> wrote:

> Done, now my class have this new member
>
> class Signature
> {
> [..]
>    static RSA::PrivateKey PV;
> [..]
> }
> But this line
>
> Save(saving,queue);
>
> doesn't compile, because "Save is not in this scope" (i tried to make
> SavePV a static class function but it doesn't work). Maybe I have not
> understand your advice...
>
> 2012/7/16 David Irvine <[email protected]>
>
>>  PV.Save(queue);
>>
>> This item is not available in the scope you are calling it in. PV is in
>> the KeyGen scope, you should make it a static class member in this case.
>>
>>
>> Best Regards
>> David Irvine
>>
>>
>>
>> On Mon, Jul 16, 2012 at 1:32 PM, Michele <[email protected]>wrote:
>>
>>> 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/**w**
>>>>>>> iki/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 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