| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/evp/evp_pbe.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | - | |||||||||||||
| 3 | - | |||||||||||||
| 4 | - | |||||||||||||
| 5 | - | |||||||||||||
| 6 | - | |||||||||||||
| 7 | struct evp_pbe_st { | - | ||||||||||||
| 8 | int pbe_type; | - | ||||||||||||
| 9 | int pbe_nid; | - | ||||||||||||
| 10 | int cipher_nid; | - | ||||||||||||
| 11 | int md_nid; | - | ||||||||||||
| 12 | EVP_PBE_KEYGEN *keygen; | - | ||||||||||||
| 13 | }; | - | ||||||||||||
| 14 | - | |||||||||||||
| 15 | static struct stack_st_EVP_PBE_CTL *pbe_algs; | - | ||||||||||||
| 16 | - | |||||||||||||
| 17 | static const EVP_PBE_CTL builtin_pbe[] = { | - | ||||||||||||
| 18 | {0x0, 9, | - | ||||||||||||
| 19 | 31, 3, PKCS5_PBE_keyivgen}, | - | ||||||||||||
| 20 | {0x0, 10, | - | ||||||||||||
| 21 | 31, 4, PKCS5_PBE_keyivgen}, | - | ||||||||||||
| 22 | {0x0, 68, | - | ||||||||||||
| 23 | 166, 64, PKCS5_PBE_keyivgen}, | - | ||||||||||||
| 24 | - | |||||||||||||
| 25 | {0x0, 69, -1, -1, PKCS5_v2_PBKDF2_keyivgen}, | - | ||||||||||||
| 26 | - | |||||||||||||
| 27 | {0x0, 144, | - | ||||||||||||
| 28 | 5, 64, PKCS12_PBE_keyivgen}, | - | ||||||||||||
| 29 | {0x0, 145, | - | ||||||||||||
| 30 | 97, 64, PKCS12_PBE_keyivgen}, | - | ||||||||||||
| 31 | {0x0, 146, | - | ||||||||||||
| 32 | 44, 64, PKCS12_PBE_keyivgen}, | - | ||||||||||||
| 33 | {0x0, 147, | - | ||||||||||||
| 34 | 43, 64, PKCS12_PBE_keyivgen}, | - | ||||||||||||
| 35 | {0x0, 148, | - | ||||||||||||
| 36 | 37, 64, PKCS12_PBE_keyivgen}, | - | ||||||||||||
| 37 | {0x0, 149, | - | ||||||||||||
| 38 | 98, 64, PKCS12_PBE_keyivgen}, | - | ||||||||||||
| 39 | - | |||||||||||||
| 40 | {0x0, 161, -1, -1, PKCS5_v2_PBE_keyivgen}, | - | ||||||||||||
| 41 | - | |||||||||||||
| 42 | {0x0, 168, | - | ||||||||||||
| 43 | 166, 3, PKCS5_PBE_keyivgen}, | - | ||||||||||||
| 44 | {0x0, 169, | - | ||||||||||||
| 45 | 166, 4, PKCS5_PBE_keyivgen}, | - | ||||||||||||
| 46 | {0x0, 170, | - | ||||||||||||
| 47 | 31, 64, PKCS5_PBE_keyivgen}, | - | ||||||||||||
| 48 | - | |||||||||||||
| 49 | {0x1, 163, -1, 64, 0}, | - | ||||||||||||
| 50 | {0x1, 780, -1, 4, 0}, | - | ||||||||||||
| 51 | {0x1, 781, -1, 64, 0}, | - | ||||||||||||
| 52 | {0x1, 797, -1, 4, 0}, | - | ||||||||||||
| 53 | {0x1, 798, -1, 675, 0}, | - | ||||||||||||
| 54 | {0x1, 799, -1, 672, 0}, | - | ||||||||||||
| 55 | {0x1, 800, -1, 673, 0}, | - | ||||||||||||
| 56 | {0x1, 801, -1, 674, 0}, | - | ||||||||||||
| 57 | {0x1, 810, -1, 809, 0}, | - | ||||||||||||
| 58 | {0x1, 988, -1, | - | ||||||||||||
| 59 | 982, 0}, | - | ||||||||||||
| 60 | {0x1, 989, -1, | - | ||||||||||||
| 61 | 983, 0}, | - | ||||||||||||
| 62 | {0x1, 1193, -1, 1094, 0}, | - | ||||||||||||
| 63 | {0x1, 1194, -1, 1095, 0}, | - | ||||||||||||
| 64 | {0x2, 69, -1, -1, PKCS5_v2_PBKDF2_keyivgen}, | - | ||||||||||||
| 65 | - | |||||||||||||
| 66 | {0x2, 973, -1, -1, PKCS5_v2_scrypt_keyivgen} | - | ||||||||||||
| 67 | - | |||||||||||||
| 68 | }; | - | ||||||||||||
| 69 | - | |||||||||||||
| 70 | int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, | - | ||||||||||||
| 71 | ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de) | - | ||||||||||||
| 72 | { | - | ||||||||||||
| 73 | const EVP_CIPHER *cipher; | - | ||||||||||||
| 74 | const EVP_MD *md; | - | ||||||||||||
| 75 | int cipher_nid, md_nid; | - | ||||||||||||
| 76 | EVP_PBE_KEYGEN *keygen; | - | ||||||||||||
| 77 | - | |||||||||||||
| 78 | if (!EVP_PBE_find(0x0, OBJ_obj2nid(pbe_obj),
| 0 | ||||||||||||
| 79 | &cipher_nid, &md_nid, &keygen)
| 0 | ||||||||||||
| 80 | char obj_tmp[80]; | - | ||||||||||||
| 81 | ERR_put_error(6,(116),(121),__FILE__,95); | - | ||||||||||||
| 82 | if (!pbe_obj
| 0 | ||||||||||||
| 83 | OPENSSL_strlcpy(obj_tmp, "NULL", sizeof(obj_tmp)); never executed: OPENSSL_strlcpy(obj_tmp, "NULL", sizeof(obj_tmp)); | 0 | ||||||||||||
| 84 | else | - | ||||||||||||
| 85 | i2t_ASN1_OBJECT(obj_tmp, sizeof(obj_tmp), pbe_obj); never executed: i2t_ASN1_OBJECT(obj_tmp, sizeof(obj_tmp), pbe_obj); | 0 | ||||||||||||
| 86 | ERR_add_error_data(2, "TYPE=", obj_tmp); | - | ||||||||||||
| 87 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 88 | } | - | ||||||||||||
| 89 | - | |||||||||||||
| 90 | if (!pass
| 0 | ||||||||||||
| 91 | passlen = 0; never executed: passlen = 0; | 0 | ||||||||||||
| 92 | else if (passlen == -1
| 0 | ||||||||||||
| 93 | passlen = strlen(pass); never executed: passlen = strlen(pass); | 0 | ||||||||||||
| 94 | - | |||||||||||||
| 95 | if (cipher_nid == -1
| 0 | ||||||||||||
| 96 | cipher = never executed: cipher = ((void *)0) ; | 0 | ||||||||||||
| 97 | ((void *)0) never executed: cipher = ((void *)0) ; | 0 | ||||||||||||
| 98 | ; never executed: cipher = ((void *)0) ; | 0 | ||||||||||||
| 99 | else { | - | ||||||||||||
| 100 | cipher = EVP_get_cipherbyname(OBJ_nid2sn(cipher_nid)); | - | ||||||||||||
| 101 | if (!cipher
| 0 | ||||||||||||
| 102 | ERR_put_error(6,(116),(160),__FILE__,114); | - | ||||||||||||
| 103 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 104 | } | - | ||||||||||||
| 105 | } never executed: end of block | 0 | ||||||||||||
| 106 | - | |||||||||||||
| 107 | if (md_nid == -1
| 0 | ||||||||||||
| 108 | md = never executed: md = ((void *)0) ; | 0 | ||||||||||||
| 109 | ((void *)0) never executed: md = ((void *)0) ; | 0 | ||||||||||||
| 110 | ; never executed: md = ((void *)0) ; | 0 | ||||||||||||
| 111 | else { | - | ||||||||||||
| 112 | md = EVP_get_digestbyname(OBJ_nid2sn(md_nid)); | - | ||||||||||||
| 113 | if (!md
| 0 | ||||||||||||
| 114 | ERR_put_error(6,(116),(161),__FILE__,124); | - | ||||||||||||
| 115 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 116 | } | - | ||||||||||||
| 117 | } never executed: end of block | 0 | ||||||||||||
| 118 | - | |||||||||||||
| 119 | if (!keygen(ctx, pass, passlen, param, cipher, md, en_de)
| 0 | ||||||||||||
| 120 | ERR_put_error(6,(116),(120),__FILE__,130); | - | ||||||||||||
| 121 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 122 | } | - | ||||||||||||
| 123 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||
| 124 | } | - | ||||||||||||
| 125 | - | |||||||||||||
| 126 | static int pbe2_cmp_BSEARCH_CMP_FN(const void *, const void *); static int pbe2_cmp(EVP_PBE_CTL const *, EVP_PBE_CTL const *); static EVP_PBE_CTL * OBJ_bsearch_pbe2(EVP_PBE_CTL *key, EVP_PBE_CTL const *base, int num); | - | ||||||||||||
| 127 | - | |||||||||||||
| 128 | static int pbe2_cmp(const EVP_PBE_CTL *pbe1, const EVP_PBE_CTL *pbe2) | - | ||||||||||||
| 129 | { | - | ||||||||||||
| 130 | int ret = pbe1->pbe_type - pbe2->pbe_type; | - | ||||||||||||
| 131 | if (ret
| 20-99 | ||||||||||||
| 132 | return executed 20 times by 1 test: ret;return ret;Executed by:
executed 20 times by 1 test: return ret;Executed by:
| 20 | ||||||||||||
| 133 | else | - | ||||||||||||
| 134 | return executed 99 times by 1 test: pbe1->pbe_nid - pbe2->pbe_nid;return pbe1->pbe_nid - pbe2->pbe_nid;Executed by:
executed 99 times by 1 test: return pbe1->pbe_nid - pbe2->pbe_nid;Executed by:
| 99 | ||||||||||||
| 135 | } | - | ||||||||||||
| 136 | - | |||||||||||||
| 137 | static int pbe2_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) { EVP_PBE_CTL const *a = a_; EVP_PBE_CTL const *b = b_; return executed 119 times by 1 test: pbe2_cmp(a,b);return pbe2_cmp(a,b);Executed by:
executed 119 times by 1 test: } static EVP_PBE_CTL *OBJ_bsearch_pbe2(EVP_PBE_CTL *key, EVP_PBE_CTL const *base, int num) { returnreturn pbe2_cmp(a,b);Executed by:
executed 29 times by 1 test: (EVP_PBE_CTL *)OBJ_bsearch_(key, base, num, sizeof(EVP_PBE_CTL), pbe2_cmp_BSEARCH_CMP_FN);return (EVP_PBE_CTL *)OBJ_bsearch_(key, base, num, sizeof(EVP_PBE_CTL), pbe2_cmp_BSEARCH_CMP_FN);Executed by:
executed 29 times by 1 test: } extern void dummy_prototype(void);return (EVP_PBE_CTL *)OBJ_bsearch_(key, base, num, sizeof(EVP_PBE_CTL), pbe2_cmp_BSEARCH_CMP_FN);Executed by:
| 29-119 | ||||||||||||
| 138 | - | |||||||||||||
| 139 | static int pbe_cmp(const EVP_PBE_CTL *const *a, const EVP_PBE_CTL *const *b) | - | ||||||||||||
| 140 | { | - | ||||||||||||
| 141 | int ret = (*a)->pbe_type - (*b)->pbe_type; | - | ||||||||||||
| 142 | if (ret
| 0 | ||||||||||||
| 143 | return never executed: ret;return ret;never executed: return ret; | 0 | ||||||||||||
| 144 | else | - | ||||||||||||
| 145 | return never executed: (*a)->pbe_nid - (*b)->pbe_nid;return (*a)->pbe_nid - (*b)->pbe_nid;never executed: return (*a)->pbe_nid - (*b)->pbe_nid; | 0 | ||||||||||||
| 146 | } | - | ||||||||||||
| 147 | - | |||||||||||||
| 148 | - | |||||||||||||
| 149 | - | |||||||||||||
| 150 | int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, | - | ||||||||||||
| 151 | int md_nid, EVP_PBE_KEYGEN *keygen) | - | ||||||||||||
| 152 | { | - | ||||||||||||
| 153 | EVP_PBE_CTL *pbe_tmp; | - | ||||||||||||
| 154 | - | |||||||||||||
| 155 | if (pbe_algs ==
| 0 | ||||||||||||
| 156 | ((void *)0)
| 0 | ||||||||||||
| 157 | ) { | - | ||||||||||||
| 158 | pbe_algs = sk_EVP_PBE_CTL_new(pbe_cmp); | - | ||||||||||||
| 159 | if (pbe_algs ==
| 0 | ||||||||||||
| 160 | ((void *)0)
| 0 | ||||||||||||
| 161 | ) | - | ||||||||||||
| 162 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 163 | } never executed: end of block | 0 | ||||||||||||
| 164 | - | |||||||||||||
| 165 | if ((
| 0 | ||||||||||||
| 166 | ((void *)0)
| 0 | ||||||||||||
| 167 | ) | - | ||||||||||||
| 168 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 169 | - | |||||||||||||
| 170 | pbe_tmp->pbe_type = pbe_type; | - | ||||||||||||
| 171 | pbe_tmp->pbe_nid = pbe_nid; | - | ||||||||||||
| 172 | pbe_tmp->cipher_nid = cipher_nid; | - | ||||||||||||
| 173 | pbe_tmp->md_nid = md_nid; | - | ||||||||||||
| 174 | pbe_tmp->keygen = keygen; | - | ||||||||||||
| 175 | - | |||||||||||||
| 176 | if (!sk_EVP_PBE_CTL_push(pbe_algs, pbe_tmp)
| 0 | ||||||||||||
| 177 | CRYPTO_free(pbe_tmp, __FILE__, 181); | - | ||||||||||||
| 178 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 179 | } | - | ||||||||||||
| 180 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||
| 181 | - | |||||||||||||
| 182 | err: | - | ||||||||||||
| 183 | ERR_put_error(6,(160),((1|64)),__FILE__,187); | - | ||||||||||||
| 184 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 185 | } | - | ||||||||||||
| 186 | - | |||||||||||||
| 187 | int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, | - | ||||||||||||
| 188 | EVP_PBE_KEYGEN *keygen) | - | ||||||||||||
| 189 | { | - | ||||||||||||
| 190 | int cipher_nid, md_nid; | - | ||||||||||||
| 191 | - | |||||||||||||
| 192 | if (cipher
| 0 | ||||||||||||
| 193 | cipher_nid = EVP_CIPHER_nid(cipher); never executed: cipher_nid = EVP_CIPHER_nid(cipher); | 0 | ||||||||||||
| 194 | else | - | ||||||||||||
| 195 | cipher_nid = -1; never executed: cipher_nid = -1; | 0 | ||||||||||||
| 196 | if (md
| 0 | ||||||||||||
| 197 | md_nid = EVP_MD_type(md); never executed: md_nid = EVP_MD_type(md); | 0 | ||||||||||||
| 198 | else | - | ||||||||||||
| 199 | md_nid = -1; never executed: md_nid = -1; | 0 | ||||||||||||
| 200 | - | |||||||||||||
| 201 | return never executed: EVP_PBE_alg_add_type(0x0, nid,return EVP_PBE_alg_add_type(0x0, nid, cipher_nid, md_nid, keygen);never executed: return EVP_PBE_alg_add_type(0x0, nid, cipher_nid, md_nid, keygen); | 0 | ||||||||||||
| 202 | cipher_nid, md_nid, keygen); never executed: return EVP_PBE_alg_add_type(0x0, nid, cipher_nid, md_nid, keygen); | 0 | ||||||||||||
| 203 | } | - | ||||||||||||
| 204 | - | |||||||||||||
| 205 | int EVP_PBE_find(int type, int pbe_nid, | - | ||||||||||||
| 206 | int *pcnid, int *pmnid, EVP_PBE_KEYGEN **pkeygen) | - | ||||||||||||
| 207 | { | - | ||||||||||||
| 208 | EVP_PBE_CTL *pbetmp = | - | ||||||||||||
| 209 | ((void *)0) | - | ||||||||||||
| 210 | , pbelu; | - | ||||||||||||
| 211 | int i; | - | ||||||||||||
| 212 | if (pbe_nid == 0
| 0-29 | ||||||||||||
| 213 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 214 | - | |||||||||||||
| 215 | pbelu.pbe_type = type; | - | ||||||||||||
| 216 | pbelu.pbe_nid = pbe_nid; | - | ||||||||||||
| 217 | - | |||||||||||||
| 218 | if (pbe_algs !=
| 0-29 | ||||||||||||
| 219 | ((void *)0)
| 0-29 | ||||||||||||
| 220 | ) { | - | ||||||||||||
| 221 | i = sk_EVP_PBE_CTL_find(pbe_algs, &pbelu); | - | ||||||||||||
| 222 | pbetmp = sk_EVP_PBE_CTL_value(pbe_algs, i); | - | ||||||||||||
| 223 | } never executed: end of block | 0 | ||||||||||||
| 224 | if (pbetmp ==
| 0-29 | ||||||||||||
| 225 | ((void *)0)
| 0-29 | ||||||||||||
| 226 | ) { | - | ||||||||||||
| 227 | pbetmp = OBJ_bsearch_pbe2(&pbelu, builtin_pbe, (sizeof(builtin_pbe)/sizeof((builtin_pbe)[0]))); | - | ||||||||||||
| 228 | } executed 29 times by 1 test: end of blockExecuted by:
| 29 | ||||||||||||
| 229 | if (pbetmp ==
| 0-29 | ||||||||||||
| 230 | ((void *)0)
| 0-29 | ||||||||||||
| 231 | ) | - | ||||||||||||
| 232 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 233 | if (pcnid
| 0-29 | ||||||||||||
| 234 | * never executed: pcnid = pbetmp->cipher_nid;*pcnid = pbetmp->cipher_nid;never executed: *pcnid = pbetmp->cipher_nid; | 0 | ||||||||||||
| 235 | if (pmnid
| 0-29 | ||||||||||||
| 236 | * never executed: pmnid = pbetmp->md_nid;*pmnid = pbetmp->md_nid;never executed: *pmnid = pbetmp->md_nid; | 0 | ||||||||||||
| 237 | if (pkeygen
| 0-29 | ||||||||||||
| 238 | * never executed: pkeygen = pbetmp->keygen;*pkeygen = pbetmp->keygen;never executed: *pkeygen = pbetmp->keygen; | 0 | ||||||||||||
| 239 | return executed 29 times by 1 test: 1;return 1;Executed by:
executed 29 times by 1 test: return 1;Executed by:
| 29 | ||||||||||||
| 240 | } | - | ||||||||||||
| 241 | - | |||||||||||||
| 242 | static void free_evp_pbe_ctl(EVP_PBE_CTL *pbe) | - | ||||||||||||
| 243 | { | - | ||||||||||||
| 244 | CRYPTO_free(pbe, __FILE__, 240); | - | ||||||||||||
| 245 | } never executed: end of block | 0 | ||||||||||||
| 246 | - | |||||||||||||
| 247 | void EVP_PBE_cleanup(void) | - | ||||||||||||
| 248 | { | - | ||||||||||||
| 249 | sk_EVP_PBE_CTL_pop_free(pbe_algs, free_evp_pbe_ctl); | - | ||||||||||||
| 250 | pbe_algs = | - | ||||||||||||
| 251 | ((void *)0) | - | ||||||||||||
| 252 | ; | - | ||||||||||||
| 253 | } executed 2076 times by 12 tests: end of blockExecuted by:
| 2076 | ||||||||||||
| 254 | - | |||||||||||||
| 255 | int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num) | - | ||||||||||||
| 256 | { | - | ||||||||||||
| 257 | const EVP_PBE_CTL *tpbe; | - | ||||||||||||
| 258 | - | |||||||||||||
| 259 | if (num >= (sizeof(builtin_pbe)/sizeof((builtin_pbe)[0]))
| 1-29 | ||||||||||||
| 260 | return executed 1 time by 1 test: 0;return 0;Executed by:
executed 1 time by 1 test: return 0;Executed by:
| 1 | ||||||||||||
| 261 | - | |||||||||||||
| 262 | tpbe = builtin_pbe + num; | - | ||||||||||||
| 263 | if (ptype
| 0-29 | ||||||||||||
| 264 | * executed 29 times by 1 test: ptype = tpbe->pbe_type;*ptype = tpbe->pbe_type;Executed by:
executed 29 times by 1 test: *ptype = tpbe->pbe_type;Executed by:
| 29 | ||||||||||||
| 265 | if (ppbe_nid
| 0-29 | ||||||||||||
| 266 | * executed 29 times by 1 test: ppbe_nid = tpbe->pbe_nid;*ppbe_nid = tpbe->pbe_nid;Executed by:
executed 29 times by 1 test: *ppbe_nid = tpbe->pbe_nid;Executed by:
| 29 | ||||||||||||
| 267 | return executed 29 times by 1 test: 1;return 1;Executed by:
executed 29 times by 1 test: return 1;Executed by:
| 29 | ||||||||||||
| 268 | } | - | ||||||||||||
| Switch to Source code | Preprocessed file |