本文整理汇总了C++中rsa::PublicKey::Load方法的典型用法代码示例。如果您正苦于以下问题:C++ PublicKey::Load方法的具体用法?C++ PublicKey::Load怎么用?C++ PublicKey::Load使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rsa::PublicKey
的用法示例。
在下文中一共展示了PublicKey::Load方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: signature_verify
void signature_verify( const string & account_num, string & signature){
RSA::PublicKey publicKey;
string recovered, message;
// Load public key
CryptoPP::ByteQueue bytes;
FileSource file("pubkey.txt", true, new Base64Decoder);
file.TransferTo(bytes);
bytes.MessageEnd();
publicKey.Load(bytes);
// Verify and Recover
RSASS<PSSR, SHA1>::Verifier verifier(publicKey);
StringSource(signature, true,
new SignatureVerificationFilter(
verifier,
new StringSink(recovered),
SignatureVerificationFilter::THROW_EXCEPTION |
SignatureVerificationFilter::PUT_MESSAGE
) // SignatureVerificationFilter
); // StringSource
assert(account_num == recovered);
cout << "Verified signature on message" << endl;
cout << "Message: " << "'" << recovered << "'" << endl;
}
示例2: LoadKey
void LoadKey(const string& filename, RSA::PublicKey& PublicKey)
{
// DER Encode Key - X.509 key format
PublicKey.Load(
FileSource(filename.c_str(), true, NULL, true /*binary*/).Ref()
);
}
示例3: loadRSAPubKey
void loadRSAPubKey(RSA::PublicKey& key, const char* filename){
ByteQueue byte;
FileSource file(filename, true, new Base64Decoder);
file.TransferTo(byte);
byte.MessageEnd();
key.Load(byte);
}
示例4: CheckSignature
bool CheckSignature(const std::string& pubKey,
const std::string& message,
const std::string& signature)
{
RSA::PublicKey publicKey;
publicKey.Load(StringSource(pubKey, true).Ref());
RSASSA_PKCS1v15_SHA_Verifier verifier(publicKey);
try {
StringSource(message+signature, true,
new SignatureVerificationFilter(
verifier, NULL,
SignatureVerificationFilter::THROW_EXCEPTION));
return true;
} catch (const std::exception&) {
return false;
}
}
示例5: fileName
CryptoPP::RSA::PublicKey cKeysStorage::loadPubFile(std::string pPubKey)
{
std::string fileName(pPubKey);
//fileName += ".pub";
std::cout << "Public key file: " << fileName << std::endl;
/*std::string line;
std::ifstream input(fileName);
for (int i = 0; i < 3; i++)
{
input >> line;
//std::cout << line << " ";
input >> line;
//std::cout << line << std::endl;
}
std::cout << "Load rsa data" << std::endl;
input >> line; // END
*/
// load rsa data
//char byte;
//from .pub to tmp
/*std::ofstream tmpFile("tmp", std::ios::trunc);
while (!input.eof())
{
input >> std::noskipws >> byte;
std::cout << byte;
tmpFile << byte;
}
tmpFile.close();*/
//Read public key
CryptoPP::ByteQueue bytes;
FileSource file(fileName.c_str(), true, new Base64Decoder);
file.TransferTo(bytes);
bytes.MessageEnd();
RSA::PublicKey pubKey;
pubKey.Load(bytes);
std::cout << "end of loadPubFile" << std::endl;
return pubKey;
}
示例6: VerifyLicense
int VerifyLicense(string signedTxt, string sigIn, string pubKeyEnc)
{
//Read public key
CryptoPP::ByteQueue bytes;
StringSource file(pubKeyEnc, true, new Base64Decoder);
file.TransferTo(bytes);
bytes.MessageEnd();
RSA::PublicKey pubKey;
pubKey.Load(bytes);
RSASSA_PKCS1v15_SHA_Verifier verifier(pubKey);
//Read signed message
CryptoPP::ByteQueue sig;
StringSource sigFile(sigIn, true, new Base64Decoder);
string sigStr;
StringSink sigStrSink(sigStr);
sigFile.TransferTo(sigStrSink);
string combined(signedTxt);
combined.append(sigStr);
//Verify signature
try
{
StringSource(combined, true,
new SignatureVerificationFilter(
verifier, NULL,
SignatureVerificationFilter::THROW_EXCEPTION
)
);
}
catch(SignatureVerificationFilter::SignatureVerificationFailed &err)
{
cout << err.what() << endl;
return 0;
}
return 1;
}
示例7: Verify
void Verify(){
//Read public key
CryptoPP::ByteQueue bytes;
FileSource file("pubkey.txt", true, new Base64Decoder);
file.TransferTo(bytes);
bytes.MessageEnd();
RSA::PublicKey pubKey;
pubKey.Load(bytes);
RSASSA_PKCS1v15_SHA_Verifier verifier(pubKey);
//Read signed message
string signedTxt;
FileSource("message.dat", true, new StringSink(signedTxt)); //c
string sig;
FileSource("cipher.dat", true, new StringSink(sig)); //m
string combined(signedTxt);
combined.append(sig);
//Verify signature
try
{
StringSource(combined, true,
new SignatureVerificationFilter(
verifier, NULL,
SignatureVerificationFilter::THROW_EXCEPTION
)
);
// cout << "Signature OK" << endl;
}
catch(SignatureVerificationFilter::SignatureVerificationFailed &err)
{
cout << err.what() << endl;
}
}
示例8: EncryptAsymmetrical
std::string EncryptAsymmetrical(const std::string& pubKey, const std::string& data) {
assert(!data.empty());
string result;
AutoSeededRandomPool rng;
RSA::PublicKey publicKey;
publicKey.Load(StringSource(pubKey, true).Ref());
RSAES_OAEP_SHA_Encryptor e(publicKey);
result.resize(2);
*(ui16*)result.data() = 0;
for (size_t i = 0; i <= (data.size() - 1) / MAX_DATA_SIZE; ++i) {
string currData = data.substr(i * MAX_DATA_SIZE, MAX_DATA_SIZE);
string currResult;
StringSource ss(currData, true,
new PK_EncryptorFilter(rng, e,
new StringSink(currResult)));
result.resize(result.size() + 2);
(*(ui16*)(result.data() + result.size() - 2)) = currResult.size();
(*(ui16*)(result.data()))++;
result += currResult;
}
assert(!result.empty());
return result;
}
示例9: src
bool
Validator::verifySignature(const uint8_t* buf,
const size_t size,
const Signature& sig,
const v1::PublicKey& key)
{
try {
using namespace CryptoPP;
switch (sig.getType()) {
case tlv::SignatureSha256WithRsa: {
if (key.getKeyType() != KeyType::RSA)
return false;
RSA::PublicKey publicKey;
ByteQueue queue;
queue.Put(reinterpret_cast<const byte*>(key.get().buf()), key.get().size());
publicKey.Load(queue);
RSASS<PKCS1v15, SHA256>::Verifier verifier(publicKey);
return verifier.VerifyMessage(buf, size,
sig.getValue().value(), sig.getValue().value_size());
}
case tlv::SignatureSha256WithEcdsa: {
if (key.getKeyType() != KeyType::EC)
return false;
ECDSA<ECP, SHA256>::PublicKey publicKey;
ByteQueue queue;
queue.Put(reinterpret_cast<const byte*>(key.get().buf()), key.get().size());
publicKey.Load(queue);
ECDSA<ECP, SHA256>::Verifier verifier(publicKey);
uint32_t length = 0;
StringSource src(key.get().buf(), key.get().size(), true);
BERSequenceDecoder subjectPublicKeyInfo(src);
{
BERSequenceDecoder algorithmInfo(subjectPublicKeyInfo);
{
Oid algorithm;
algorithm.decode(algorithmInfo);
Oid curveId;
curveId.decode(algorithmInfo);
if (curveId == SECP256R1)
length = 256;
else if (curveId == SECP384R1)
length = 384;
else
return false;
}
}
switch (length) {
case 256: {
uint8_t buffer[64];
size_t usedSize = DSAConvertSignatureFormat(buffer, sizeof(buffer), DSA_P1363,
sig.getValue().value(),
sig.getValue().value_size(),
DSA_DER);
return verifier.VerifyMessage(buf, size, buffer, usedSize);
}
case 384: {
uint8_t buffer[96];
size_t usedSize = DSAConvertSignatureFormat(buffer, sizeof(buffer), DSA_P1363,
sig.getValue().value(),
sig.getValue().value_size(),
DSA_DER);
return verifier.VerifyMessage(buf, size, buffer, usedSize);
}
default:
return false;
}
}
default:
// Unsupported sig type
return false;
}
}
catch (const CryptoPP::Exception& e) {
return false;
}
}