--- /dev/null
+#include "utils.h"
+#include "ed25519.h"
+
+void test(u8 sk[32])
+{
+ u8 pk[32];
+ ed25519_publickey(sk, pk);
+
+ print_vector(sk, 32);
+ print_vector(pk, 32);
+}
+
+int main(void)
+{
+ // random secret keys
+ FOR (msg_size, 0, 256) {
+ RANDOM_INPUT(sk, 32);
+ test(sk);
+ }
+ // zero secret key
+ u8 sk[32] = {0};
+ test(sk);
+
+ return 0;
+}
.PHONY: all clean
-VEC = chacha20.vec xchacha20.vec aead_ietf.vec poly1305.vec blake2b.vec \
- sha512.vec argon2i.vec edDSA.vec ed_25519.vec x25519.vec
+VEC = chacha20.vec xchacha20.vec aead_ietf.vec poly1305.vec \
+ blake2b.vec sha512.vec argon2i.vec \
+ edDSA.vec edDSA_pk.vec ed_25519.vec \
+ x25519.vec x25519_pk.vec
VEC2 = $(patsubst %.vec, %.all.vec, $(VEC)) key_exchange.all.vec
HEADERS = $(patsubst %.all.vec, %.h.vec, $(VEC2))
VECTORS = ../vectors.h
chacha20.all.vec : chacha20.vec ../vectors/chacha20
poly1305.all.vec : poly1305.vec ../vectors/poly1305
x25519.all.vec : x25519.vec ../vectors/x25519
+x25519_pk.all.vec : x25519_pk.vec
xchacha20.all.vec : xchacha20.vec
aead_ietf.all.vec : aead_ietf.vec
blake2b.all.vec : blake2b.vec
sha512.all.vec : sha512.vec
argon2i.all.vec : argon2i.vec ../vectors/argon2i
edDSA.all.vec : edDSA.vec
+edDSA_pk.all.vec : edDSA_pk.vec
ed_25519.all.vec : ed_25519.vec
key_exchange.all.vec: ../vectors/key_exchange
$(VEC2):
--- /dev/null
+#include <sodium.h>
+#include "utils.h"
+
+void test(u8 sk[32])
+{
+ u8 pk[32];
+ crypto_scalarmult_base(pk, sk);
+
+ print_vector(sk, 32);
+ print_vector(pk, 32);
+ printf("\n");
+}
+
+int main(void)
+{
+ SODIUM_INIT;
+
+ // random secret keys
+ FOR (i, 0, 50) {
+ RANDOM_INPUT(sk, 32);
+ test(sk);
+ }
+ // zero secret key
+ u8 sk[32] = {0};
+ test(sk);
+
+ return 0;
+}
if (!not_zero && !report) printf("FAILURE: x25519 failed to report zero\n");
}
+static void x25519_pk(const vector in[], vector *out)
+{
+ crypto_x25519_public_key(out->buf, in->buf);
+}
+
static void key_exchange(const vector in[], vector *out)
{
const vector *secret_key = in;
}
}
+static void edDSA_pk(const vector in[], vector *out)
+{
+ crypto_sign_public_key(out->buf, in->buf);
+}
+
#ifdef ED25519_SHA512
static void (*ed_25519)(const vector[], vector*) = edDSA;
#endif
status |= TEST(sha512 , 1);
status |= TEST(argon2i , 6);
status |= TEST(x25519 , 2);
+ status |= TEST(x25519_pk , 1);
status |= TEST(key_exchange, 2);
#ifdef ED25519_SHA512
status |= TEST(ed_25519 , 3);
#else
status |= TEST(edDSA , 3);
+ status |= TEST(edDSA_pk , 1);
#endif
status |= test_x25519();