diff --git a/core/crypto/EdDSA25519.cpp b/core/crypto/EdDSA25519.cpp index 2a97d88e..3f93b178 100644 --- a/core/crypto/EdDSA25519.cpp +++ b/core/crypto/EdDSA25519.cpp @@ -28,6 +28,11 @@ size_t EDDSA25519Verifier::GetSignatureLen() const return EDDSA25519_SIGNATURE_LENGTH; } +EDDSA25519Signer::EDDSA25519Signer(const uint8_t* signingPrivateKey, const uint8_t* signingPublicKey) +{ + std::memcpy(m_PrivateKey, signingPrivateKey, EDDSA25519_PRIVATE_KEY_LENGTH); + std::memcpy(m_PublicKey, signingPublicKey, EDDSA25519_PUBLIC_KEY_LENGTH); +} EDDSA25519Signer::EDDSA25519Signer(const uint8_t* signingPrivateKey) { diff --git a/core/crypto/EdDSA25519.h b/core/crypto/EdDSA25519.h index 89b2c769..b35b92c0 100644 --- a/core/crypto/EdDSA25519.h +++ b/core/crypto/EdDSA25519.h @@ -29,9 +29,15 @@ class EDDSA25519Signer : public Signer { public: /** - * @todo allow passing the public key too as an optimization + * Construct from a key pair. */ - EDDSA25519Signer(const uint8_t * signingPrivateKey); + EDDSA25519Signer(const uint8_t* signingPrivateKey, const uint8_t* signingPublicKey); + + /** + * Construct from a private key. + * The corresponding public key will be computed from it. + */ + EDDSA25519Signer(const uint8_t* signingPrivateKey); /** * @todo do not pass random number generator, EdDSA does not require a random