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

Diff for /src/usr.bin/ssh/digest-openssl.c between version 1.2 and 1.3

version 1.2, 2014/02/02 03:44:31 version 1.3, 2014/06/24 01:13:21
Line 22 
Line 22 
   
 #include <openssl/evp.h>  #include <openssl/evp.h>
   
 #include "buffer.h"  #include "sshbuf.h"
 #include "digest.h"  #include "digest.h"
   #include "ssherr.h"
   
 struct ssh_digest_ctx {  struct ssh_digest_ctx {
         int alg;          int alg;
Line 92 
Line 93 
 int  int
 ssh_digest_copy_state(struct ssh_digest_ctx *from, struct ssh_digest_ctx *to)  ssh_digest_copy_state(struct ssh_digest_ctx *from, struct ssh_digest_ctx *to)
 {  {
           if (from->alg != to->alg)
                   return SSH_ERR_INVALID_ARGUMENT;
         /* we have bcopy-style order while openssl has memcpy-style */          /* we have bcopy-style order while openssl has memcpy-style */
         if (!EVP_MD_CTX_copy_ex(&to->mdctx, &from->mdctx))          if (!EVP_MD_CTX_copy_ex(&to->mdctx, &from->mdctx))
                 return -1;                  return SSH_ERR_LIBCRYPTO_ERROR;
         return 0;          return 0;
 }  }
   
Line 102 
Line 105 
 ssh_digest_update(struct ssh_digest_ctx *ctx, const void *m, size_t mlen)  ssh_digest_update(struct ssh_digest_ctx *ctx, const void *m, size_t mlen)
 {  {
         if (EVP_DigestUpdate(&ctx->mdctx, m, mlen) != 1)          if (EVP_DigestUpdate(&ctx->mdctx, m, mlen) != 1)
                 return -1;                  return SSH_ERR_LIBCRYPTO_ERROR;
         return 0;          return 0;
 }  }
   
 int  int
 ssh_digest_update_buffer(struct ssh_digest_ctx *ctx, const Buffer *b)  ssh_digest_update_buffer(struct ssh_digest_ctx *ctx, const struct sshbuf *b)
 {  {
         return ssh_digest_update(ctx, buffer_ptr(b), buffer_len(b));          return ssh_digest_update(ctx, sshbuf_ptr(b), sshbuf_len(b));
 }  }
   
 int  int
Line 119 
Line 122 
         u_int l = dlen;          u_int l = dlen;
   
         if (dlen > UINT_MAX)          if (dlen > UINT_MAX)
                 return -1;                  return SSH_ERR_INVALID_ARGUMENT;
         if (dlen < digest->digest_len) /* No truncation allowed */          if (dlen < digest->digest_len) /* No truncation allowed */
                 return -1;                  return SSH_ERR_INVALID_ARGUMENT;
         if (EVP_DigestFinal_ex(&ctx->mdctx, d, &l) != 1)          if (EVP_DigestFinal_ex(&ctx->mdctx, d, &l) != 1)
                 return -1;                  return SSH_ERR_LIBCRYPTO_ERROR;
         if (l != digest->digest_len) /* sanity */          if (l != digest->digest_len) /* sanity */
                 return -1;                  return SSH_ERR_INTERNAL_ERROR;
         return 0;          return 0;
 }  }
   
Line 143 
Line 146 
 ssh_digest_memory(int alg, const void *m, size_t mlen, u_char *d, size_t dlen)  ssh_digest_memory(int alg, const void *m, size_t mlen, u_char *d, size_t dlen)
 {  {
         struct ssh_digest_ctx *ctx = ssh_digest_start(alg);          struct ssh_digest_ctx *ctx = ssh_digest_start(alg);
           int r;
   
         if (ctx == NULL)          if (ctx == NULL)
                 return -1;                  return SSH_ERR_INVALID_ARGUMENT;
         if (ssh_digest_update(ctx, m, mlen) != 0 ||          if ((r = ssh_digest_update(ctx, m, mlen) != 0) ||
             ssh_digest_final(ctx, d, dlen) != 0)              (r = ssh_digest_final(ctx, d, dlen) != 0))
                 return -1;                  return r;
         ssh_digest_free(ctx);          ssh_digest_free(ctx);
         return 0;          return 0;
 }  }
   
 int  int
 ssh_digest_buffer(int alg, const Buffer *b, u_char *d, size_t dlen)  ssh_digest_buffer(int alg, const struct sshbuf *b, u_char *d, size_t dlen)
 {  {
         return ssh_digest_memory(alg, buffer_ptr(b), buffer_len(b), d, dlen);          return ssh_digest_memory(alg, sshbuf_ptr(b), sshbuf_len(b), d, dlen);
 }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3