libsodium 1.0.8
[tomato.git] / release / src / router / libsodium / test / default / ed25519_convert.c
blobd8625326ceb91a78dab67218b155abe39b5133c3
2 #define TEST_NAME "ed25519_convert"
3 #include "cmptest.h"
5 static const unsigned char keypair_seed[crypto_sign_ed25519_SEEDBYTES]
6 = { 0x42, 0x11, 0x51, 0xa4, 0x59, 0xfa, 0xea, 0xde, 0x3d, 0x24, 0x71,
7 0x15, 0xf9, 0x4a, 0xed, 0xae, 0x42, 0x31, 0x81, 0x24, 0x09, 0x5a,
8 0xfa, 0xbe, 0x4d, 0x14, 0x51, 0xa5, 0x59, 0xfa, 0xed, 0xee };
10 int main(void)
12 unsigned char ed25519_pk[crypto_sign_ed25519_PUBLICKEYBYTES];
13 unsigned char ed25519_skpk[crypto_sign_ed25519_SECRETKEYBYTES];
14 unsigned char curve25519_pk[crypto_scalarmult_curve25519_BYTES];
15 unsigned char curve25519_pk2[crypto_scalarmult_curve25519_BYTES];
16 unsigned char curve25519_sk[crypto_scalarmult_curve25519_BYTES];
17 char curve25519_pk_hex[crypto_scalarmult_curve25519_BYTES * 2 + 1];
18 char curve25519_sk_hex[crypto_scalarmult_curve25519_BYTES * 2 + 1];
19 unsigned int i;
21 crypto_sign_ed25519_seed_keypair(ed25519_pk, ed25519_skpk, keypair_seed);
22 if (crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk) != 0) {
23 printf("conversion failed\n");
25 crypto_sign_ed25519_sk_to_curve25519(curve25519_sk, ed25519_skpk);
26 sodium_bin2hex(curve25519_pk_hex, sizeof curve25519_pk_hex, curve25519_pk,
27 sizeof curve25519_pk);
28 sodium_bin2hex(curve25519_sk_hex, sizeof curve25519_sk_hex, curve25519_sk,
29 sizeof curve25519_sk);
31 printf("curve25519 pk: [%s]\n", curve25519_pk_hex);
32 printf("curve25519 sk: [%s]\n", curve25519_sk_hex);
34 for (i = 0U; i < 500U; i++) {
35 crypto_sign_ed25519_keypair(ed25519_pk, ed25519_skpk);
36 if (crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk) != 0) {
37 printf("conversion failed\n");
39 crypto_sign_ed25519_sk_to_curve25519(curve25519_sk, ed25519_skpk);
40 crypto_scalarmult_curve25519_base(curve25519_pk2, curve25519_sk);
41 if (memcmp(curve25519_pk, curve25519_pk2, sizeof curve25519_pk) != 0) {
42 printf("conversion failed\n");
45 printf("ok\n");
47 return 0;