From 4241694252c5d05391ca441ecffdbb1c4054b1fe Mon Sep 17 00:00:00 2001 From: "F. Duncanh" Date: Thu, 23 Nov 2023 21:30:46 -0500 Subject: [PATCH] facility fopr getting ED25519 private key for srp --- lib/crypto.c | 6 +++++- lib/crypto.h | 1 + lib/pairing.c | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/crypto.c b/lib/crypto.c index 09344ad..b63d582 100644 --- a/lib/crypto.c +++ b/lib/crypto.c @@ -350,8 +350,12 @@ struct ed25519_key_s { unsigned char ed_secret[ED25519_KEY_SIZE]; }; -int extract_evp_private_key(unsigned char *privkey, int keylen, EVP_PKEY *key) { +const unsigned char* ed25519_secret_key(const ed25519_key_t *key) { + assert(key); + return (const unsigned char *) key->ed_secret; +} +int extract_evp_private_key(unsigned char *privkey, int keylen, EVP_PKEY *key) { int count = 0; unsigned int val; unsigned int part1 = 0; diff --git a/lib/crypto.h b/lib/crypto.h index d00b3dd..c0cf221 100644 --- a/lib/crypto.h +++ b/lib/crypto.h @@ -82,6 +82,7 @@ int gcm_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned char *pl typedef struct ed25519_key_s ed25519_key_t; +const unsigned char* ed25519_secret_key(const ed25519_key_t *key); ed25519_key_t *ed25519_key_generate(void); ed25519_key_t *ed25519_key_from_raw(const unsigned char data[ED25519_KEY_SIZE]); void ed25519_key_get_raw(unsigned char data[ED25519_KEY_SIZE], const ed25519_key_t *key); diff --git a/lib/pairing.c b/lib/pairing.c index 848a7bc..1448f0f 100644 --- a/lib/pairing.c +++ b/lib/pairing.c @@ -90,6 +90,11 @@ pairing_get_public_key(pairing_t *pairing, unsigned char public_key[ED25519_KEY_ ed25519_key_get_raw(public_key, pairing->ed); } +const unsigned char *srp_private_key(pairing_t *pairing) { + assert(pairing); + return ed25519_secret_key(pairing->ed); +} + int pairing_get_ecdh_secret_key(pairing_session_t *session, unsigned char ecdh_secret[X25519_KEY_SIZE]) {