本文整理汇总了C++中rsa::PrivateKey类的典型用法代码示例。如果您正苦于以下问题:C++ PrivateKey类的具体用法?C++ PrivateKey怎么用?C++ PrivateKey使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PrivateKey类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: signature_sign
void signature_sign(const string & account_num, string & signature){
// Setup
string message = account_num;
RSA::PrivateKey privateKey;
AutoSeededRandomPool rng;
// Load private key
CryptoPP::ByteQueue bytes;
FileSource file("privkey.txt", true, new Base64Decoder);
file.TransferTo(bytes);
bytes.MessageEnd();
privateKey.Load(bytes);
// Sign and Encode
RSASS<PSSR, SHA1>::Signer signer(privateKey);
// StringSource
StringSource(message, true,
new SignerFilter(rng, signer,
new StringSink(signature),
true // putMessage
) // SignerFilter
);
}
示例2: Sign
void Sign(string str){
// string strContents = "A message to be signed";
string strContents = str;
//FileSource("tobesigned.dat", true, new StringSink(strContents));
AutoSeededRandomPool rng;
//Read private key
CryptoPP::ByteQueue bytes;
FileSource file("privkey.txt", true, new Base64Decoder);
file.TransferTo(bytes);
bytes.MessageEnd();
RSA::PrivateKey privateKey;
privateKey.Load(bytes);
//Sign message
RSASSA_PKCS1v15_SHA_Signer privkey(privateKey);
SecByteBlock sbbSignature(privkey.SignatureLength());
privkey.SignMessage( rng, (byte const*) strContents.data(), strContents.size(), sbbSignature);
//Save result
FileSink sink("message.dat"); //c
sink.Put((byte const*) strContents.data(), strContents.size());
FileSink sinksig("cipher.dat"); //m
sinksig.Put(sbbSignature, sbbSignature.size());
}
示例3: CreateSignature
size_t CreateSignature(const unsigned char* data, size_t dlen, unsigned char* privateKey, unsigned char* signature) {
RSA::PrivateKey key;
uint32_t len;
memcpy(&len,privateKey,4);
privateKey+=4;
key.SetModulus(Integer(privateKey,len));
privateKey+=len;
memcpy(&len,privateKey,4);
privateKey+=4;
key.SetPublicExponent(Integer(privateKey,len));
privateKey+=len;
memcpy(&len,privateKey,4);
privateKey+=4;
key.SetPrivateExponent(Integer(privateKey,len));
RSASSA_PKCS1v15_SHA_Signer signer(key);
size_t mlen = signer.MaxSignatureLength();
bool rst = false;
if (signature == 0) {
signature = new unsigned char[mlen];
rst = true;
}
AutoSeededRandomPool generator;
size_t retval = signer.SignMessage(generator, data, dlen, signature);
if (rst) {
delete[] signature;
}
return retval;
}
示例4: DecryptAsymmetrical
std::string DecryptAsymmetrical(const std::string& privKey, const std::string& data) {
assert(!data.empty());
string result;
AutoSeededRandomPool rng;
RSA::PrivateKey privateKey;
privateKey.Load(StringSource(privKey, true).Ref());
RSAES_OAEP_SHA_Decryptor d(privateKey);
ui32 blocksCount = *(ui16*)data.data();
const char* ptr = data.data() + 2;
for (size_t i = 0; i < blocksCount; ++i) {
ui16 blockSize = *(ui16*)ptr;
ptr += 2;
string currData = string(ptr, blockSize);
ptr += blockSize;
string currResult;
StringSource ss(currData, true,
new PK_DecryptorFilter(rng, d,
new StringSink(currResult)));
result += currResult;
}
assert(!result.empty());
return result;
}
示例5: PrintPrivateKey
void PrintPrivateKey(const RSA::PrivateKey& key)
{
cout << "n: " << key.GetModulus() << endl;
cout << "d: " << key.GetPrivateExponent() << endl;
cout << "e: " << key.GetPublicExponent() << endl;
cout << "p: " << key.GetPrime1() << endl;
cout << "q: " << key.GetPrime2() << endl;
}
示例6: Sign
std::string Sign(const std::string& privKey, const std::string& message) {
AutoSeededRandomPool rng;
string signature;
RSA::PrivateKey privateKey;
privateKey.Load(StringSource(privKey, true).Ref());
RSASSA_PKCS1v15_SHA_Signer signer(privateKey);
StringSource(message, true,
new SignerFilter(rng, signer,
new StringSink(signature)));
return signature;
}
示例7: DecodeFromFile
static bool DecodeFromFile(const char* filename, RSA::PrivateKey& key)
{
try {
ByteQueue queue;
FileSource file(filename, true);
file.TransferTo(queue);
queue.MessageEnd();
key.BERDecodePrivateKey(queue, false, queue.MaxRetrievable());
return key.Validate(rng, 3);
} catch (...) {
return false;
}
}
示例8: SignLicense
string SignLicense(AutoSeededRandomPool &rng, string strContents, string pass)
{
//Read private key
string encPrivKey;
StringSink encPrivKeySink(encPrivKey);
FileSource file("secondary-privkey-enc.txt", true, new Base64Decoder);
file.CopyTo(encPrivKeySink);
//Read initialization vector
byte iv[AES::BLOCKSIZE];
CryptoPP::ByteQueue bytesIv;
FileSource file2("secondary-privkey-iv.txt", true, new Base64Decoder);
file2.TransferTo(bytesIv);
bytesIv.MessageEnd();
bytesIv.Get(iv, AES::BLOCKSIZE);
//Hash the pass phrase to create 128 bit key
string hashedPass;
RIPEMD128 hash;
StringSource(pass, true, new HashFilter(hash, new StringSink(hashedPass)));
//Decrypt private key
byte test[encPrivKey.length()];
CFB_Mode<AES>::Decryption cfbDecryption((const unsigned char*)hashedPass.c_str(), hashedPass.length(), iv);
cfbDecryption.ProcessData(test, (byte *)encPrivKey.c_str(), encPrivKey.length());
StringSource privateKeySrc(test, encPrivKey.length(), true, NULL);
//Decode key
RSA::PrivateKey privateKey;
privateKey.Load(privateKeySrc);
//Sign message
RSASSA_PKCS1v15_SHA_Signer privkey(privateKey);
SecByteBlock sbbSignature(privkey.SignatureLength());
privkey.SignMessage(
rng,
(byte const*) strContents.data(),
strContents.size(),
sbbSignature);
//Save result
string out;
Base64Encoder enc(new StringSink(out));
enc.Put(sbbSignature, sbbSignature.size());
enc.MessageEnd();
return out;
}
示例9: loadRSAPriKey
void loadRSAPriKey(RSA::PrivateKey& key, const char* filename){
ByteQueue byte;
FileSource file(filename, true, new Base64Decoder);
file.TransferTo(byte);
byte.MessageEnd();
key.Load(byte);
}
示例10: LoadKey
void LoadKey(const char* file, RSA::PrivateKey& key)
{
ByteQueue q;
FileSource KeyFile(file, true, new Base64Decoder());
KeyFile.TransferTo(q);
key.BERDecodePrivateKey(q,false,0); // last 2 params unused
}
示例11: LoadKey
void LoadKey(const string& filename, RSA::PrivateKey& PrivateKey)
{
// DER Encode Key - PKCS #8 key format
PrivateKey.Load(
FileSource(filename.c_str(), true, NULL, true /*binary*/).Ref()
);
}
示例12: SaveKey
void SaveKey(const RSA::PrivateKey& PrivateKey, const string& filename)
{
// DER Encode Key - PKCS #8 key format
PrivateKey.Save(
FileSink(filename.c_str(), true /*binary*/).Ref()
);
}
示例13: printPrivateKey
static void printPrivateKey(RSA::PrivateKey key)
{
///////////////////////////////////////
// Generated Parameters
const Integer& n = key.GetModulus();
const Integer& p = key.GetPrime1();
const Integer& q = key.GetPrime2();
const Integer& d = key.GetPrivateExponent();
const Integer& e = key.GetPublicExponent();
cout << "RSA Parameters:" << endl;
cout << " n: " << n << endl;
cout << " p: " << p << endl;
cout << " q: " << q << endl;
cout << " d: " << d << endl;
cout << " e: " << e << endl;
cout << endl;
}
示例14: file
extern "C" int rsa_pss_sign(const char *key_file, const unsigned char *msg,
int len, unsigned char *sig_buf, unsigned char *modulus_buf)
{
try {
AutoSeededRandomPool rng;
FileSource file(key_file, true);
RSA::PrivateKey key;
ByteQueue bq;
// Load the key
file.TransferTo(bq);
bq.MessageEnd();
key.BERDecodePrivateKey(bq, false, bq.MaxRetrievable());
// Write the modulus
Integer mod = key.GetModulus();
// error check
if (mod.ByteCount() != RCM_RSA_MODULUS_SIZE)
throw std::length_error("incorrect rsa key modulus length");
for (int i = 0; i < mod.ByteCount(); i++)
modulus_buf[i] = mod.GetByte(i);
// Sign the message
RSASS<PSS, SHA256>::Signer signer(key);
size_t length = signer.MaxSignatureLength();
SecByteBlock signature(length);
length = signer.SignMessage(rng, msg, len, signature);
// Copy in reverse order
for (int i = 0; i < length; i++)
sig_buf[length - i - 1] = signature[i];
}
catch(const CryptoPP::Exception& e) {
cerr << e.what() << endl;
return 1;
}
catch(std::length_error& le) {
cerr << "Error: " << le.what() << endl;
return 1;
}
return 0;
}
示例15: GenerateRSAKey
/*
* generate the RSA public key and private key in separate file
*/
void MyRSA::GenerateRSAKey(unsigned int keyLength, const char *privFilename,
const char *pubFilename)
{ AutoSeededRandomPool rng;
RSA::PrivateKey priv;
priv.GenerateRandomWithKeySize(rng, 1024);
if (!priv.Validate(rng, 3))
{
throw("RSA key generation failed");
}
HexEncoder privFile(new FileSink(privFilename));
priv.DEREncode(privFile);
privFile.MessageEnd();
RSA::PublicKey pub;
pub.AssignFrom(priv);
HexEncoder pubFile(new FileSink(pubFilename));
pub.DEREncode(pubFile);
pubFile.MessageEnd();
}