On Sun, Jun 2, 2019 at 5:53 AM Наталья <[email protected]> wrote:
>
> I have an ordinary, but easy, problem. Need to save public key into string 
> and load from this string.
> Saving and loading are successed in the test code, but when I try to create 
> decryptor from mey new public key (which are loaded wrom string) - i had an 
> exception "Missing required parameter Primel1".
> Wich parameter i need to add? What is the problem with this code?
>
> In debug I see correct value inside all strings...
>
>> //for generate IV and Key
>> #include "D:/Crypto++/cryptopp820/osrng.h"
>> using CryptoPP::AutoSeededRandomPool;
>>
>> #include <string>
>> using std::string;
>>
>> //for exceptions
>> #include "D:/Crypto++/cryptopp820/cryptlib.h"
>> using CryptoPP::Exception;
>>
>> //for hex viewing
>> #include "D:/Crypto++/cryptopp820/hex.h"
>> using CryptoPP::HexDecoder;
>> using CryptoPP::HexEncoder;
>>
>> //converter input into cipher
>> #include "D:/Crypto++/cryptopp820/filters.h"
>> using CryptoPP::StringSink;
>> using CryptoPP::StreamTransformation;
>> using CryptoPP::StreamTransformationFilter;
>>
>> //add AES
>> #include "D:/Crypto++/cryptopp820/aes.h"
>> using CryptoPP::AES;
>>
>> #include "D:/Crypto++/cryptopp820/modes.h"
>> using CryptoPP::CBC_Mode;
>>
>> #include "D:/Crypto++/cryptopp820/md5.h"
>> using CryptoPP::MD5;
>>
>> #include "D:/Crypto++/cryptopp820/blowfish.h"
>> #include "D:/Crypto++/cryptopp820/rsa.h"
>> #include "D:/Crypto++/cryptopp820/eccrypto.h"
>> #include "D:/Crypto++/cryptopp820/base64.h"
>> using CryptoPP::Blowfish;
>> #include <iostream>
>> using namespace std;
>> using namespace CryptoPP;
>>
>>
>> int main()
>> {
>>     //create public+private keys
>>     //encrypt some text
>>     //pack public key into the string or vector char
>>     //unpack public key and decrypt text
>>
>>
>>     std::string testText = "Text text";
>>     std::string encryptText, decryptText, for_save_key, packedKey, 
>> unpackedKey;
>>
>>     AutoSeededRandomPool rng(true);
>>     InvertibleRSAFunction params;
>>     params.GenerateRandomWithKeySize(rng, 3072);
>>
>>     RSA::PrivateKey privateKey(params);
>>     RSA::PublicKey publicKey(params);
>>
>>     RSAES_OAEP_SHA_Encryptor encryptor(publicKey);
>>     StringSource(testText, true, new PK_EncryptorFilter(rng, encryptor, new 
>> StringSink(encryptText)));
>>
>>     //try to pack public key
>>     RSA::PublicKey newPublicKey;
>>     try
>>     {
>>         StringSink tmp_key(for_save_key);
>>         publicKey.Save(tmp_key);
>>         newPublicKey.Load(CryptoPP::StringStore((const 
>> byte*)for_save_key.data(), for_save_key.size()).Ref());
>>     }
>>     catch (const BERDecodeErr& ex)
>>     {
>>         cerr << ex.what() << endl;
>>     }
>>
>>     try
>>     {
>>         RSAES_OAEP_SHA_Decryptor decryptor(newPublicKey);
>>         StringSource(encryptText, true, new PK_DecryptorFilter(rng, 
>> decryptor, new StringSink(decryptText)));
>>     }
>>     catch (InvalidArgument& ex)
>>     {
>>         cerr << ex.what() << endl;
>>     }
>>
>>     std::cout << "Decrypt text: " << decryptText << endl;
>>
>>     system("pause");
>>     return 0;
>> }

The decryptor should use the private key, not the public key. This is incorrect:

    RSAES_OAEP_SHA_Decryptor decryptor(newPublicKey);

Jeff

-- 
You received this message because you are subscribed to "Crypto++ Users". More 
information about Crypto++ and this group is available at 
http://www.cryptopp.com and 
http://groups.google.com/forum/#!forum/cryptopp-users.
--- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/cryptopp-users/CAH8yC8%3Dmf2cPhVbYp4X-ALF1rxuJvBm5SCAg7iSJemYm-%2BJ30w%40mail.gmail.com.

Reply via email to