Browse Source

move setting of sig-verification result to crypto_sign_open()

Steffen Jaeckel 6 years ago
parent
commit
e0a9114129
3 changed files with 7 additions and 7 deletions
  1. 1 0
      src/headers/tomcrypt_private.h
  2. 4 2
      src/pk/ec25519/tweetnacl.c
  3. 2 5
      src/pk/ed25519/ed25519_verify.c

+ 1 - 0
src/headers/tomcrypt_private.h

@@ -307,6 +307,7 @@ int crypto_sign(
   const unsigned char *m,unsigned long long mlen,
   const unsigned char *m,unsigned long long mlen,
   const unsigned char *sk, const unsigned char *pk);
   const unsigned char *sk, const unsigned char *pk);
 int crypto_sign_open(
 int crypto_sign_open(
+  int *stat,
   unsigned char *m,unsigned long long *mlen,
   unsigned char *m,unsigned long long *mlen,
   const unsigned char *sm,unsigned long long smlen,
   const unsigned char *sm,unsigned long long smlen,
   const unsigned char *pk);
   const unsigned char *pk);

+ 4 - 2
src/pk/ec25519/tweetnacl.c

@@ -450,12 +450,13 @@ static int unpackneg(gf r[4],const u8 p[32])
   return 0;
   return 0;
 }
 }
 
 
-int crypto_sign_open(u8 *m,u64 *mlen,const u8 *sm,u64 n,const u8 *pk)
+int crypto_sign_open(int *stat, u8 *m,u64 *mlen,const u8 *sm,u64 n,const u8 *pk)
 {
 {
   u64 i;
   u64 i;
   u8 s[32],t[32],h[64];
   u8 s[32],t[32],h[64];
   gf p[4],q[4];
   gf p[4],q[4];
 
 
+  *stat = 0;
   if (*mlen < n) return CRYPT_BUFFER_OVERFLOW;
   if (*mlen < n) return CRYPT_BUFFER_OVERFLOW;
   *mlen = -1;
   *mlen = -1;
   if (n < 64) return CRYPT_INVALID_ARG;
   if (n < 64) return CRYPT_INVALID_ARG;
@@ -477,9 +478,10 @@ int crypto_sign_open(u8 *m,u64 *mlen,const u8 *sm,u64 n,const u8 *pk)
   if (crypto_verify_32(sm, t)) {
   if (crypto_verify_32(sm, t)) {
     FOR(i,n) m[i] = 0;
     FOR(i,n) m[i] = 0;
     zeromem(m, n);
     zeromem(m, n);
-    return CRYPT_INVALID_PACKET;
+    return CRYPT_OK;
   }
   }
 
 
+  *stat = 1;
   XMEMMOVE(m,m + 64,n);
   XMEMMOVE(m,m + 64,n);
   *mlen = n;
   *mlen = n;
   return CRYPT_OK;
   return CRYPT_OK;

+ 2 - 5
src/pk/ed25519/ed25519_verify.c

@@ -51,7 +51,8 @@ int ed25519_verify(const  unsigned char *msg, unsigned long msglen,
    XMEMCPY(m, sig, siglen);
    XMEMCPY(m, sig, siglen);
    XMEMCPY(m + siglen, msg, msglen);
    XMEMCPY(m + siglen, msg, msglen);
 
 
-   err = crypto_sign_open(m, &mlen,
+   err = crypto_sign_open(stat,
+                          m, &mlen,
                           m, mlen,
                           m, mlen,
                           public_key->pub);
                           public_key->pub);
 
 
@@ -60,10 +61,6 @@ int ed25519_verify(const  unsigned char *msg, unsigned long msglen,
 #endif
 #endif
    XFREE(m);
    XFREE(m);
 
 
-   if (err == CRYPT_OK) {
-      *stat = 1;
-   }
-
    return err;
    return err;
 }
 }