summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/digest.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/evp/digest.c')
-rw-r--r--src/lib/libcrypto/evp/digest.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/lib/libcrypto/evp/digest.c b/src/lib/libcrypto/evp/digest.c
index d65f0036f7..c560733568 100644
--- a/src/lib/libcrypto/evp/digest.c
+++ b/src/lib/libcrypto/evp/digest.c
@@ -58,32 +58,35 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "objects.h" 61#include <openssl/objects.h>
62#include "evp.h" 62#include <openssl/evp.h>
63 63
64void EVP_DigestInit(ctx,type) 64void EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type)
65EVP_MD_CTX *ctx;
66EVP_MD *type;
67 { 65 {
68 ctx->digest=type; 66 ctx->digest=type;
69 type->init(&(ctx->md)); 67 type->init(&(ctx->md));
70 } 68 }
71 69
72void EVP_DigestUpdate(ctx,data,count) 70void EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *data,
73EVP_MD_CTX *ctx; 71 unsigned int count)
74unsigned char *data;
75unsigned int count;
76 { 72 {
77 ctx->digest->update(&(ctx->md.base[0]),data,(unsigned long)count); 73 ctx->digest->update(&(ctx->md.base[0]),data,(unsigned long)count);
78 } 74 }
79 75
80void EVP_DigestFinal(ctx,md,size) 76void EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
81EVP_MD_CTX *ctx;
82unsigned char *md;
83unsigned int *size;
84 { 77 {
85 ctx->digest->final(md,&(ctx->md.base[0])); 78 ctx->digest->final(md,&(ctx->md.base[0]));
86 if (size != NULL) 79 if (size != NULL)
87 *size=ctx->digest->md_size; 80 *size=ctx->digest->md_size;
88 memset(&(ctx->md),0,sizeof(ctx->md)); 81 memset(&(ctx->md),0,sizeof(ctx->md));
89 } 82 }
83
84int EVP_MD_CTX_copy(EVP_MD_CTX *out, EVP_MD_CTX *in)
85{
86 if ((in == NULL) || (in->digest == NULL)) {
87 EVPerr(EVP_F_EVP_MD_CTX_COPY,EVP_R_INPUT_NOT_INITIALIZED);
88 return 0;
89 }
90 memcpy((char *)out,(char *)in,in->digest->ctx_size);
91 return 1;
92}