summaryrefslogtreecommitdiff
path: root/test/default/ed25519_convert.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/default/ed25519_convert.c')
-rw-r--r--test/default/ed25519_convert.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/default/ed25519_convert.c b/test/default/ed25519_convert.c
new file mode 100644
index 0000000..02c0641
--- /dev/null
+++ b/test/default/ed25519_convert.c
@@ -0,0 +1,44 @@
+
+#define TEST_NAME "ed25519_convert"
+#include "cmptest.h"
+
+static const unsigned char keypair_seed[crypto_sign_ed25519_SEEDBYTES]
+ = { 0x42, 0x11, 0x51, 0xa4, 0x59, 0xfa, 0xea, 0xde, 0x3d, 0x24, 0x71,
+ 0x15, 0xf9, 0x4a, 0xed, 0xae, 0x42, 0x31, 0x81, 0x24, 0x09, 0x5a,
+ 0xfa, 0xbe, 0x4d, 0x14, 0x51, 0xa5, 0x59, 0xfa, 0xed, 0xee };
+
+int main(void)
+{
+ unsigned char ed25519_pk[crypto_sign_ed25519_PUBLICKEYBYTES];
+ unsigned char ed25519_skpk[crypto_sign_ed25519_SECRETKEYBYTES];
+ unsigned char curve25519_pk[crypto_scalarmult_curve25519_BYTES];
+ unsigned char curve25519_pk2[crypto_scalarmult_curve25519_BYTES];
+ unsigned char curve25519_sk[crypto_scalarmult_curve25519_BYTES];
+ char curve25519_pk_hex[crypto_scalarmult_curve25519_BYTES * 2 + 1];
+ char curve25519_sk_hex[crypto_scalarmult_curve25519_BYTES * 2 + 1];
+ unsigned int i;
+
+ crypto_sign_ed25519_seed_keypair(ed25519_pk, ed25519_skpk, keypair_seed);
+ crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk);
+ crypto_sign_ed25519_sk_to_curve25519(curve25519_sk, ed25519_skpk);
+ sodium_bin2hex(curve25519_pk_hex, sizeof curve25519_pk_hex, curve25519_pk,
+ sizeof curve25519_pk);
+ sodium_bin2hex(curve25519_sk_hex, sizeof curve25519_sk_hex, curve25519_sk,
+ sizeof curve25519_sk);
+
+ printf("curve25519 pk: [%s]\n", curve25519_pk_hex);
+ printf("curve25519 sk: [%s]\n", curve25519_sk_hex);
+
+ for (i = 0U; i < 500U; i++) {
+ crypto_sign_ed25519_keypair(ed25519_pk, ed25519_skpk);
+ crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk);
+ crypto_sign_ed25519_sk_to_curve25519(curve25519_sk, ed25519_skpk);
+ crypto_scalarmult_curve25519_base(curve25519_pk2, curve25519_sk);
+ if (memcmp(curve25519_pk, curve25519_pk2, sizeof curve25519_pk) != 0) {
+ printf("conversion failed\n");
+ }
+ }
+ printf("ok\n");
+
+ return 0;
+}