From 96b5907173b586bdf9e4437158d70e3cc648790d Mon Sep 17 00:00:00 2001 From: orignal Date: Fri, 22 Aug 2014 16:48:30 -0400 Subject: [PATCH] signing keys generators --- Signature.h | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/Signature.h b/Signature.h index ca859d67..d83329e7 100644 --- a/Signature.h +++ b/Signature.h @@ -23,11 +23,11 @@ namespace crypto virtual size_t GetSignatureLen () const = 0; }; - class Singer + class Signer { public: - virtual ~Singer () {}; + virtual ~Signer () {}; virtual void Sign (CryptoPP::RandomNumberGenerator& rnd, const uint8_t * buf, int len, uint8_t * signature) = 0; }; @@ -54,11 +54,11 @@ namespace crypto CryptoPP::DSA::PublicKey m_PublicKey; }; - class DSASinger: public Singer + class DSASigner: public Signer { public: - DSASinger (const uint8_t * signingPrivateKey) + DSASigner (const uint8_t * signingPrivateKey) { m_PrivateKey.Initialize (dsap, dsaq, dsag, CryptoPP::Integer (signingPrivateKey, 20)); } @@ -74,6 +74,16 @@ namespace crypto CryptoPP::DSA::PrivateKey m_PrivateKey; }; + inline void CreateDSARandomKeys (CryptoPP::RandomNumberGenerator& rnd, uint8_t * signingPrivateKey, uint8_t * signingPublicKey) + { + CryptoPP::DSA::PrivateKey privateKey; + CryptoPP::DSA::PublicKey publicKey; + privateKey.Initialize (rnd, dsap, dsaq, dsag); + privateKey.MakePublicKey (publicKey); + privateKey.GetPrivateExponent ().Encode (signingPrivateKey, 20); + publicKey.GetPublicElement ().Encode (signingPublicKey, 128); + } + class ECDSAP256Verifier: public Verifier { public: @@ -99,11 +109,11 @@ namespace crypto CryptoPP::ECDSA::PublicKey m_PublicKey; }; - class ECDSAP256Singer: public Singer + class ECDSAP256Signer: public Signer { public: - ECDSAP256Singer (const uint8_t * signingPrivateKey) + ECDSAP256Signer (const uint8_t * signingPrivateKey) { m_PrivateKey.Initialize (CryptoPP::ASN1::secp256r1(), CryptoPP::Integer (signingPrivateKey, 32)); } @@ -118,6 +128,18 @@ namespace crypto CryptoPP::ECDSA::PrivateKey m_PrivateKey; }; + + inline void CreateECDSAP256RandomKeys (CryptoPP::RandomNumberGenerator& rnd, uint8_t * signingPrivateKey, uint8_t * signingPublicKey) + { + CryptoPP::ECDSA::PrivateKey privateKey; + CryptoPP::ECDSA::PublicKey publicKey; + privateKey.Initialize (rnd, CryptoPP::ASN1::secp256r1()); + privateKey.MakePublicKey (publicKey); + privateKey.GetPrivateExponent ().Encode (signingPrivateKey, 32); + auto q = publicKey.GetPublicElement (); + q.x.Encode (signingPublicKey, 32); + q.y.Encode (signingPublicKey + 32, 32); + } } }