From af7cdb1096dd12f0ca06d78f5e5a3f5e9f57b3a8 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 4 Mar 2016 17:08:30 +0100 Subject: BinaryCacheStore: Remove publicKeyFile argument The public key can be derived from the secret key, so there's no need for the user to supply it separately. --- src/libstore/crypto.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/libstore/crypto.cc') diff --git a/src/libstore/crypto.cc b/src/libstore/crypto.cc index c1b57e51d9b4..53e94e1f5997 100644 --- a/src/libstore/crypto.cc +++ b/src/libstore/crypto.cc @@ -55,6 +55,17 @@ std::string SecretKey::signDetached(const std::string & data) const #endif } +PublicKey SecretKey::toPublicKey() const +{ +#if HAVE_SODIUM + unsigned char pk[crypto_sign_PUBLICKEYBYTES]; + crypto_sign_ed25519_sk_to_pk(pk, (unsigned char *) key.data()); + return PublicKey(name, std::string((char *) pk, crypto_sign_PUBLICKEYBYTES)); +#else + noSodium(); +#endif +} + PublicKey::PublicKey(const string & s) : Key(s) { -- cgit 1.4.1