Hello third time.
Totally newbie in C++ and crypto-things.
General schema is here:
https://developers.google.com/pay/api/payment-data-cryptography#encrypt-spec
Am I right in understanding for what different cryptopp things to be used?
Short schema of my actions:
1)loading keys (PEM keys, I think) from string as here:
string base64_decode(string encoded) {
string decoded;
CryptoPP::Base64Decoder decoder;
decoder.Put((CryptoPP::byte*)encoded.data(), encoded.size());
decoder.MessageEnd();
CryptoPP::word64 size = decoder.MaxRetrievable();
if (size && size <= SIZE_MAX)
{
decoded.resize(size);
decoder.Get((CryptoPP::byte*)&decoded[0], decoded.size());
return decoded;
}
else {
return "";
}
}
string priv_key_encoded = "...";//big things in base64, like this:
//
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgWV4oK8c/MZkCLk4qSCNjW0Zm6H0CBCtSYxkXkC9FBHehRANCAAQPldOnhO2/oXjdJD1dwlFPiNs6fcdoRgFu3/Z0iKj24SjTGyLRGAtYWLGXBZcDdPj3T2bJRHRVhE8Bc2AjkT7n
string priv_key = base64_decode(priv_key_encoded);
const CryptoPP::byte *priv_key_ptr = (const CryptoPP::byte*)
priv_key.data();
CryptoPP::SecByteBlock privKey(*priv_key_ptr);
//similar actions on other keys - our private, accepted ephemeral and
accepted public
CryptoPP::OID curve = CryptoPP::ASN1::secp256r1();
CryptoPP::ECDH<CryptoPP::ECP>::Domain dh(curve);
CryptoPP::DH2 dh2(dh);
//and finally:
dh2.Agree(shared_secret, privKey, ephPrivKey, g_pubKey, g_ephKey, false)
When I use outer keys auto-generated with GenerateKeyPair, I get
shared_secret, but with Google keys - not. What can it be? Incorrect key
loading?
Google ephemeral is 65-byte length after base64 decoding, but google public
(from here
https://payments.developers.google.com/paymentmethodtoken/keys.json) is
91-byte length. Tryed to use only last 65 - no effect.
Thank you very much!
I hope this post will help anyone wandering around googlePay api.
--
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].
For more options, visit https://groups.google.com/d/optout.