| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/ocsp/ocsp_srv.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | - | |||||||||||||
| 3 | - | |||||||||||||
| 4 | - | |||||||||||||
| 5 | - | |||||||||||||
| 6 | - | |||||||||||||
| 7 | - | |||||||||||||
| 8 | - | |||||||||||||
| 9 | int | - | ||||||||||||
| 10 | OCSP_request_onereq_count(OCSP_REQUEST *req) | - | ||||||||||||
| 11 | { | - | ||||||||||||
| 12 | return never executed: sk_num(((_STACK*) (1 ? (req->tbsRequest->requestList) : (struct stack_st_OCSP_ONEREQ*)0)));return sk_num(((_STACK*) (1 ? (req->tbsRequest->requestList) : (struct stack_st_OCSP_ONEREQ*)0)));never executed: return sk_num(((_STACK*) (1 ? (req->tbsRequest->requestList) : (struct stack_st_OCSP_ONEREQ*)0))); | 0 | ||||||||||||
| 13 | } | - | ||||||||||||
| 14 | - | |||||||||||||
| 15 | OCSP_ONEREQ * | - | ||||||||||||
| 16 | OCSP_request_onereq_get0(OCSP_REQUEST *req, int i) | - | ||||||||||||
| 17 | { | - | ||||||||||||
| 18 | return never executed: ((OCSP_ONEREQ *)sk_value(((_STACK*) (1 ? (req->tbsRequest->requestList) : (struct stack_st_OCSP_ONEREQ*)0)), (i)));return ((OCSP_ONEREQ *)sk_value(((_STACK*) (1 ? (req->tbsRequest->requestList) : (struct stack_st_OCSP_ONEREQ*)0)), (i)));never executed: return ((OCSP_ONEREQ *)sk_value(((_STACK*) (1 ? (req->tbsRequest->requestList) : (struct stack_st_OCSP_ONEREQ*)0)), (i))); | 0 | ||||||||||||
| 19 | } | - | ||||||||||||
| 20 | - | |||||||||||||
| 21 | OCSP_CERTID * | - | ||||||||||||
| 22 | OCSP_onereq_get0_id(OCSP_ONEREQ *one) | - | ||||||||||||
| 23 | { | - | ||||||||||||
| 24 | return never executed: one->reqCert;return one->reqCert;never executed: return one->reqCert; | 0 | ||||||||||||
| 25 | } | - | ||||||||||||
| 26 | - | |||||||||||||
| 27 | int | - | ||||||||||||
| 28 | OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, | - | ||||||||||||
| 29 | ASN1_OCTET_STRING **pikeyHash, ASN1_INTEGER **pserial, OCSP_CERTID *cid) | - | ||||||||||||
| 30 | { | - | ||||||||||||
| 31 | if (!cid
| 0 | ||||||||||||
| 32 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 33 | if (pmd
| 0 | ||||||||||||
| 34 | * never executed: pmd = cid->hashAlgorithm->algorithm;*pmd = cid->hashAlgorithm->algorithm;never executed: *pmd = cid->hashAlgorithm->algorithm; | 0 | ||||||||||||
| 35 | if (piNameHash
| 0 | ||||||||||||
| 36 | * never executed: piNameHash = cid->issuerNameHash;*piNameHash = cid->issuerNameHash;never executed: *piNameHash = cid->issuerNameHash; | 0 | ||||||||||||
| 37 | if (pikeyHash
| 0 | ||||||||||||
| 38 | * never executed: pikeyHash = cid->issuerKeyHash;*pikeyHash = cid->issuerKeyHash;never executed: *pikeyHash = cid->issuerKeyHash; | 0 | ||||||||||||
| 39 | if (pserial
| 0 | ||||||||||||
| 40 | * never executed: pserial = cid->serialNumber;*pserial = cid->serialNumber;never executed: *pserial = cid->serialNumber; | 0 | ||||||||||||
| 41 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||
| 42 | } | - | ||||||||||||
| 43 | - | |||||||||||||
| 44 | int | - | ||||||||||||
| 45 | OCSP_request_is_signed(OCSP_REQUEST *req) | - | ||||||||||||
| 46 | { | - | ||||||||||||
| 47 | if (req->optionalSignature
| 0 | ||||||||||||
| 48 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||
| 49 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 50 | } | - | ||||||||||||
| 51 | - | |||||||||||||
| 52 | - | |||||||||||||
| 53 | OCSP_RESPONSE * | - | ||||||||||||
| 54 | OCSP_response_create(int status, OCSP_BASICRESP *bs) | - | ||||||||||||
| 55 | { | - | ||||||||||||
| 56 | OCSP_RESPONSE *rsp = | - | ||||||||||||
| 57 | ((void *)0) | - | ||||||||||||
| 58 | ; | - | ||||||||||||
| 59 | - | |||||||||||||
| 60 | if (!(rsp = OCSP_RESPONSE_new())
| 0 | ||||||||||||
| 61 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 62 | if (!(ASN1_ENUMERATED_set(rsp->responseStatus, status))
| 0 | ||||||||||||
| 63 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 64 | if (!bs
| 0 | ||||||||||||
| 65 | return never executed: rsp;return rsp;never executed: return rsp; | 0 | ||||||||||||
| 66 | if (!(rsp->responseBytes = OCSP_RESPBYTES_new())
| 0 | ||||||||||||
| 67 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 68 | rsp->responseBytes->responseType = OBJ_nid2obj(365); | - | ||||||||||||
| 69 | if (!ASN1_item_pack(bs, &OCSP_BASICRESP_it,
| 0 | ||||||||||||
| 70 | &rsp->responseBytes->response)
| 0 | ||||||||||||
| 71 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 72 | return never executed: rsp;return rsp;never executed: return rsp; | 0 | ||||||||||||
| 73 | - | |||||||||||||
| 74 | err: | - | ||||||||||||
| 75 | if (rsp
| 0 | ||||||||||||
| 76 | OCSP_RESPONSE_free(rsp); never executed: OCSP_RESPONSE_free(rsp); | 0 | ||||||||||||
| 77 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||||||||
| 78 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
| 79 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
| 80 | } | - | ||||||||||||
| 81 | - | |||||||||||||
| 82 | OCSP_SINGLERESP * | - | ||||||||||||
| 83 | OCSP_basic_add1_status(OCSP_BASICRESP *rsp, OCSP_CERTID *cid, int status, | - | ||||||||||||
| 84 | int reason, ASN1_TIME *revtime, ASN1_TIME *thisupd, ASN1_TIME *nextupd) | - | ||||||||||||
| 85 | { | - | ||||||||||||
| 86 | OCSP_SINGLERESP *single = | - | ||||||||||||
| 87 | ((void *)0) | - | ||||||||||||
| 88 | ; | - | ||||||||||||
| 89 | OCSP_CERTSTATUS *cs; | - | ||||||||||||
| 90 | OCSP_REVOKEDINFO *ri; | - | ||||||||||||
| 91 | - | |||||||||||||
| 92 | if (!rsp->tbsResponseData->responses
| 0 | ||||||||||||
| 93 | !(rsp->tbsResponseData->responses = ((struct stack_st_OCSP_SINGLERESP *)sk_new_null()))
| 0 | ||||||||||||
| 94 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 95 | - | |||||||||||||
| 96 | if (!(single = OCSP_SINGLERESP_new())
| 0 | ||||||||||||
| 97 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 98 | - | |||||||||||||
| 99 | if (!ASN1_TIME_to_generalizedtime(thisupd, &single->thisUpdate)
| 0 | ||||||||||||
| 100 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 101 | if (nextupd
| 0 | ||||||||||||
| 102 | !ASN1_TIME_to_generalizedtime(nextupd, &single->nextUpdate)
| 0 | ||||||||||||
| 103 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 104 | - | |||||||||||||
| 105 | OCSP_CERTID_free(single->certId); | - | ||||||||||||
| 106 | - | |||||||||||||
| 107 | if (!(single->certId = OCSP_CERTID_dup(cid))
| 0 | ||||||||||||
| 108 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 109 | - | |||||||||||||
| 110 | cs = single->certStatus; | - | ||||||||||||
| 111 | switch (cs->type = status) { | - | ||||||||||||
| 112 | case never executed: 1:case 1:never executed: case 1: | 0 | ||||||||||||
| 113 | if (!revtime
| 0 | ||||||||||||
| 114 | ERR_put_error(39,(0xfff),(109),__FILE__,171); | - | ||||||||||||
| 115 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 116 | } | - | ||||||||||||
| 117 | if (!(cs->value.revoked = ri = OCSP_REVOKEDINFO_new())
| 0 | ||||||||||||
| 118 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 119 | if (!ASN1_TIME_to_generalizedtime(revtime, &ri->revocationTime)
| 0 | ||||||||||||
| 120 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 121 | if (reason != -1
| 0 | ||||||||||||
| 122 | if (!(ri->revocationReason = ASN1_ENUMERATED_new())
| 0 | ||||||||||||
| 123 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 124 | if (!(ASN1_ENUMERATED_set(ri->revocationReason,
| 0 | ||||||||||||
| 125 | reason))
| 0 | ||||||||||||
| 126 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 127 | } never executed: end of block | 0 | ||||||||||||
| 128 | break; never executed: break; | 0 | ||||||||||||
| 129 | - | |||||||||||||
| 130 | case never executed: 0:case 0:never executed: case 0: | 0 | ||||||||||||
| 131 | cs->value.good = ASN1_NULL_new(); | - | ||||||||||||
| 132 | break; never executed: break; | 0 | ||||||||||||
| 133 | - | |||||||||||||
| 134 | case never executed: 2:case 2:never executed: case 2: | 0 | ||||||||||||
| 135 | cs->value.unknown = ASN1_NULL_new(); | - | ||||||||||||
| 136 | break; never executed: break; | 0 | ||||||||||||
| 137 | - | |||||||||||||
| 138 | default never executed: :default:never executed: default: | 0 | ||||||||||||
| 139 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 140 | } | - | ||||||||||||
| 141 | if (!(sk_push(((_STACK*) (1 ? (rsp->tbsResponseData->responses) : (struct stack_st_OCSP_SINGLERESP*)0)), ((void*) (1 ? (single) : (OCSP_SINGLERESP*)0))))
| 0 | ||||||||||||
| 142 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 143 | return never executed: single;return single;never executed: return single; | 0 | ||||||||||||
| 144 | - | |||||||||||||
| 145 | err: | - | ||||||||||||
| 146 | OCSP_SINGLERESP_free(single); | - | ||||||||||||
| 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 | - | |||||||||||||
| 152 | - | |||||||||||||
| 153 | int | - | ||||||||||||
| 154 | OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert) | - | ||||||||||||
| 155 | { | - | ||||||||||||
| 156 | if (!resp->certs
| 0 | ||||||||||||
| 157 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 158 | - | |||||||||||||
| 159 | if (!sk_push(((_STACK*) (1 ? (resp->certs) : (struct stack_st_X509*)0)), ((void*) (1 ? (cert) : (X509*)0)))
| 0 | ||||||||||||
| 160 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 161 | CRYPTO_add_lock(&cert->references,1,3,__FILE__,216); | - | ||||||||||||
| 162 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||
| 163 | } | - | ||||||||||||
| 164 | - | |||||||||||||
| 165 | int | - | ||||||||||||
| 166 | OCSP_basic_sign(OCSP_BASICRESP *brsp, X509 *signer, EVP_PKEY *key, | - | ||||||||||||
| 167 | const EVP_MD *dgst, struct stack_st_X509 *certs, unsigned long flags) | - | ||||||||||||
| 168 | { | - | ||||||||||||
| 169 | int i; | - | ||||||||||||
| 170 | OCSP_RESPID *rid; | - | ||||||||||||
| 171 | - | |||||||||||||
| 172 | if (!X509_check_private_key(signer, key)
| 0 | ||||||||||||
| 173 | ERR_put_error(39,(0xfff),(110),__FILE__,228); | - | ||||||||||||
| 174 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 175 | } | - | ||||||||||||
| 176 | - | |||||||||||||
| 177 | if (!(flags & 0x1)
| 0 | ||||||||||||
| 178 | if (!OCSP_basic_add1_cert(brsp, signer)
| 0 | ||||||||||||
| 179 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 180 | for (i = 0; i < sk_num(((_STACK*) (1 ? (certs) : (struct stack_st_X509*)0)))
| 0 | ||||||||||||
| 181 | X509 *tmpcert = ((X509 *)sk_value(((_STACK*) (1 ? (certs) : (struct stack_st_X509*)0)), (i))); | - | ||||||||||||
| 182 | if (!OCSP_basic_add1_cert(brsp, tmpcert)
| 0 | ||||||||||||
| 183 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 184 | } never executed: end of block | 0 | ||||||||||||
| 185 | } never executed: end of block | 0 | ||||||||||||
| 186 | - | |||||||||||||
| 187 | rid = brsp->tbsResponseData->responderId; | - | ||||||||||||
| 188 | if (flags & 0x400
| 0 | ||||||||||||
| 189 | unsigned char md[20]; | - | ||||||||||||
| 190 | - | |||||||||||||
| 191 | X509_pubkey_digest(signer, EVP_sha1(), md, | - | ||||||||||||
| 192 | ((void *)0) | - | ||||||||||||
| 193 | ); | - | ||||||||||||
| 194 | if (!(rid->value.byKey = ASN1_OCTET_STRING_new())
| 0 | ||||||||||||
| 195 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 196 | if (!(ASN1_OCTET_STRING_set(rid->value.byKey, md,
| 0 | ||||||||||||
| 197 | 20))
| 0 | ||||||||||||
| 198 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 199 | rid->type = 1; | - | ||||||||||||
| 200 | } never executed: else {end of block | 0 | ||||||||||||
| 201 | if (!X509_NAME_set(&rid->value.byName,
| 0 | ||||||||||||
| 202 | X509_get_subject_name(signer))
| 0 | ||||||||||||
| 203 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 204 | rid->type = 0; | - | ||||||||||||
| 205 | } never executed: end of block | 0 | ||||||||||||
| 206 | - | |||||||||||||
| 207 | if (!(flags & 0x800)
| 0 | ||||||||||||
| 208 | !ASN1_GENERALIZEDTIME_set(brsp->tbsResponseData->producedAt, time(
| 0 | ||||||||||||
| 209 | ((void *)0)
| 0 | ||||||||||||
| 210 | ))
| 0 | ||||||||||||
| 211 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 212 | - | |||||||||||||
| 213 | - | |||||||||||||
| 214 | - | |||||||||||||
| 215 | - | |||||||||||||
| 216 | if (!ASN1_item_sign(&OCSP_RESPDATA_it,brsp->signatureAlgorithm,
| 0 | ||||||||||||
| 217 | ((void *)0)
| 0 | ||||||||||||
| 218 | , brsp->signature,brsp->tbsResponseData,key,dgst)
| 0 | ||||||||||||
| 219 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 220 | - | |||||||||||||
| 221 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||
| 222 | - | |||||||||||||
| 223 | err: | - | ||||||||||||
| 224 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 225 | } | - | ||||||||||||
| Switch to Source code | Preprocessed file |