Commit de941e28 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Initialize cipher context in KRB5
("D. Russell" <russelld@aol.net>)

Allow HMAC functions to use an alternative ENGINE.
parent 1d284535
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1138,7 +1138,7 @@ int MAIN(int argc, char **argv)

		HMAC_CTX_init(&hctx);
		HMAC_Init_ex(&hctx,(unsigned char *)"This is a key...",
			16,EVP_md5());
			16,EVP_md5(), NULL);

		for (j=0; j<SIZE_NUM; j++)
			{
@@ -1146,7 +1146,7 @@ int MAIN(int argc, char **argv)
			Time_F(START);
			for (count=0,run=1; COND(c[D_HMAC][j]); count++)
				{
				HMAC_Init_ex(&hctx,NULL,0,NULL);
				HMAC_Init_ex(&hctx,NULL,0,NULL,NULL);
				HMAC_Update(&hctx,buf,lengths[j]);
				HMAC_Final(&hctx,&(hmac[0]),NULL);
				}
+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
		itmp[1] = (unsigned char)((i >> 16) & 0xff);
		itmp[2] = (unsigned char)((i >> 8) & 0xff);
		itmp[3] = (unsigned char)(i & 0xff);
		HMAC_Init_ex(&hctx, pass, passlen, EVP_sha1());
		HMAC_Init_ex(&hctx, pass, passlen, EVP_sha1(), NULL);
		HMAC_Update(&hctx, salt, saltlen);
		HMAC_Update(&hctx, itmp, 4);
		HMAC_Final(&hctx, digtmp, NULL);
+5 −5
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@
#include <openssl/hmac.h>

void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
		  const EVP_MD *md)
		  const EVP_MD *md, ENGINE *impl)
	{
	int i,j,reset=0;
	unsigned char pad[HMAC_MAX_MD_CBLOCK];
@@ -80,7 +80,7 @@ void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
		j=EVP_MD_block_size(md);
		if (j < len)
			{
			EVP_DigestInit_ex(&ctx->md_ctx,md, NULL);
			EVP_DigestInit_ex(&ctx->md_ctx,md, impl);
			EVP_DigestUpdate(&ctx->md_ctx,key,len);
			EVP_DigestFinal_ex(&(ctx->md_ctx),ctx->key,
				&ctx->key_length);
@@ -99,12 +99,12 @@ void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
		{
		for (i=0; i<HMAC_MAX_MD_CBLOCK; i++)
			pad[i]=0x36^ctx->key[i];
		EVP_DigestInit_ex(&ctx->i_ctx,md, NULL);
		EVP_DigestInit_ex(&ctx->i_ctx,md, impl);
		EVP_DigestUpdate(&ctx->i_ctx,pad,EVP_MD_block_size(md));

		for (i=0; i<HMAC_MAX_MD_CBLOCK; i++)
			pad[i]=0x5c^ctx->key[i];
		EVP_DigestInit_ex(&ctx->o_ctx,md, NULL);
		EVP_DigestInit_ex(&ctx->o_ctx,md, impl);
		EVP_DigestUpdate(&ctx->o_ctx,pad,EVP_MD_block_size(md));
		}
	EVP_MD_CTX_copy_ex(&ctx->md_ctx,&ctx->i_ctx);
@@ -115,7 +115,7 @@ void HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
	{
	if(key && md)
	    HMAC_CTX_init(ctx);
	HMAC_Init_ex(ctx,key,len,md);
	HMAC_Init_ex(ctx,key,len,md, NULL);
	}

void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len)
+1 −1
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ void HMAC_CTX_cleanup(HMAC_CTX *ctx);
void HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
	       const EVP_MD *md); /* deprecated */
void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
		  const EVP_MD *md);
		  const EVP_MD *md, ENGINE *impl);
void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len);
void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len);
unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
+4 −4
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ int PKCS12_gen_mac (PKCS12 *p12, const char *pass, int passlen,
		return 0;
	}
	HMAC_CTX_init(&hmac);
	HMAC_Init_ex (&hmac, key, PKCS12_MAC_KEY_LENGTH, md_type);
	HMAC_Init_ex(&hmac, key, PKCS12_MAC_KEY_LENGTH, md_type, NULL);
    	HMAC_Update(&hmac, p12->authsafes->d.data->data,
					 p12->authsafes->d.data->length);
    	HMAC_Final(&hmac, mac, maclen);
Loading