#include "api.h" #include "crypto_hash_sha512.h" #include "randombytes.h" #include "crypto_verify_32.h" #include "ge25519.h" int crypto_sign_keypair( unsigned char *pk, unsigned char *sk ) { sc25519 scsk; ge25519 gepk; randombytes(sk, 32); crypto_hash_sha512(sk, sk, 32); sk[0] &= 248; sk[31] &= 127; sk[31] |= 64; sc25519_from32bytes(&scsk,sk); ge25519_scalarmult_base(&gepk, &scsk); ge25519_pack(pk, &gepk); return 0; } int crypto_sign( unsigned char *sm,unsigned long long *smlen, const unsigned char *m,unsigned long long mlen, const unsigned char *sk ) { sc25519 sck, scs, scsk; ge25519 ger; unsigned char r[32]; unsigned char s[32]; unsigned long long i; unsigned char hmg[crypto_hash_sha512_BYTES]; unsigned char hmr[crypto_hash_sha512_BYTES]; *smlen = mlen+64; for(i=0;i