| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/pkcs12/p12_add.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||
|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||
| 2 | - | |||||||
| 3 | - | |||||||
| 4 | - | |||||||
| 5 | PKCS12_SAFEBAG * | - | ||||||
| 6 | PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, int nid1, int nid2) | - | ||||||
| 7 | { | - | ||||||
| 8 | PKCS12_BAGS *bag; | - | ||||||
| 9 | PKCS12_SAFEBAG *safebag; | - | ||||||
| 10 | - | |||||||
| 11 | if (!(bag = PKCS12_BAGS_new())
| 0 | ||||||
| 12 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,73); | - | ||||||
| 13 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 14 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 15 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 16 | } | - | ||||||
| 17 | bag->type = OBJ_nid2obj(nid1); | - | ||||||
| 18 | if (!ASN1_item_pack(obj, it, &bag->value.octet)
| 0 | ||||||
| 19 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,78); | - | ||||||
| 20 | PKCS12_BAGS_free(bag); | - | ||||||
| 21 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 22 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 23 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 24 | } | - | ||||||
| 25 | if (!(safebag = PKCS12_SAFEBAG_new())
| 0 | ||||||
| 26 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,83); | - | ||||||
| 27 | PKCS12_BAGS_free(bag); | - | ||||||
| 28 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 29 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 30 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 31 | } | - | ||||||
| 32 | safebag->value.bag = bag; | - | ||||||
| 33 | safebag->type = OBJ_nid2obj(nid2); | - | ||||||
| 34 | return never executed: safebag;return safebag;never executed: return safebag; | 0 | ||||||
| 35 | } | - | ||||||
| 36 | - | |||||||
| 37 | - | |||||||
| 38 | - | |||||||
| 39 | PKCS12_SAFEBAG * | - | ||||||
| 40 | PKCS12_MAKE_KEYBAG(PKCS8_PRIV_KEY_INFO *p8) | - | ||||||
| 41 | { | - | ||||||
| 42 | PKCS12_SAFEBAG *bag; | - | ||||||
| 43 | - | |||||||
| 44 | if (!(bag = PKCS12_SAFEBAG_new())
| 0 | ||||||
| 45 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,100); | - | ||||||
| 46 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 47 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 48 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 49 | } | - | ||||||
| 50 | bag->type = OBJ_nid2obj(150); | - | ||||||
| 51 | bag->value.keybag = p8; | - | ||||||
| 52 | return never executed: bag;return bag;never executed: return bag; | 0 | ||||||
| 53 | } | - | ||||||
| 54 | - | |||||||
| 55 | - | |||||||
| 56 | - | |||||||
| 57 | PKCS12_SAFEBAG * | - | ||||||
| 58 | PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass, int passlen, | - | ||||||
| 59 | unsigned char *salt, int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8) | - | ||||||
| 60 | { | - | ||||||
| 61 | PKCS12_SAFEBAG *bag; | - | ||||||
| 62 | const EVP_CIPHER *pbe_ciph; | - | ||||||
| 63 | - | |||||||
| 64 | - | |||||||
| 65 | if (!(bag = PKCS12_SAFEBAG_new())
| 0 | ||||||
| 66 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,119); | - | ||||||
| 67 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 68 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 69 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 70 | } | - | ||||||
| 71 | - | |||||||
| 72 | bag->type = OBJ_nid2obj(151); | - | ||||||
| 73 | - | |||||||
| 74 | pbe_ciph = EVP_get_cipherbyname(OBJ_nid2sn(pbe_nid)); | - | ||||||
| 75 | - | |||||||
| 76 | if (pbe_ciph
| 0 | ||||||
| 77 | pbe_nid = -1; never executed: pbe_nid = -1; | 0 | ||||||
| 78 | - | |||||||
| 79 | if (!(bag->value.shkeybag = PKCS8_encrypt(pbe_nid, pbe_ciph, pass,
| 0 | ||||||
| 80 | passlen, salt, saltlen, iter, p8))
| 0 | ||||||
| 81 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,132); | - | ||||||
| 82 | PKCS12_SAFEBAG_free(bag); | - | ||||||
| 83 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 84 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 85 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 86 | } | - | ||||||
| 87 | - | |||||||
| 88 | return never executed: bag;return bag;never executed: return bag; | 0 | ||||||
| 89 | } | - | ||||||
| 90 | - | |||||||
| 91 | - | |||||||
| 92 | PKCS7 * | - | ||||||
| 93 | PKCS12_pack_p7data(struct stack_st_PKCS12_SAFEBAG *sk) | - | ||||||
| 94 | { | - | ||||||
| 95 | PKCS7 *p7; | - | ||||||
| 96 | - | |||||||
| 97 | if (!(p7 = PKCS7_new())
| 0 | ||||||
| 98 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,147); | - | ||||||
| 99 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 100 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 101 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 102 | } | - | ||||||
| 103 | p7->type = OBJ_nid2obj(21); | - | ||||||
| 104 | if (!(p7->d.data = ASN1_OCTET_STRING_new())
| 0 | ||||||
| 105 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,152); | - | ||||||
| 106 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||
| 107 | } | - | ||||||
| 108 | - | |||||||
| 109 | if (!ASN1_item_pack(sk, &PKCS12_SAFEBAGS_it, &p7->d.data)
| 0 | ||||||
| 110 | ERR_put_error(35,(0xfff),(100),__FILE__,157); | - | ||||||
| 111 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||
| 112 | } | - | ||||||
| 113 | return never executed: p7;return p7;never executed: return p7; | 0 | ||||||
| 114 | - | |||||||
| 115 | err: | - | ||||||
| 116 | PKCS7_free(p7); | - | ||||||
| 117 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 118 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 119 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 120 | } | - | ||||||
| 121 | - | |||||||
| 122 | - | |||||||
| 123 | struct stack_st_PKCS12_SAFEBAG * | - | ||||||
| 124 | PKCS12_unpack_p7data(PKCS7 *p7) | - | ||||||
| 125 | { | - | ||||||
| 126 | if (!(OBJ_obj2nid((p7)->type) == 21)
| 0 | ||||||
| 127 | ERR_put_error(35,(0xfff),(121),__FILE__,172); | - | ||||||
| 128 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 129 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 130 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 131 | } | - | ||||||
| 132 | return never executed: ASN1_item_unpack(p7->d.data, &PKCS12_SAFEBAGS_it);return ASN1_item_unpack(p7->d.data, &PKCS12_SAFEBAGS_it);never executed: return ASN1_item_unpack(p7->d.data, &PKCS12_SAFEBAGS_it); | 0 | ||||||
| 133 | } | - | ||||||
| 134 | - | |||||||
| 135 | - | |||||||
| 136 | - | |||||||
| 137 | PKCS7 * | - | ||||||
| 138 | PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, | - | ||||||
| 139 | unsigned char *salt, int saltlen, int iter, struct stack_st_PKCS12_SAFEBAG *bags) | - | ||||||
| 140 | { | - | ||||||
| 141 | PKCS7 *p7; | - | ||||||
| 142 | X509_ALGOR *pbe; | - | ||||||
| 143 | const EVP_CIPHER *pbe_ciph; | - | ||||||
| 144 | - | |||||||
| 145 | if (!(p7 = PKCS7_new())
| 0 | ||||||
| 146 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,189); | - | ||||||
| 147 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 148 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 149 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 150 | } | - | ||||||
| 151 | if (!PKCS7_set_type(p7, 26)
| 0 | ||||||
| 152 | ERR_put_error(35,(0xfff),(120),__FILE__,193); | - | ||||||
| 153 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||
| 154 | } | - | ||||||
| 155 | - | |||||||
| 156 | pbe_ciph = EVP_get_cipherbyname(OBJ_nid2sn(pbe_nid)); | - | ||||||
| 157 | - | |||||||
| 158 | if (pbe_ciph
| 0 | ||||||
| 159 | pbe = PKCS5_pbe2_set(pbe_ciph, iter, salt, saltlen); never executed: pbe = PKCS5_pbe2_set(pbe_ciph, iter, salt, saltlen); | 0 | ||||||
| 160 | else | - | ||||||
| 161 | pbe = PKCS5_pbe_set(pbe_nid, iter, salt, saltlen); never executed: pbe = PKCS5_pbe_set(pbe_nid, iter, salt, saltlen); | 0 | ||||||
| 162 | - | |||||||
| 163 | if (!pbe
| 0 | ||||||
| 164 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,205); | - | ||||||
| 165 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||
| 166 | } | - | ||||||
| 167 | X509_ALGOR_free(p7->d.encrypted->enc_data->algorithm); | - | ||||||
| 168 | p7->d.encrypted->enc_data->algorithm = pbe; | - | ||||||
| 169 | ASN1_OCTET_STRING_free(p7->d.encrypted->enc_data->enc_data); | - | ||||||
| 170 | if (!(p7->d.encrypted->enc_data->enc_data = PKCS12_item_i2d_encrypt(
| 0 | ||||||
| 171 | pbe, &PKCS12_SAFEBAGS_it, pass, passlen, bags, 1))
| 0 | ||||||
| 172 | ERR_put_error(35,(0xfff),(103),__FILE__,213); | - | ||||||
| 173 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||
| 174 | } | - | ||||||
| 175 | - | |||||||
| 176 | return never executed: p7;return p7;never executed: return p7; | 0 | ||||||
| 177 | - | |||||||
| 178 | err: | - | ||||||
| 179 | PKCS7_free(p7); | - | ||||||
| 180 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 181 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 182 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 183 | } | - | ||||||
| 184 | - | |||||||
| 185 | struct stack_st_PKCS12_SAFEBAG * | - | ||||||
| 186 | PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, int passlen) | - | ||||||
| 187 | { | - | ||||||
| 188 | if (!(OBJ_obj2nid((p7)->type) == 26)
| 0 | ||||||
| 189 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 190 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 191 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 192 | return never executed: PKCS12_item_decrypt_d2i(p7->d.encrypted->enc_data->algorithm,return PKCS12_item_decrypt_d2i(p7->d.encrypted->enc_data->algorithm, &PKCS12_SAFEBAGS_it, pass, passlen, p7->d.encrypted->enc_data->enc_data, 1);never executed: return PKCS12_item_decrypt_d2i(p7->d.encrypted->enc_data->algorithm, &PKCS12_SAFEBAGS_it, pass, passlen, p7->d.encrypted->enc_data->enc_data, 1); | 0 | ||||||
| 193 | &PKCS12_SAFEBAGS_it, pass, passlen, never executed: return PKCS12_item_decrypt_d2i(p7->d.encrypted->enc_data->algorithm, &PKCS12_SAFEBAGS_it, pass, passlen, p7->d.encrypted->enc_data->enc_data, 1); | 0 | ||||||
| 194 | p7->d.encrypted->enc_data->enc_data, 1); never executed: return PKCS12_item_decrypt_d2i(p7->d.encrypted->enc_data->algorithm, &PKCS12_SAFEBAGS_it, pass, passlen, p7->d.encrypted->enc_data->enc_data, 1); | 0 | ||||||
| 195 | } | - | ||||||
| 196 | - | |||||||
| 197 | PKCS8_PRIV_KEY_INFO * | - | ||||||
| 198 | PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, const char *pass, int passlen) | - | ||||||
| 199 | { | - | ||||||
| 200 | return never executed: PKCS8_decrypt(bag->value.shkeybag, pass, passlen);return PKCS8_decrypt(bag->value.shkeybag, pass, passlen);never executed: return PKCS8_decrypt(bag->value.shkeybag, pass, passlen); | 0 | ||||||
| 201 | } | - | ||||||
| 202 | - | |||||||
| 203 | int | - | ||||||
| 204 | PKCS12_pack_authsafes(PKCS12 *p12, struct stack_st_PKCS7 *safes) | - | ||||||
| 205 | { | - | ||||||
| 206 | if (ASN1_item_pack(safes, &PKCS12_AUTHSAFES_it,
| 0 | ||||||
| 207 | &p12->authsafes->d.data)
| 0 | ||||||
| 208 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||
| 209 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||
| 210 | } | - | ||||||
| 211 | - | |||||||
| 212 | struct stack_st_PKCS7 * | - | ||||||
| 213 | PKCS12_unpack_authsafes(const PKCS12 *p12) | - | ||||||
| 214 | { | - | ||||||
| 215 | if (!(OBJ_obj2nid((p12->authsafes)->type) == 21)
| 0 | ||||||
| 216 | ERR_put_error(35,(0xfff),(121),__FILE__,253); | - | ||||||
| 217 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 218 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 219 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 220 | } | - | ||||||
| 221 | return never executed: ASN1_item_unpack(p12->authsafes->d.data,return ASN1_item_unpack(p12->authsafes->d.data, &PKCS12_AUTHSAFES_it);never executed: return ASN1_item_unpack(p12->authsafes->d.data, &PKCS12_AUTHSAFES_it); | 0 | ||||||
| 222 | &PKCS12_AUTHSAFES_it); never executed: return ASN1_item_unpack(p12->authsafes->d.data, &PKCS12_AUTHSAFES_it); | 0 | ||||||
| 223 | } | - | ||||||
| Switch to Source code | Preprocessed file |