mirror of
https://github.com/jedisct1/libsodium.git
synced 2026-08-28 20:57:13 +09:00
Add crypto_sign_ed25519_sk_to_seed() and crypto_sign_ed25519_sk_to_pk()
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user