summaryrefslogtreecommitdiff
path: root/src/libsodium/crypto_sign/ed25519/ref10/open.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsodium/crypto_sign/ed25519/ref10/open.c')
-rw-r--r--src/libsodium/crypto_sign/ed25519/ref10/open.c12
1 files 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 36eb084..488333e 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