genkeys.c 962 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include <openssl/rand.h>
  2. #include <stdio.h>
  3. #include "ptwist.h"
  4. int main(int argc, char **argv)
  5. {
  6. byte privkey[PTWIST_BYTES];
  7. byte maingen[PTWIST_BYTES];
  8. byte twistgen[PTWIST_BYTES];
  9. byte mainpub[PTWIST_BYTES];
  10. byte twistpub[PTWIST_BYTES];
  11. FILE *fp;
  12. RAND_seed("12345678901234567890", 20);
  13. /* Pick a random private key */
  14. RAND_bytes(privkey, PTWIST_BYTES);
  15. /* Load the generators of the main and twist curves */
  16. memset(maingen, 0, PTWIST_BYTES);
  17. maingen[0] = 2;
  18. memset(twistgen, 0, PTWIST_BYTES);
  19. /* Create the pubkeys */
  20. ptwist_pointmul(mainpub, maingen, privkey);
  21. ptwist_pointmul(twistpub, twistgen, privkey);
  22. /* Save the privkey and pubkeys */
  23. fp = fopen("privkey", "wb");
  24. fwrite(privkey, PTWIST_BYTES, 1, fp);
  25. fclose(fp);
  26. fp = fopen("pubkey", "wb");
  27. fwrite(mainpub, PTWIST_BYTES, 1, fp);
  28. fwrite(twistpub, PTWIST_BYTES, 1, fp);
  29. fclose(fp);
  30. return 0;
  31. }