keypair.c 415 B

1234567891011121314151617181920212223
  1. #include <string.h>
  2. #include "randombytes.h"
  3. #include "crypto_sign.h"
  4. #include "crypto_hash_sha512.h"
  5. #include "ge.h"
  6. int crypto_sign_keypair(unsigned char *pk,unsigned char *sk)
  7. {
  8. unsigned char az[64];
  9. ge_p3 A;
  10. randombytes(sk,32);
  11. crypto_hash_sha512(az,sk,32);
  12. az[0] &= 248;
  13. az[31] &= 63;
  14. az[31] |= 64;
  15. ge_scalarmult_base(&A,az);
  16. ge_p3_tobytes(pk,&A);
  17. memmove(sk + 32,pk,32);
  18. return 0;
  19. }