Ok David, I've read the sample but there's nothing about the signature..... 
So do you think the fault is still caused by the key pair?

Il giorno sabato 21 luglio 2012 16:09:22 UTC+2, David Irvine ha scritto:
>
> All you need is in the download 
> RSA-SSA-Filter-Test.zip<http://www.cryptopp.com/w/images/9/9b/RSA-SSA-Filter-Test.zip>
>  - 
> which is one this page http://www.cryptopp.com/wiki/RSA. That shoudl show 
> you the FileFilter usage in some detail. 
>
> Best Regards
> David Irvine
>
>
> <http://maidsafe.net>maidsafe.net Limited is a limited liability company 
> incorporated in Scotland with number SC297540. VAT Registered 889 0608 77. 
> Registered Office: 72 Templehill, Troon, KA10 6BE. 
> Telephone Scotland: +44 1292 750020.
>
>
>
>
> On Sat, Jul 21, 2012 at 12:59 PM, Michele <[email protected]>wrote:
>
>> After some attempts I solved my problems with the key pair. At now, I can 
>> save/load and pass them to Signer/Verifier without faults.
>>
>> The Verifiy functions fails:
>>
>> void Signature::VerifySignature()
>> {
>> [...]      //load the public key, calculate the digest of the file 
>> (checked equal to that calculated in "signin function" ), load the signature
>>   try
>>   {
>>   StringSource SS( digest + signature, true, new       
>> SignatureVerificationFilter(Verifier, new StringSink(recovered), 
>> SignatureVerificationFilter::THROW_EXCEPTION | 
>> SignatureVerificationFilter::PUT:MESSAGE));
>>   }
>>   catch(Exception e)
>>   {
>>   cerr << "error: " << e.what() << endl;
>>   }
>>
>> }
>>
>> It fails because: "digital signature not valid". I'm sure signature is 
>> valid because, at now, I run the program with only one file (testing). The 
>> variables signature, digest and recovered are public class members.
>>
>> The variable signature, the one that causes the fault, is first saved in 
>> a file, when my "signing function" ends, by a "saving function":
>>
>> void Signature::SaveSignature(string signed)
>> {
>> SIGNATURE = signed;
>>
>> fstream savingfile;
>> savingfile.open("./Signatures", fstream::out | fstream::binary);       
>> //SIGNATURE is local variable of a "saving function"
>> savingfile.write(SIGNATURE.c_str(), SIGNATURE.size());
>> savingfile.close();
>> }
>>
>> Then is assigned to the variable signature , by a "loading function":
>>
>> string Signature::LoadSignature()
>> {
>>
>> fstream loadingfile;
>> loadingfile.open("./Signatures", fstream::in | fstream::binary);
>> getline(loadingfile, SIGNATURE);
>> loadingfile.close();
>>
>> }
>>
>> I think that troubles could derive from saving and loadind the signature, 
>> something about its format
>> I really need to fix this. So I will appreciate every suggestion that 
>> could take me on the right track....... 
>>
>>
>> Il giorno lunedì 16 luglio 2012 15:49:28 UTC+2, David Irvine ha scritto:
>>
>>> PV.Save(your transfomration); should do the trick. 
>>> See this page 
>>> http://www.cryptopp.com/docs/**ref/class_crypto_material.**html#**
>>> a690c7ce3e765a502b29b47a08c1a4**e7b<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.**GenerateRandomWithK**eySize(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@**goo**
>>>>>>>> glegroups.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