From ef36bb85c10f3c39cb935dce066061e682e77ec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20F=C3=A6r=C3=B8y?= Date: Sat, 21 Feb 2015 23:08:07 +0100 Subject: [PATCH] Add curve25519_public_key/1. --- src/enacl.erl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/enacl.erl b/src/enacl.erl index 8fe12c3..4e3e1f8 100644 --- a/src/enacl.erl +++ b/src/enacl.erl @@ -70,6 +70,7 @@ %% Curve25519 -export([ curve25519_keypair/0, + curve25519_public_key/1, curve25519_shared/2 ]). @@ -185,9 +186,15 @@ verify_32(_, _) -> error(badarg). curve25519_keypair() -> <> = randombytes(32), SK = <<(B0 band 248), B1/binary, (64 bor (B2 band 127))>>, - PK = enacl_nif:crypto_curve25519_scalarmult(SK, <<9, 0:248>>), + PK = curve25519_public_key(SK), #{ public => PK, secret => SK }. +%% @doc curve25519_public_key/1 creates a public key from a given SecretKey. +%% @end +-spec curve25519_public_key(SecretKey :: binary()) -> binary(). +curve25519_public_key(SecretKey) -> + enacl_nif:crypto_curve25519_scalarmult(SecretKey, <<9, 0:248>>). + %% @doc curve25519_shared/2 creates a new shared secret from a given SecretKey and PublicKey. %% @end. -spec curve25519_shared(SecretKey :: binary(), PublicKey :: binary()) -> binary().