Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/pkcs12/p12_mutl.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | - | |||||||||||||
5 | - | |||||||||||||
6 | - | |||||||||||||
7 | int | - | ||||||||||||
8 | PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, | - | ||||||||||||
9 | unsigned char *mac, unsigned int *maclen) | - | ||||||||||||
10 | { | - | ||||||||||||
11 | const EVP_MD *md_type; | - | ||||||||||||
12 | HMAC_CTX hmac; | - | ||||||||||||
13 | unsigned char key[64], *salt; | - | ||||||||||||
14 | int saltlen, iter; | - | ||||||||||||
15 | int md_size; | - | ||||||||||||
16 | - | |||||||||||||
17 | if (!(OBJ_obj2nid((p12->authsafes)->type) == 21)
| 0 | ||||||||||||
18 | ERR_put_error(35,(0xfff),(121),__FILE__,83); | - | ||||||||||||
19 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
20 | } | - | ||||||||||||
21 | - | |||||||||||||
22 | salt = p12->mac->salt->data; | - | ||||||||||||
23 | saltlen = p12->mac->salt->length; | - | ||||||||||||
24 | if (!p12->mac->iter
| 0 | ||||||||||||
25 | iter = 1; never executed: iter = 1; | 0 | ||||||||||||
26 | else if ((
| 0 | ||||||||||||
27 | ERR_put_error(35,(0xfff),(101),__FILE__,92); | - | ||||||||||||
28 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
29 | } | - | ||||||||||||
30 | if (!(md_type = EVP_get_digestbyname(OBJ_nid2sn(OBJ_obj2nid(p12->mac->dinfo->algor->algorithm)))
| 0 | ||||||||||||
31 | )
| 0 | ||||||||||||
32 | ERR_put_error(35,(0xfff),(118),__FILE__,97); | - | ||||||||||||
33 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
34 | } | - | ||||||||||||
35 | md_size = EVP_MD_size(md_type); | - | ||||||||||||
36 | if (md_size < 0
| 0 | ||||||||||||
37 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
38 | if (!PKCS12_key_gen_asc(pass, passlen, salt, saltlen, 3, iter,
| 0 | ||||||||||||
39 | md_size, key, md_type)
| 0 | ||||||||||||
40 | ERR_put_error(35,(0xfff),(107),__FILE__,105); | - | ||||||||||||
41 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
42 | } | - | ||||||||||||
43 | HMAC_CTX_init(&hmac); | - | ||||||||||||
44 | if (!HMAC_Init_ex(&hmac, key, md_size, md_type,
| 0 | ||||||||||||
45 | ((void *)0)
| 0 | ||||||||||||
46 | )
| 0 | ||||||||||||
47 | !HMAC_Update(&hmac, p12->authsafes->d.data->data,
| 0 | ||||||||||||
48 | p12->authsafes->d.data->length)
| 0 | ||||||||||||
49 | !HMAC_Final(&hmac, mac, maclen)
| 0 | ||||||||||||
50 | HMAC_CTX_cleanup(&hmac); | - | ||||||||||||
51 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
52 | } | - | ||||||||||||
53 | HMAC_CTX_cleanup(&hmac); | - | ||||||||||||
54 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
55 | } | - | ||||||||||||
56 | - | |||||||||||||
57 | - | |||||||||||||
58 | int | - | ||||||||||||
59 | PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen) | - | ||||||||||||
60 | { | - | ||||||||||||
61 | unsigned char mac[64]; | - | ||||||||||||
62 | unsigned int maclen; | - | ||||||||||||
63 | - | |||||||||||||
64 | if (p12->mac ==
| 0 | ||||||||||||
65 | ((void *)0)
| 0 | ||||||||||||
66 | ) { | - | ||||||||||||
67 | ERR_put_error(35,(0xfff),(108),__FILE__,128); | - | ||||||||||||
68 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
69 | } | - | ||||||||||||
70 | if (!PKCS12_gen_mac(p12, pass, passlen, mac, &maclen)
| 0 | ||||||||||||
71 | ERR_put_error(35,(0xfff),(109),__FILE__,132); | - | ||||||||||||
72 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
73 | } | - | ||||||||||||
74 | if ((
| 0 | ||||||||||||
75 | memcmp(mac, p12->mac->dinfo->digest->data, maclen)
| 0 | ||||||||||||
76 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
77 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
78 | } | - | ||||||||||||
79 | - | |||||||||||||
80 | - | |||||||||||||
81 | - | |||||||||||||
82 | int | - | ||||||||||||
83 | PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *salt, | - | ||||||||||||
84 | int saltlen, int iter, const EVP_MD *md_type) | - | ||||||||||||
85 | { | - | ||||||||||||
86 | unsigned char mac[64]; | - | ||||||||||||
87 | unsigned int maclen; | - | ||||||||||||
88 | - | |||||||||||||
89 | if (!md_type
| 0 | ||||||||||||
90 | md_type = EVP_sha1(); never executed: md_type = EVP_sha1(); | 0 | ||||||||||||
91 | if (PKCS12_setup_mac(p12, iter, salt, saltlen, md_type) ==
| 0 | ||||||||||||
92 | 0
| 0 | ||||||||||||
93 | ERR_put_error(35,(0xfff),(110),__FILE__,154); | - | ||||||||||||
94 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
95 | } | - | ||||||||||||
96 | if (!PKCS12_gen_mac(p12, pass, passlen, mac, &maclen)
| 0 | ||||||||||||
97 | ERR_put_error(35,(0xfff),(109),__FILE__,158); | - | ||||||||||||
98 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
99 | } | - | ||||||||||||
100 | if (!(ASN1_STRING_set(p12->mac->dinfo->digest, mac, maclen))
| 0 | ||||||||||||
101 | ERR_put_error(35,(0xfff),(111),__FILE__,162); | - | ||||||||||||
102 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
103 | } | - | ||||||||||||
104 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
105 | } | - | ||||||||||||
106 | - | |||||||||||||
107 | - | |||||||||||||
108 | int | - | ||||||||||||
109 | PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen, | - | ||||||||||||
110 | const EVP_MD *md_type) | - | ||||||||||||
111 | { | - | ||||||||||||
112 | if (!(p12->mac = PKCS12_MAC_DATA_new())
| 0 | ||||||||||||
113 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
114 | if (iter > 1
| 0 | ||||||||||||
115 | if (!(p12->mac->iter = ASN1_INTEGER_new())
| 0 | ||||||||||||
116 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,177); | - | ||||||||||||
117 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
118 | } | - | ||||||||||||
119 | if (!ASN1_INTEGER_set(p12->mac->iter, iter)
| 0 | ||||||||||||
120 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,181); | - | ||||||||||||
121 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
122 | } | - | ||||||||||||
123 | } never executed: end of block | 0 | ||||||||||||
124 | if (!saltlen
| 0 | ||||||||||||
125 | saltlen = 8; never executed: saltlen = 8; | 0 | ||||||||||||
126 | if (!(p12->mac->salt->data = malloc(saltlen))
| 0 | ||||||||||||
127 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,188); | - | ||||||||||||
128 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
129 | } | - | ||||||||||||
130 | p12->mac->salt->length = saltlen; | - | ||||||||||||
131 | if (!salt
| 0 | ||||||||||||
132 | arc4random_buf(p12->mac->salt->data, saltlen); never executed: arc4random_buf(p12->mac->salt->data, saltlen); | 0 | ||||||||||||
133 | else | - | ||||||||||||
134 | memcpy (p12->mac->salt->data, salt, saltlen); never executed: memcpy (p12->mac->salt->data, salt, saltlen); | 0 | ||||||||||||
135 | p12->mac->dinfo->algor->algorithm = OBJ_nid2obj(EVP_MD_type(md_type)); | - | ||||||||||||
136 | if (!(p12->mac->dinfo->algor->parameter = ASN1_TYPE_new())
| 0 | ||||||||||||
137 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,198); | - | ||||||||||||
138 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
139 | } | - | ||||||||||||
140 | p12->mac->dinfo->algor->parameter->type = 5; | - | ||||||||||||
141 | - | |||||||||||||
142 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
143 | } | - | ||||||||||||
Switch to Source code | Preprocessed file |