--- /dev/null
+#include <sodium.h>
+#include "utils.h"
+
+int main(void)
+{
+ SODIUM_INIT;
+
+ FOR (size, 0, 50) {
+ RANDOM_INPUT(key , 32);
+ RANDOM_INPUT(in , 16);
+ u8 out[32];
+
+ crypto_core_hchacha20(out, in, key, 0);
+
+ print_vector(key , 32);
+ print_vector(in , 16);
+ print_vector(out , 32);
+ printf("\n");
+ }
+
+ return 0;
+}
.PHONY: all clean
-VEC = chacha20.vec xchacha20.vec aead_ietf.vec poly1305.vec \
- blake2b.vec sha512.vec argon2i.vec \
- edDSA.vec edDSA_pk.vec ed_25519.vec ed_25519_check.vec \
+VEC = chacha20.vec hchacha20.vec xchacha20.vec aead_ietf.vec poly1305.vec \
+ blake2b.vec sha512.vec argon2i.vec \
+ edDSA.vec edDSA_pk.vec ed_25519.vec ed_25519_check.vec \
x25519.vec x25519_pk.vec
VEC2 = $(patsubst %.vec, %.all.vec, $(VEC)) key_exchange.all.vec
HEADERS = $(patsubst %.all.vec, %.h.vec, $(VEC2))
poly1305.all.vec : poly1305.vec ../vectors/poly1305
x25519.all.vec : x25519.vec ../vectors/x25519
x25519_pk.all.vec : x25519_pk.vec
+hchacha20.all.vec : hchacha20.vec
xchacha20.all.vec : xchacha20.vec
aead_ietf.all.vec : aead_ietf.vec
blake2b.all.vec : blake2b.vec
crypto_chacha20_encrypt(&ctx, out->buf, plain->buf, plain->size);
}
+static void hchacha20(const vector in[], vector *out)
+{
+ const vector *key = in;
+ const vector *nonce = in + 1;
+ crypto_chacha20_H(out->buf, key->buf, nonce->buf);
+}
+
static void xchacha20(const vector in[], vector *out)
{
const vector *key = in;
printf("\nTest against vectors");
printf("\n--------------------\n");
status |= TEST(chacha20 , 4);
+ status |= TEST(hchacha20 , 2);
status |= TEST(xchacha20 , 4);
status |= TEST(poly1305 , 2);
status |= TEST(aead_ietf , 4);