diff options
author | Niels Möller <nisse@lysator.liu.se> | 2015-03-18 19:14:32 +0100 |
---|---|---|
committer | Niels Möller <nisse@lysator.liu.se> | 2015-03-18 19:14:32 +0100 |
commit | 7fdb2fec724c0504a67c8a41da26984132d63d1c (patch) | |
tree | eecc3db1513c201179dc8c0522965cd3bcdac183 | |
parent | db9a75575cdacf0162a67172c0049ffaf2599463 (diff) | |
download | nettle-7fdb2fec724c0504a67c8a41da26984132d63d1c.tar.gz |
New function _eddsa_public_key.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Makefile.in | 2 | ||||
-rw-r--r-- | eddsa-pubkey.c | 56 | ||||
-rw-r--r-- | eddsa.h | 9 |
4 files changed, 71 insertions, 1 deletions
@@ -1,3 +1,8 @@ +2015-03-18 Niels Möller <nisse@diamant.hack.org> + + * eddsa-pubkey.c (_eddsa_public_key, _eddsa_public_key_itch): New + file, new functions. + 2015-03-14 Niels Möller <nisse@diamant.hack.org> * ccm.c (memeql_sec): New function, more side-channel silent than diff --git a/Makefile.in b/Makefile.in index abba3cd9..7362a02d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -179,7 +179,7 @@ hogweed_SOURCES = sexp.c sexp-format.c \ ecc-ecdsa-verify.c ecdsa-verify.c ecdsa-keygen.c \ curve25519-mul-g.c curve25519-mul.c curve25519-eh-to-x.c \ eddsa-compress.c eddsa-decompress.c eddsa-expand.c \ - eddsa-hash.c eddsa-sign.c eddsa-verify.c \ + eddsa-hash.c eddsa-pubkey.c eddsa-sign.c eddsa-verify.c \ ed25519-sha512-sign.c ed25519-sha512-verify.c \ $(OPT_HOGWEED_SOURCES) diff --git a/eddsa-pubkey.c b/eddsa-pubkey.c new file mode 100644 index 00000000..d1546707 --- /dev/null +++ b/eddsa-pubkey.c @@ -0,0 +1,56 @@ +/* eddsa-pubkey.c + + Copyright (C) 2015 Niels Möller + + This file is part of GNU Nettle. + + GNU Nettle is free software: you can redistribute it and/or + modify it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your + option) any later version. + + or both in parallel, as here. + + GNU Nettle is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see http://www.gnu.org/licenses/. +*/ + +#if HAVE_CONFIG_H +# include "config.h" +#endif + +#include "eddsa.h" + +#include "ecc-internal.h" + +mp_size_t +_eddsa_public_key_itch (const struct ecc_curve *ecc) +{ + return 3*ecc->p.size + ecc->mul_g_itch; +} + +void +_eddsa_public_key (const struct ecc_curve *ecc, + const mp_limb_t *k, uint8_t *pub, mp_limb_t *scratch) +{ +#define P scratch +#define scratch_out (scratch + 3*ecc->p.size) + ecc->mul_g (ecc, P, k, scratch_out); + _eddsa_compress (ecc, pub, P, scratch_out); +#undef P +#undef scratch_out +} @@ -57,6 +57,8 @@ extern "C" { #define _eddsa_sign_itch _nettle_eddsa_sign_itch #define _eddsa_verify _nettle_eddsa_verify #define _eddsa_verify_itch _nettle_eddsa_verify_itch +#define _eddsa_public_key_itch _nettle_eddsa_public_key_itch +#define _eddsa_public_key _nettle_eddsa_public_key #define ED25519_KEY_SIZE 32 #define ED25519_SIGNATURE_SIZE 64 @@ -159,6 +161,13 @@ _eddsa_expand_key (const struct ecc_curve *ecc, mp_limb_t *k2, mp_limb_t *scratch); +mp_size_t +_eddsa_public_key_itch (const struct ecc_curve *ecc); + +void +_eddsa_public_key (const struct ecc_curve *ecc, + const mp_limb_t *k, uint8_t *pub, mp_limb_t *scratch); + #ifdef __cplusplus } |