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> |
