summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/pkcs12/p12_mutl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/pkcs12/p12_mutl.c')
-rw-r--r--src/lib/libcrypto/pkcs12/p12_mutl.c35
1 files changed, 14 insertions, 21 deletions
diff --git a/src/lib/libcrypto/pkcs12/p12_mutl.c b/src/lib/libcrypto/pkcs12/p12_mutl.c
index 56a4964a34..f3132ec75f 100644
--- a/src/lib/libcrypto/pkcs12/p12_mutl.c
+++ b/src/lib/libcrypto/pkcs12/p12_mutl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p12_mutl.c,v 1.22 2016/11/08 20:01:06 miod Exp $ */ 1/* $OpenBSD: p12_mutl.c,v 1.23 2017/01/29 17:49:23 beck Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 1999. 3 * project 1999.
4 */ 4 */
@@ -80,8 +80,7 @@ PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
80 int md_size; 80 int md_size;
81 81
82 if (!PKCS7_type_is_data(p12->authsafes)) { 82 if (!PKCS7_type_is_data(p12->authsafes)) {
83 PKCS12err(PKCS12_F_PKCS12_GEN_MAC, 83 PKCS12error(PKCS12_R_CONTENT_TYPE_NOT_DATA);
84 PKCS12_R_CONTENT_TYPE_NOT_DATA);
85 return 0; 84 return 0;
86 } 85 }
87 86
@@ -90,13 +89,12 @@ PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
90 if (!p12->mac->iter) 89 if (!p12->mac->iter)
91 iter = 1; 90 iter = 1;
92 else if ((iter = ASN1_INTEGER_get(p12->mac->iter)) <= 0) { 91 else if ((iter = ASN1_INTEGER_get(p12->mac->iter)) <= 0) {
93 PKCS12err(PKCS12_F_PKCS12_GEN_MAC, PKCS12_R_DECODE_ERROR); 92 PKCS12error(PKCS12_R_DECODE_ERROR);
94 return 0; 93 return 0;
95 } 94 }
96 if (!(md_type = EVP_get_digestbyobj( 95 if (!(md_type = EVP_get_digestbyobj(
97 p12->mac->dinfo->algor->algorithm))) { 96 p12->mac->dinfo->algor->algorithm))) {
98 PKCS12err(PKCS12_F_PKCS12_GEN_MAC, 97 PKCS12error(PKCS12_R_UNKNOWN_DIGEST_ALGORITHM);
99 PKCS12_R_UNKNOWN_DIGEST_ALGORITHM);
100 return 0; 98 return 0;
101 } 99 }
102 md_size = EVP_MD_size(md_type); 100 md_size = EVP_MD_size(md_type);
@@ -104,7 +102,7 @@ PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
104 return 0; 102 return 0;
105 if (!PKCS12_key_gen(pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter, 103 if (!PKCS12_key_gen(pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter,
106 md_size, key, md_type)) { 104 md_size, key, md_type)) {
107 PKCS12err(PKCS12_F_PKCS12_GEN_MAC, PKCS12_R_KEY_GEN_ERROR); 105 PKCS12error(PKCS12_R_KEY_GEN_ERROR);
108 return 0; 106 return 0;
109 } 107 }
110 HMAC_CTX_init(&hmac); 108 HMAC_CTX_init(&hmac);
@@ -127,12 +125,11 @@ PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen)
127 unsigned int maclen; 125 unsigned int maclen;
128 126
129 if (p12->mac == NULL) { 127 if (p12->mac == NULL) {
130 PKCS12err(PKCS12_F_PKCS12_VERIFY_MAC, PKCS12_R_MAC_ABSENT); 128 PKCS12error(PKCS12_R_MAC_ABSENT);
131 return 0; 129 return 0;
132 } 130 }
133 if (!PKCS12_gen_mac(p12, pass, passlen, mac, &maclen)) { 131 if (!PKCS12_gen_mac(p12, pass, passlen, mac, &maclen)) {
134 PKCS12err(PKCS12_F_PKCS12_VERIFY_MAC, 132 PKCS12error(PKCS12_R_MAC_GENERATION_ERROR);
135 PKCS12_R_MAC_GENERATION_ERROR);
136 return 0; 133 return 0;
137 } 134 }
138 if ((maclen != (unsigned int)p12->mac->dinfo->digest->length) || 135 if ((maclen != (unsigned int)p12->mac->dinfo->digest->length) ||
@@ -154,17 +151,15 @@ PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt,
154 md_type = EVP_sha1(); 151 md_type = EVP_sha1();
155 if (PKCS12_setup_mac(p12, iter, salt, saltlen, md_type) == 152 if (PKCS12_setup_mac(p12, iter, salt, saltlen, md_type) ==
156 PKCS12_ERROR) { 153 PKCS12_ERROR) {
157 PKCS12err(PKCS12_F_PKCS12_SET_MAC, PKCS12_R_MAC_SETUP_ERROR); 154 PKCS12error(PKCS12_R_MAC_SETUP_ERROR);
158 return 0; 155 return 0;
159 } 156 }
160 if (!PKCS12_gen_mac(p12, pass, passlen, mac, &maclen)) { 157 if (!PKCS12_gen_mac(p12, pass, passlen, mac, &maclen)) {
161 PKCS12err(PKCS12_F_PKCS12_SET_MAC, 158 PKCS12error(PKCS12_R_MAC_GENERATION_ERROR);
162 PKCS12_R_MAC_GENERATION_ERROR);
163 return 0; 159 return 0;
164 } 160 }
165 if (!(ASN1_STRING_set(p12->mac->dinfo->digest, mac, maclen))) { 161 if (!(ASN1_STRING_set(p12->mac->dinfo->digest, mac, maclen))) {
166 PKCS12err(PKCS12_F_PKCS12_SET_MAC, 162 PKCS12error(PKCS12_R_MAC_STRING_SET_ERROR);
167 PKCS12_R_MAC_STRING_SET_ERROR);
168 return 0; 163 return 0;
169 } 164 }
170 return 1; 165 return 1;
@@ -179,20 +174,18 @@ PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen,
179 return PKCS12_ERROR; 174 return PKCS12_ERROR;
180 if (iter > 1) { 175 if (iter > 1) {
181 if (!(p12->mac->iter = ASN1_INTEGER_new())) { 176 if (!(p12->mac->iter = ASN1_INTEGER_new())) {
182 PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, 177 PKCS12error(ERR_R_MALLOC_FAILURE);
183 ERR_R_MALLOC_FAILURE);
184 return 0; 178 return 0;
185 } 179 }
186 if (!ASN1_INTEGER_set(p12->mac->iter, iter)) { 180 if (!ASN1_INTEGER_set(p12->mac->iter, iter)) {
187 PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, 181 PKCS12error(ERR_R_MALLOC_FAILURE);
188 ERR_R_MALLOC_FAILURE);
189 return 0; 182 return 0;
190 } 183 }
191 } 184 }
192 if (!saltlen) 185 if (!saltlen)
193 saltlen = PKCS12_SALT_LEN; 186 saltlen = PKCS12_SALT_LEN;
194 if (!(p12->mac->salt->data = malloc(saltlen))) { 187 if (!(p12->mac->salt->data = malloc(saltlen))) {
195 PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE); 188 PKCS12error(ERR_R_MALLOC_FAILURE);
196 return 0; 189 return 0;
197 } 190 }
198 p12->mac->salt->length = saltlen; 191 p12->mac->salt->length = saltlen;
@@ -202,7 +195,7 @@ PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen,
202 memcpy (p12->mac->salt->data, salt, saltlen); 195 memcpy (p12->mac->salt->data, salt, saltlen);
203 p12->mac->dinfo->algor->algorithm = OBJ_nid2obj(EVP_MD_type(md_type)); 196 p12->mac->dinfo->algor->algorithm = OBJ_nid2obj(EVP_MD_type(md_type));
204 if (!(p12->mac->dinfo->algor->parameter = ASN1_TYPE_new())) { 197 if (!(p12->mac->dinfo->algor->parameter = ASN1_TYPE_new())) {
205 PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE); 198 PKCS12error(ERR_R_MALLOC_FAILURE);
206 return 0; 199 return 0;
207 } 200 }
208 p12->mac->dinfo->algor->parameter->type = V_ASN1_NULL; 201 p12->mac->dinfo->algor->parameter->type = V_ASN1_NULL;