Add crypto_sign_ed25519_sk_to_seed() and crypto_sign_ed25519_sk_to_pk()

This commit is contained in:
Frank Denis
2014-08-15 13:52:08 -07:00
parent d3403d1e01
commit 0e23192159
3 changed files with 38 additions and 0 deletions
@@ -1,3 +1,6 @@
#include <string.h>
#include "crypto_sign_ed25519.h"
size_t
@@ -19,3 +22,18 @@ size_t
crypto_sign_ed25519_secretkeybytes(void) {
return crypto_sign_ed25519_SECRETKEYBYTES;
}
int
crypto_sign_ed25519_sk_to_seed(unsigned char *seed, const unsigned char *sk)
{
memmove(seed, sk, crypto_sign_ed25519_SEEDBYTES);
return 0;
}
int
crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk)
{
memmove(pk, sk + crypto_sign_ed25519_SEEDBYTES,
crypto_sign_ed25519_PUBLICKEYBYTES);
return 0;
}
@@ -64,6 +64,14 @@ int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk,
SODIUM_EXPORT
int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk,
const unsigned char *ed25519_sk);
SODIUM_EXPORT
int crypto_sign_ed25519_sk_to_seed(unsigned char *seed,
const unsigned char *sk);
SODIUM_EXPORT
int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk);
#ifdef __cplusplus
}
#endif
+12
View File
@@ -1052,6 +1052,8 @@ static TestData test_data[] = {
int main(void)
{
unsigned char extracted_seed[crypto_sign_ed25519_SEEDBYTES];
unsigned char extracted_pk[crypto_sign_ed25519_PUBLICKEYBYTES];
unsigned char sig[crypto_sign_BYTES];
unsigned char sm[1024 + crypto_sign_BYTES];
unsigned char m[1024];
@@ -1127,6 +1129,16 @@ int main(void)
printf("crypto_sign_seed_keypair() failure\n");
return -1;
}
crypto_sign_ed25519_sk_to_seed(extracted_seed, sk);
if (memcmp(extracted_seed, keypair_seed,
crypto_sign_ed25519_SEEDBYTES) != 0) {
printf("crypto_sign_ed25519_sk_to_seed() failure\n");
}
crypto_sign_ed25519_sk_to_pk(extracted_pk, sk);
if (memcmp(extracted_pk, pk,
crypto_sign_ed25519_PUBLICKEYBYTES) != 0) {
printf("crypto_sign_ed25519_sk_to_pk() failure\n");
}
sodium_bin2hex(pk_hex, sizeof pk_hex, pk, sizeof pk);
sodium_bin2hex(sk_hex, sizeof sk_hex, sk, sizeof sk);