gestumblinde

Gestumblinde - reference implementation of SLH-DSA
git clone git://www.tkruger.se/gestumblinde.git
Log | Files | Refs | README

keygen.c (1096B)


      1 #include "slh.h"
      2 #include <stdio.h>
      3 
      4 static void print_usage(char *command) {
      5   printf("usage: %s <pk_file> <sk_file>\n\n", command);
      6   printf("    pk_file:   public key output filename\n");
      7   printf("    sk_file:   secret key output filename\n");
      8 }
      9 
     10 int main(int argc, char *argv[]) {
     11   if (argc != 3) {
     12     print_usage(argv[0]);
     13     return 1;
     14   }
     15 
     16   uint8_t pk[2 * ENN];
     17   uint8_t sk[4 * ENN];
     18   slh_keygen(sk, pk);
     19 
     20   FILE *pk_file = fopen(argv[1], "w");
     21   if (pk_file == NULL) {
     22     fprintf(stderr, "Error! Could not open file %s\n", argv[1]);
     23     return 1;
     24   }
     25 
     26   FILE *sk_file = fopen(argv[2], "w");
     27   if (sk_file == NULL) {
     28     fprintf(stderr, "Error! Could not open file %s\n", argv[2]);
     29     return 1;
     30   }
     31 
     32   size_t r;
     33   r = fwrite(pk, sizeof(*pk), 2 * ENN, pk_file);
     34   if (r < 2 * ENN) {
     35     fprintf(stderr, "Error! Failed to write to file %s\n", argv[1]);
     36     return 1;
     37   }
     38 
     39   r = fwrite(sk, sizeof(*sk), 4 * ENN, sk_file);
     40   if (r < 4 * ENN) {
     41     fprintf(stderr, "Error! Failed to write to file %s\n", argv[2]);
     42     return 1;
     43   }
     44 
     45   fclose(sk_file);
     46   fclose(pk_file);
     47 
     48   return 0;
     49 }