Deleted Added
full compact
p12_mutl.c (160814) p12_mutl.c (162911)
1/* p12_mutl.c */
2/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
3 * project 1999.
4 */
5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 55 unchanged lines hidden (view full) ---

64#include <openssl/pkcs12.h>
65
66/* Generate a MAC */
67int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
68 unsigned char *mac, unsigned int *maclen)
69{
70 const EVP_MD *md_type;
71 HMAC_CTX hmac;
1/* p12_mutl.c */
2/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
3 * project 1999.
4 */
5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 55 unchanged lines hidden (view full) ---

64#include <openssl/pkcs12.h>
65
66/* Generate a MAC */
67int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
68 unsigned char *mac, unsigned int *maclen)
69{
70 const EVP_MD *md_type;
71 HMAC_CTX hmac;
72 unsigned char key[PKCS12_MAC_KEY_LENGTH], *salt;
72 unsigned char key[EVP_MAX_MD_SIZE], *salt;
73 int saltlen, iter;
74
75 if (!PKCS7_type_is_data(p12->authsafes))
76 {
77 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_CONTENT_TYPE_NOT_DATA);
78 return 0;
79 }
80
81 salt = p12->mac->salt->data;
82 saltlen = p12->mac->salt->length;
83 if (!p12->mac->iter) iter = 1;
84 else iter = ASN1_INTEGER_get (p12->mac->iter);
85 if(!(md_type =
86 EVP_get_digestbyobj (p12->mac->dinfo->algor->algorithm))) {
87 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_UNKNOWN_DIGEST_ALGORITHM);
88 return 0;
89 }
90 if(!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter,
73 int saltlen, iter;
74
75 if (!PKCS7_type_is_data(p12->authsafes))
76 {
77 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_CONTENT_TYPE_NOT_DATA);
78 return 0;
79 }
80
81 salt = p12->mac->salt->data;
82 saltlen = p12->mac->salt->length;
83 if (!p12->mac->iter) iter = 1;
84 else iter = ASN1_INTEGER_get (p12->mac->iter);
85 if(!(md_type =
86 EVP_get_digestbyobj (p12->mac->dinfo->algor->algorithm))) {
87 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_UNKNOWN_DIGEST_ALGORITHM);
88 return 0;
89 }
90 if(!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter,
91 PKCS12_MAC_KEY_LENGTH, key, md_type)) {
91 EVP_MD_size(md_type), key, md_type)) {
92 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_KEY_GEN_ERROR);
93 return 0;
94 }
95 HMAC_CTX_init(&hmac);
92 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_KEY_GEN_ERROR);
93 return 0;
94 }
95 HMAC_CTX_init(&hmac);
96 HMAC_Init_ex(&hmac, key, PKCS12_MAC_KEY_LENGTH, md_type, NULL);
96 HMAC_Init_ex(&hmac, key, EVP_MD_size(md_type), md_type, NULL);
97 HMAC_Update(&hmac, p12->authsafes->d.data->data,
98 p12->authsafes->d.data->length);
99 HMAC_Final(&hmac, mac, maclen);
100 HMAC_CTX_cleanup(&hmac);
101 return 1;
102}
103
104/* Verify the mac */

--- 78 unchanged lines hidden ---
97 HMAC_Update(&hmac, p12->authsafes->d.data->data,
98 p12->authsafes->d.data->length);
99 HMAC_Final(&hmac, mac, maclen);
100 HMAC_CTX_cleanup(&hmac);
101 return 1;
102}
103
104/* Verify the mac */

--- 78 unchanged lines hidden ---