From 8ba1130ee3ed8e8ba848ed98ff662ee8df457c29 Mon Sep 17 00:00:00 2001 From: Justin Carter Date: Tue, 20 Jun 2017 16:54:36 +0200 Subject: [PATCH] Client: derive the public key from the secret key when adding to wallet That way we do not need to require the public key be added before hand making the workflow nicer. --- src/client/client_keys.ml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/client/client_keys.ml b/src/client/client_keys.ml index 6f5b7114c..805cefa15 100644 --- a/src/client/client_keys.ml +++ b/src/client/client_keys.ml @@ -127,9 +127,11 @@ let commands () = (fun name sk cctxt -> Public_key.find_opt cctxt name >>=? function | None -> - failwith - "no public key named '%s', add it before adding the secret key" - name + let pk = Sodium.Sign.secret_key_to_public_key sk in + Public_key_hash.add cctxt + name (Ed25519.Public_key.hash pk) >>=? fun () -> + Public_key.add cctxt name pk >>=? fun () -> + Secret_key.add cctxt name sk | Some pk -> fail_unless (check_keys_consistency pk sk || cctxt.config.force)