diff --git a/src/libsodium/crypto_sign/ed25519/ref10/open.c b/src/libsodium/crypto_sign/ed25519/ref10/open.c index 220665d3..36eb0844 100644 --- a/src/libsodium/crypto_sign/ed25519/ref10/open.c +++ b/src/libsodium/crypto_sign/ed25519/ref10/open.c @@ -7,6 +7,7 @@ #include "crypto_verify_32.h" #include "ge.h" #include "sc.h" +#include "utils.h" int crypto_sign_verify_detached(const unsigned char *sig, const unsigned char *m, @@ -45,6 +46,12 @@ crypto_sign_verify_detached(const unsigned char *sig, const unsigned char *m, 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; }