aboutsummaryrefslogtreecommitdiff
path: root/regress/misc/fuzz-harness/mkcorpus_sntrup761.c
diff options
context:
space:
mode:
Diffstat (limited to 'regress/misc/fuzz-harness/mkcorpus_sntrup761.c')
-rw-r--r--regress/misc/fuzz-harness/mkcorpus_sntrup761.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/regress/misc/fuzz-harness/mkcorpus_sntrup761.c b/regress/misc/fuzz-harness/mkcorpus_sntrup761.c
new file mode 100644
index 000000000000..86a8e02aa997
--- /dev/null
+++ b/regress/misc/fuzz-harness/mkcorpus_sntrup761.c
@@ -0,0 +1,82 @@
+// Makes basic seed corpora for other fuzzers
+//
+// Will write to ./sntrup761_pubkey_corpus (for sntrup761_enc_fuzz) and
+// to ./sntrup761_ciphertext_corpus (for sntrup761_dec_fuzz)
+
+#include <sys/stat.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <err.h>
+#include <errno.h>
+
+#include "crypto_api.h"
+#include "hash.c"
+
+#undef randombytes
+#define USE_SNTRUP761X25519 1
+void randombytes(unsigned char *ptr, size_t l);
+volatile crypto_int16 crypto_int16_optblocker = 0;
+volatile crypto_int32 crypto_int32_optblocker = 0;
+volatile crypto_int64 crypto_int64_optblocker = 0;
+#include "sntrup761.c"
+
+#define NSEEDS 1000
+
+static int real_random;
+
+void
+randombytes(unsigned char *ptr, size_t l)
+{
+ if (real_random)
+ arc4random_buf(ptr, l);
+ else
+ memset(ptr, 0, l);
+}
+
+void write_blob(const char *path, int n, const char *suffix,
+ const void *ptr, size_t l)
+{
+ char name[256];
+ FILE *f;
+
+ snprintf(name, sizeof(name), "%s/%06d.%s", path, n, suffix);
+ if ((f = fopen(name, "wb+")) == NULL)
+ err(1, "fopen %s", name);
+ if (fwrite(ptr, l, 1, f) != 1)
+ err(1, "write %s", name);
+ fclose(f);
+}
+
+int main(void)
+{
+ int i;
+ unsigned char pk[crypto_kem_sntrup761_PUBLICKEYBYTES];
+ unsigned char sk[crypto_kem_sntrup761_SECRETKEYBYTES];
+ unsigned char ciphertext[crypto_kem_sntrup761_CIPHERTEXTBYTES];
+ unsigned char secret[crypto_kem_sntrup761_BYTES];
+
+ if (mkdir("sntrup761_pubkey_corpus", 0777) != 0 && errno != EEXIST)
+ err(1, "mkdir sntrup761_pubkey_corpus");
+ if (mkdir("sntrup761_ciphertext_corpus", 0777) != 0 && errno != EEXIST)
+ err(1, "mkdir sntrup761_ciphertext_corpus");
+
+ fprintf(stderr, "making: ");
+ for (i = 0; i < NSEEDS; i++) {
+ real_random = i != 0;
+ if (crypto_kem_sntrup761_keypair(pk, sk) != 0)
+ errx(1, "crypto_kem_sntrup761_keypair failed");
+ write_blob("sntrup761_pubkey_corpus", i, "pk", pk, sizeof(pk));
+ if (crypto_kem_sntrup761_enc(ciphertext, secret, pk) != 0)
+ errx(1, "crypto_kem_sntrup761_enc failed");
+ write_blob("sntrup761_ciphertext_corpus", i, "ct",
+ ciphertext, sizeof(ciphertext));
+ if (i % 20 == 0)
+ fprintf(stderr, ".");
+ }
+ fprintf(stderr, "\n");
+ return 0;
+}