From be41f72e0ee37c240fb64bc05c83d726913709eb Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sun, 3 Aug 2014 20:10:38 -0700 Subject: [PATCH] Bypass gcc optimization --- src/libsodium/crypto_sign/ed25519/ref10/open.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/libsodium/crypto_sign/ed25519/ref10/open.c b/src/libsodium/crypto_sign/ed25519/ref10/open.c index 36eb0844..488333e9 100644 --- a/src/libsodium/crypto_sign/ed25519/ref10/open.c +++ b/src/libsodium/crypto_sign/ed25519/ref10/open.c @@ -43,16 +43,8 @@ crypto_sign_verify_detached(const unsigned char *sig, const unsigned char *m, ge_double_scalarmult_vartime(&R, h, &A, sig + 32); ge_tobytes(rcheck, &R); - if (crypto_verify_32(rcheck, sig) != 0) { - return -1; - } - if (sig == rcheck) { - return -1; - } - if (sodium_memcmp(sig, rcheck, 32) != 0) { - return -1; - } - return 0; + return crypto_verify_32(rcheck, sig) | (-(rcheck - sig == 0)) | + sodium_memcmp(sig, rcheck, 32); } int