diff options
author | beck <> | 2002-05-15 02:29:21 +0000 |
---|---|---|
committer | beck <> | 2002-05-15 02:29:21 +0000 |
commit | b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9 (patch) | |
tree | fa27cf82a1250b64ed3bf5f4a18c7354d470bbcc /src/lib/libcrypto/hmac | |
parent | e471e1ea98d673597b182ea85f29e30c97cd08b5 (diff) | |
download | openbsd-b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9.tar.gz openbsd-b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9.tar.bz2 openbsd-b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9.zip |
OpenSSL 0.9.7 stable 2002 05 08 merge
Diffstat (limited to 'src/lib/libcrypto/hmac')
-rw-r--r-- | src/lib/libcrypto/hmac/Makefile.ssl | 25 | ||||
-rw-r--r-- | src/lib/libcrypto/hmac/hmac.c | 51 | ||||
-rw-r--r-- | src/lib/libcrypto/hmac/hmac.h | 12 | ||||
-rw-r--r-- | src/lib/libcrypto/hmac/hmactest.c | 3 |
4 files changed, 55 insertions, 36 deletions
diff --git a/src/lib/libcrypto/hmac/Makefile.ssl b/src/lib/libcrypto/hmac/Makefile.ssl index 326339a90d..899d67c43b 100644 --- a/src/lib/libcrypto/hmac/Makefile.ssl +++ b/src/lib/libcrypto/hmac/Makefile.ssl | |||
@@ -11,7 +11,8 @@ INSTALL_PREFIX= | |||
11 | OPENSSLDIR= /usr/local/ssl | 11 | OPENSSLDIR= /usr/local/ssl |
12 | INSTALLTOP=/usr/local/ssl | 12 | INSTALLTOP=/usr/local/ssl |
13 | MAKE= make -f Makefile.ssl | 13 | MAKE= make -f Makefile.ssl |
14 | MAKEDEPEND= $(TOP)/util/domd $(TOP) | 14 | MAKEDEPPROG= makedepend |
15 | MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) | ||
15 | MAKEFILE= Makefile.ssl | 16 | MAKEFILE= Makefile.ssl |
16 | AR= ar r | 17 | AR= ar r |
17 | 18 | ||
@@ -39,8 +40,7 @@ all: lib | |||
39 | 40 | ||
40 | lib: $(LIBOBJ) | 41 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 42 | $(AR) $(LIB) $(LIBOBJ) |
42 | @echo You may get an error following this line. Please ignore. | 43 | $(RANLIB) $(LIB) || echo Never mind. |
43 | - $(RANLIB) $(LIB) | ||
44 | @touch lib | 44 | @touch lib |
45 | 45 | ||
46 | files: | 46 | files: |
@@ -80,17 +80,10 @@ clean: | |||
80 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 80 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
81 | 81 | ||
82 | hmac.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 82 | hmac.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
83 | hmac.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | 83 | hmac.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h |
84 | hmac.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | 84 | hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/evp.h |
85 | hmac.o: ../../include/openssl/des.h ../../include/openssl/dh.h | 85 | hmac.o: ../../include/openssl/hmac.h ../../include/openssl/obj_mac.h |
86 | hmac.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | ||
87 | hmac.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h | ||
88 | hmac.o: ../../include/openssl/idea.h ../../include/openssl/md2.h | ||
89 | hmac.o: ../../include/openssl/md4.h ../../include/openssl/md5.h | ||
90 | hmac.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h | ||
91 | hmac.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 86 | hmac.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
92 | hmac.o: ../../include/openssl/opensslv.h ../../include/openssl/rc2.h | 87 | hmac.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
93 | hmac.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | 88 | hmac.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
94 | hmac.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | 89 | hmac.o: ../../include/openssl/symhacks.h hmac.c |
95 | hmac.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
96 | hmac.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
diff --git a/src/lib/libcrypto/hmac/hmac.c b/src/lib/libcrypto/hmac/hmac.c index e1ec79e093..026dbe8f66 100644 --- a/src/lib/libcrypto/hmac/hmac.c +++ b/src/lib/libcrypto/hmac/hmac.c | |||
@@ -60,8 +60,8 @@ | |||
60 | #include <string.h> | 60 | #include <string.h> |
61 | #include <openssl/hmac.h> | 61 | #include <openssl/hmac.h> |
62 | 62 | ||
63 | void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, | 63 | void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, |
64 | const EVP_MD *md) | 64 | const EVP_MD *md, ENGINE *impl) |
65 | { | 65 | { |
66 | int i,j,reset=0; | 66 | int i,j,reset=0; |
67 | unsigned char pad[HMAC_MAX_MD_CBLOCK]; | 67 | unsigned char pad[HMAC_MAX_MD_CBLOCK]; |
@@ -70,8 +70,9 @@ void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, | |||
70 | { | 70 | { |
71 | reset=1; | 71 | reset=1; |
72 | ctx->md=md; | 72 | ctx->md=md; |
73 | EVP_MD_CTX_init(&ctx->md_ctx); | ||
73 | } | 74 | } |
74 | else | 75 | else |
75 | md=ctx->md; | 76 | md=ctx->md; |
76 | 77 | ||
77 | if (key != NULL) | 78 | if (key != NULL) |
@@ -80,9 +81,9 @@ void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, | |||
80 | j=EVP_MD_block_size(md); | 81 | j=EVP_MD_block_size(md); |
81 | if (j < len) | 82 | if (j < len) |
82 | { | 83 | { |
83 | EVP_DigestInit(&ctx->md_ctx,md); | 84 | EVP_DigestInit_ex(&ctx->md_ctx,md, impl); |
84 | EVP_DigestUpdate(&ctx->md_ctx,key,len); | 85 | EVP_DigestUpdate(&ctx->md_ctx,key,len); |
85 | EVP_DigestFinal(&(ctx->md_ctx),ctx->key, | 86 | EVP_DigestFinal_ex(&(ctx->md_ctx),ctx->key, |
86 | &ctx->key_length); | 87 | &ctx->key_length); |
87 | } | 88 | } |
88 | else | 89 | else |
@@ -99,21 +100,28 @@ void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, | |||
99 | { | 100 | { |
100 | for (i=0; i<HMAC_MAX_MD_CBLOCK; i++) | 101 | for (i=0; i<HMAC_MAX_MD_CBLOCK; i++) |
101 | pad[i]=0x36^ctx->key[i]; | 102 | pad[i]=0x36^ctx->key[i]; |
102 | EVP_DigestInit(&ctx->i_ctx,md); | 103 | EVP_DigestInit_ex(&ctx->i_ctx,md, impl); |
103 | EVP_DigestUpdate(&ctx->i_ctx,pad,EVP_MD_block_size(md)); | 104 | EVP_DigestUpdate(&ctx->i_ctx,pad,EVP_MD_block_size(md)); |
104 | 105 | ||
105 | for (i=0; i<HMAC_MAX_MD_CBLOCK; i++) | 106 | for (i=0; i<HMAC_MAX_MD_CBLOCK; i++) |
106 | pad[i]=0x5c^ctx->key[i]; | 107 | pad[i]=0x5c^ctx->key[i]; |
107 | EVP_DigestInit(&ctx->o_ctx,md); | 108 | EVP_DigestInit_ex(&ctx->o_ctx,md, impl); |
108 | EVP_DigestUpdate(&ctx->o_ctx,pad,EVP_MD_block_size(md)); | 109 | EVP_DigestUpdate(&ctx->o_ctx,pad,EVP_MD_block_size(md)); |
109 | } | 110 | } |
111 | EVP_MD_CTX_copy_ex(&ctx->md_ctx,&ctx->i_ctx); | ||
112 | } | ||
110 | 113 | ||
111 | memcpy(&ctx->md_ctx,&ctx->i_ctx,sizeof(ctx->i_ctx)); | 114 | void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, |
115 | const EVP_MD *md) | ||
116 | { | ||
117 | if(key && md) | ||
118 | HMAC_CTX_init(ctx); | ||
119 | HMAC_Init_ex(ctx,key,len,md, NULL); | ||
112 | } | 120 | } |
113 | 121 | ||
114 | void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len) | 122 | void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len) |
115 | { | 123 | { |
116 | EVP_DigestUpdate(&(ctx->md_ctx),data,len); | 124 | EVP_DigestUpdate(&ctx->md_ctx,data,len); |
117 | } | 125 | } |
118 | 126 | ||
119 | void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len) | 127 | void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len) |
@@ -124,15 +132,25 @@ void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len) | |||
124 | 132 | ||
125 | j=EVP_MD_block_size(ctx->md); | 133 | j=EVP_MD_block_size(ctx->md); |
126 | 134 | ||
127 | EVP_DigestFinal(&(ctx->md_ctx),buf,&i); | 135 | EVP_DigestFinal_ex(&ctx->md_ctx,buf,&i); |
128 | memcpy(&(ctx->md_ctx),&(ctx->o_ctx),sizeof(ctx->o_ctx)); | 136 | EVP_MD_CTX_copy_ex(&ctx->md_ctx,&ctx->o_ctx); |
129 | EVP_DigestUpdate(&(ctx->md_ctx),buf,i); | 137 | EVP_DigestUpdate(&ctx->md_ctx,buf,i); |
130 | EVP_DigestFinal(&(ctx->md_ctx),md,len); | 138 | EVP_DigestFinal_ex(&ctx->md_ctx,md,len); |
139 | } | ||
140 | |||
141 | void HMAC_CTX_init(HMAC_CTX *ctx) | ||
142 | { | ||
143 | EVP_MD_CTX_init(&ctx->i_ctx); | ||
144 | EVP_MD_CTX_init(&ctx->o_ctx); | ||
145 | EVP_MD_CTX_init(&ctx->md_ctx); | ||
131 | } | 146 | } |
132 | 147 | ||
133 | void HMAC_cleanup(HMAC_CTX *ctx) | 148 | void HMAC_CTX_cleanup(HMAC_CTX *ctx) |
134 | { | 149 | { |
135 | memset(ctx,0,sizeof(HMAC_CTX)); | 150 | EVP_MD_CTX_cleanup(&ctx->i_ctx); |
151 | EVP_MD_CTX_cleanup(&ctx->o_ctx); | ||
152 | EVP_MD_CTX_cleanup(&ctx->md_ctx); | ||
153 | memset(ctx,0,sizeof *ctx); | ||
136 | } | 154 | } |
137 | 155 | ||
138 | unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, | 156 | unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, |
@@ -143,10 +161,11 @@ unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, | |||
143 | static unsigned char m[EVP_MAX_MD_SIZE]; | 161 | static unsigned char m[EVP_MAX_MD_SIZE]; |
144 | 162 | ||
145 | if (md == NULL) md=m; | 163 | if (md == NULL) md=m; |
164 | HMAC_CTX_init(&c); | ||
146 | HMAC_Init(&c,key,key_len,evp_md); | 165 | HMAC_Init(&c,key,key_len,evp_md); |
147 | HMAC_Update(&c,d,n); | 166 | HMAC_Update(&c,d,n); |
148 | HMAC_Final(&c,md,md_len); | 167 | HMAC_Final(&c,md,md_len); |
149 | HMAC_cleanup(&c); | 168 | HMAC_CTX_cleanup(&c); |
150 | return(md); | 169 | return(md); |
151 | } | 170 | } |
152 | 171 | ||
diff --git a/src/lib/libcrypto/hmac/hmac.h b/src/lib/libcrypto/hmac/hmac.h index 328bad2608..0364a1fcbd 100644 --- a/src/lib/libcrypto/hmac/hmac.h +++ b/src/lib/libcrypto/hmac/hmac.h | |||
@@ -58,7 +58,7 @@ | |||
58 | #ifndef HEADER_HMAC_H | 58 | #ifndef HEADER_HMAC_H |
59 | #define HEADER_HMAC_H | 59 | #define HEADER_HMAC_H |
60 | 60 | ||
61 | #ifdef NO_HMAC | 61 | #ifdef OPENSSL_NO_HMAC |
62 | #error HMAC is disabled. | 62 | #error HMAC is disabled. |
63 | #endif | 63 | #endif |
64 | 64 | ||
@@ -83,11 +83,17 @@ typedef struct hmac_ctx_st | |||
83 | #define HMAC_size(e) (EVP_MD_size((e)->md)) | 83 | #define HMAC_size(e) (EVP_MD_size((e)->md)) |
84 | 84 | ||
85 | 85 | ||
86 | void HMAC_CTX_init(HMAC_CTX *ctx); | ||
87 | void HMAC_CTX_cleanup(HMAC_CTX *ctx); | ||
88 | |||
89 | #define HMAC_cleanup(ctx) HMAC_CTX_cleanup(ctx) /* deprecated */ | ||
90 | |||
86 | void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, | 91 | void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, |
87 | const EVP_MD *md); | 92 | const EVP_MD *md); /* deprecated */ |
93 | void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, | ||
94 | const EVP_MD *md, ENGINE *impl); | ||
88 | void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len); | 95 | void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len); |
89 | void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len); | 96 | void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len); |
90 | void HMAC_cleanup(HMAC_CTX *ctx); | ||
91 | unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, | 97 | unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, |
92 | const unsigned char *d, int n, unsigned char *md, | 98 | const unsigned char *d, int n, unsigned char *md, |
93 | unsigned int *md_len); | 99 | unsigned int *md_len); |
diff --git a/src/lib/libcrypto/hmac/hmactest.c b/src/lib/libcrypto/hmac/hmactest.c index 4b56b8ee13..96d3beb8e6 100644 --- a/src/lib/libcrypto/hmac/hmactest.c +++ b/src/lib/libcrypto/hmac/hmactest.c | |||
@@ -60,7 +60,7 @@ | |||
60 | #include <string.h> | 60 | #include <string.h> |
61 | #include <stdlib.h> | 61 | #include <stdlib.h> |
62 | 62 | ||
63 | #ifdef NO_HMAC | 63 | #ifdef OPENSSL_NO_HMAC |
64 | int main(int argc, char *argv[]) | 64 | int main(int argc, char *argv[]) |
65 | { | 65 | { |
66 | printf("No HMAC support\n"); | 66 | printf("No HMAC support\n"); |
@@ -68,6 +68,7 @@ int main(int argc, char *argv[]) | |||
68 | } | 68 | } |
69 | #else | 69 | #else |
70 | #include <openssl/hmac.h> | 70 | #include <openssl/hmac.h> |
71 | #include <openssl/md5.h> | ||
71 | 72 | ||
72 | #ifdef CHARSET_EBCDIC | 73 | #ifdef CHARSET_EBCDIC |
73 | #include <openssl/ebcdic.h> | 74 | #include <openssl/ebcdic.h> |