Add ED25519_keypair_from_seed. This function allows callers to unpack an Ed25519 “seed” value, which is a 32 byte value that contains sufficient information to build a public and private key from. Change-Id: Ie5d8212a73e5710306314b4f8a93b707665870fd Reviewed-on: https://boringssl-review.googlesource.com/12040 Reviewed-by: David Benjamin <davidben@google.com> Reviewed-by: Adam Langley <alangley@gmail.com> Commit-Queue: Adam Langley <alangley@gmail.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/include/openssl/curve25519.h b/include/openssl/curve25519.h index 8d73f33..19f9daa 100644 --- a/include/openssl/curve25519.h +++ b/include/openssl/curve25519.h
@@ -85,6 +85,15 @@ const uint8_t signature[64], const uint8_t public_key[32]); +/* ED25519_keypair_from_seed calculates a public and private key from an + * Ed25519 “seed”. Seed values are not exposed by this API (although they + * happen to be the first 32 bytes of a private key) so this function is for + * interoperating with systems that may store just a seed instead of a full + * private key. */ +OPENSSL_EXPORT void ED25519_keypair_from_seed(uint8_t out_public_key[32], + uint8_t out_private_key[64], + const uint8_t seed[32]); + /* SPAKE2. *