sign.c (621B)
1 /* (Modified by Tor to generate detached signatures.) */ 2 #include <string.h> 3 #include "crypto_sign.h" 4 #include "crypto_hash_sha512.h" 5 #include "ge.h" 6 #include "sc.h" 7 8 int crypto_sign( 9 unsigned char *sig, 10 const unsigned char *m, size_t mlen, 11 const unsigned char *sk,const unsigned char *pk 12 ) 13 { 14 unsigned char nonce[64]; 15 unsigned char hram[64]; 16 ge_p3 R; 17 18 crypto_hash_sha512_2(nonce, sk+32, 32, m, mlen); 19 20 sc_reduce(nonce); 21 ge_scalarmult_base(&R,nonce); 22 ge_p3_tobytes(sig,&R); 23 24 crypto_hash_sha512_3(hram, sig, 32, pk, 32, m, mlen); 25 sc_reduce(hram); 26 sc_muladd(sig + 32,hram,sk,nonce); 27 28 return 0; 29 }