diff options
Diffstat (limited to 'libs/libaxolotl/src/curve25519/ed25519/open.c')
-rw-r--r-- | libs/libaxolotl/src/curve25519/ed25519/open.c | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/libs/libaxolotl/src/curve25519/ed25519/open.c b/libs/libaxolotl/src/curve25519/ed25519/open.c deleted file mode 100644 index 1ec4cd2bfd..0000000000 --- a/libs/libaxolotl/src/curve25519/ed25519/open.c +++ /dev/null @@ -1,48 +0,0 @@ -#include <string.h> -#include "crypto_sign.h" -#include "crypto_hash_sha512.h" -#include "crypto_verify_32.h" -#include "ge.h" -#include "sc.h" - -int crypto_sign_open( - unsigned char *m,unsigned long long *mlen, - const unsigned char *sm,unsigned long long smlen, - const unsigned char *pk -) -{ - unsigned char pkcopy[32]; - unsigned char rcopy[32]; - unsigned char scopy[32]; - unsigned char h[64]; - unsigned char rcheck[32]; - ge_p3 A; - ge_p2 R; - - if (smlen < 64) goto badsig; - if (sm[63] & 224) goto badsig; - if (ge_frombytes_negate_vartime(&A,pk) != 0) goto badsig; - - memmove(pkcopy,pk,32); - memmove(rcopy,sm,32); - memmove(scopy,sm + 32,32); - - memmove(m,sm,smlen); - memmove(m + 32,pkcopy,32); - crypto_hash_sha512(h,m,smlen); - sc_reduce(h); - - ge_double_scalarmult_vartime(&R,h,&A,scopy); - ge_tobytes(rcheck,&R); - if (crypto_verify_32(rcheck,rcopy) == 0) { - memmove(m,m + 64,smlen - 64); - memset(m + smlen - 64,0,64); - *mlen = smlen - 64; - return 0; - } - -badsig: - *mlen = -1; - memset(m,0,smlen); - return -1; -} |