[BACK]Return to ssh-dss.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/ssh-dss.c between version 1.29 and 1.30

version 1.29, 2013/12/27 22:30:17 version 1.30, 2014/01/09 23:20:00
Line 35 
Line 35 
 #include "compat.h"  #include "compat.h"
 #include "log.h"  #include "log.h"
 #include "key.h"  #include "key.h"
   #include "digest.h"
   
 #define INTBLOB_LEN     20  #define INTBLOB_LEN     20
 #define SIGBLOB_LEN     (2*INTBLOB_LEN)  #define SIGBLOB_LEN     (2*INTBLOB_LEN)
Line 44 
Line 45 
     const u_char *data, u_int datalen)      const u_char *data, u_int datalen)
 {  {
         DSA_SIG *sig;          DSA_SIG *sig;
         const EVP_MD *evp_md = EVP_sha1();          u_char digest[SSH_DIGEST_MAX_LENGTH], sigblob[SIGBLOB_LEN];
         EVP_MD_CTX md;          u_int rlen, slen, len, dlen = ssh_digest_bytes(SSH_DIGEST_SHA1);
         u_char digest[EVP_MAX_MD_SIZE], sigblob[SIGBLOB_LEN];  
         u_int rlen, slen, len, dlen;  
         Buffer b;          Buffer b;
   
         if (key == NULL || key_type_plain(key->type) != KEY_DSA ||          if (key == NULL || key_type_plain(key->type) != KEY_DSA ||
Line 56 
Line 55 
                 return -1;                  return -1;
         }          }
   
         EVP_DigestInit(&md, evp_md);          if (ssh_digest_memory(SSH_DIGEST_SHA1, data, datalen,
         EVP_DigestUpdate(&md, data, datalen);              digest, sizeof(digest)) != 0) {
         EVP_DigestFinal(&md, digest, &dlen);                  error("%s: ssh_digest_memory failed", __func__);
                   return -1;
           }
   
         sig = DSA_do_sign(digest, dlen, key->dsa);          sig = DSA_do_sign(digest, dlen, key->dsa);
         memset(digest, 'd', sizeof(digest));          memset(digest, 'd', sizeof(digest));
Line 108 
Line 109 
     const u_char *data, u_int datalen)      const u_char *data, u_int datalen)
 {  {
         DSA_SIG *sig;          DSA_SIG *sig;
         const EVP_MD *evp_md = EVP_sha1();          u_char digest[SSH_DIGEST_MAX_LENGTH], *sigblob;
         EVP_MD_CTX md;          u_int len, dlen = ssh_digest_bytes(SSH_DIGEST_SHA1);
         u_char digest[EVP_MAX_MD_SIZE], *sigblob;  
         u_int len, dlen;  
         int rlen, ret;          int rlen, ret;
         Buffer b;          Buffer b;
   
Line 170 
Line 169 
         free(sigblob);          free(sigblob);
   
         /* sha1 the data */          /* sha1 the data */
         EVP_DigestInit(&md, evp_md);          if (ssh_digest_memory(SSH_DIGEST_SHA1, data, datalen,
         EVP_DigestUpdate(&md, data, datalen);              digest, sizeof(digest)) != 0) {
         EVP_DigestFinal(&md, digest, &dlen);                  error("%s: digest_memory failed", __func__);
                   return -1;
           }
   
         ret = DSA_do_verify(digest, dlen, sig, key->dsa);          ret = DSA_do_verify(digest, dlen, sig, key->dsa);
         memset(digest, 'd', sizeof(digest));          memset(digest, 'd', sizeof(digest));

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30