From ad0a8a5c9dc8e454e5f705e3bc0b1834e21348f8 Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Thu, 16 Nov 2017 11:13:53 +0000 Subject: [PATCH] Add the X448() and X448_public_from_private() functions Reviewed-by: Bernd Edlinger (Merged from https://github.com/openssl/openssl/pull/5105) --- crypto/ec/curve448/curve448_lcl.h | 7 +++++++ crypto/ec/curve448/decaf.c | 14 ++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 crypto/ec/curve448/curve448_lcl.h diff --git a/crypto/ec/curve448/curve448_lcl.h b/crypto/ec/curve448/curve448_lcl.h new file mode 100644 index 0000000000..1761659a50 --- /dev/null +++ b/crypto/ec/curve448/curve448_lcl.h @@ -0,0 +1,7 @@ +#include "curve448utils.h" + +int X448(uint8_t out_shared_key[56], const uint8_t private_key[56], + const uint8_t peer_public_value[56]) DECAF_API_VIS; + +void X448_public_from_private(uint8_t out_public_value[56], + const uint8_t private_key[56]) DECAF_API_VIS; diff --git a/crypto/ec/curve448/decaf.c b/crypto/ec/curve448/decaf.c index b7bf156089..d4a093a25b 100644 --- a/crypto/ec/curve448/decaf.c +++ b/crypto/ec/curve448/decaf.c @@ -18,6 +18,7 @@ #include "point_448.h" #include "ed448.h" +#include "curve448_lcl.h" /* Template stuff */ #define API_NS(_id) decaf_448_##_id @@ -1590,3 +1591,16 @@ void API_NS(precomputed_destroy) ( ) { OPENSSL_cleanse(pre, API_NS(sizeof_precomputed_s)); } + +int X448(uint8_t out_shared_key[56], const uint8_t private_key[56], + const uint8_t peer_public_value[56]) +{ + return decaf_x448(out_shared_key, peer_public_value, private_key) + == DECAF_SUCCESS; +} + +void X448_public_from_private(uint8_t out_public_value[56], + const uint8_t private_key[56]) +{ + decaf_x448_derive_public_key(out_public_value, private_key); +} -- 2.25.1