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.
