Oops, forgot message length
authorMark Spencer <markster@digium.com>
Sat, 14 Aug 2004 21:28:30 +0000 (21:28 +0000)
committerMark Spencer <markster@digium.com>
Sat, 14 Aug 2004 21:28:30 +0000 (21:28 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3608 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/crypto.h
res/res_crypto.c

index d222e46..227957a 100755 (executable)
@@ -62,7 +62,7 @@ extern int ast_check_signature(struct ast_key *key, char *msg, char *sig);
  * Returns 0 if the signature is valid, or -1 otherwise
  *
  */
-extern int ast_check_signature_bin(struct ast_key *key, char *msg, unsigned char *sig);
+extern int ast_check_signature_bin(struct ast_key *key, char *msg, int msglen, unsigned char *sig);
 
 /*!
  * \param key a private key to use to create the signature
@@ -83,7 +83,7 @@ extern int ast_sign(struct ast_key *key, char *msg, char *sig);
  * Returns 0 on success or -1 on failure.
  *
  */
-extern int ast_sign_bin(struct ast_key *key, char *msg, unsigned char *sig);
+extern int ast_sign_bin(struct ast_key *key, char *msg, int msglen, unsigned char *sig);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
index 87339f2..205a8c5 100755 (executable)
@@ -296,7 +296,7 @@ static char *binary(int y, int len)
 
 #endif
 
-int ast_sign_bin(struct ast_key *key, char *msg, unsigned char *dsig)
+int ast_sign_bin(struct ast_key *key, char *msg, int msglen, unsigned char *dsig)
 {
        unsigned char digest[20];
        int siglen = sizeof(dsig);
@@ -308,7 +308,7 @@ int ast_sign_bin(struct ast_key *key, char *msg, unsigned char *dsig)
        }
 
        /* Calculate digest of message */
-       SHA1((unsigned char *)msg, strlen(msg), digest);
+       SHA1((unsigned char *)msg, msglen, digest);
 
        /* Verify signature */
        res = RSA_sign(NID_sha1, digest, sizeof(digest), dsig, &siglen, key->rsa);
@@ -332,7 +332,7 @@ int ast_sign(struct ast_key *key, char *msg, char *sig)
        unsigned char dsig[128];
        int siglen = sizeof(dsig);
        int res;
-       res = ast_sign_bin(key, msg, dsig);
+       res = ast_sign_bin(key, msg, strlen(msg), dsig);
        if (!res)
                /* Success -- encode (256 bytes max as documented) */
                ast_base64encode(sig, dsig, siglen, 256);
@@ -340,7 +340,7 @@ int ast_sign(struct ast_key *key, char *msg, char *sig)
        
 }
 
-int ast_check_signature_bin(struct ast_key *key, char *msg, unsigned char *dsig)
+int ast_check_signature_bin(struct ast_key *key, char *msg, int msglen, unsigned char *dsig)
 {
        unsigned char digest[20];
        int res;
@@ -353,7 +353,7 @@ int ast_check_signature_bin(struct ast_key *key, char *msg, unsigned char *dsig)
        }
 
        /* Calculate digest of message */
-       SHA1((unsigned char *)msg, strlen(msg), digest);
+       SHA1((unsigned char *)msg, msglen, digest);
 
        /* Verify signature */
        res = RSA_verify(NID_sha1, digest, sizeof(digest), dsig, sizeof(dsig), key->rsa);
@@ -377,7 +377,7 @@ int ast_check_signature(struct ast_key *key, char *msg, char *sig)
                ast_log(LOG_WARNING, "Signature improper length (expect %d, got %d)\n", (int)sizeof(dsig), (int)res);
                return -1;
        }
-       res = ast_check_signature_bin(key, msg, dsig);
+       res = ast_check_signature_bin(key, msg, strlen(msg), dsig);
        return res;
 }