2 #define TEST_NAME "ed25519_convert"
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 };
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];
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");