Home | History | Annotate | Download | only in asn1

Lines Matching refs:crl

68 static void setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp);
76 static int def_crl_verify(X509_CRL *crl, EVP_PKEY *r);
77 static int def_crl_lookup(X509_CRL *crl,
122 /* Set CRL entry issuer according to CRL certificate issuer extension.
123 * Check for unhandled critical CRL entry extensions.
126 static int crl_set_issuers(X509_CRL *crl)
133 revoked = X509_CRL_get_REVOKED(crl);
147 crl->flags |= EXFLAG_INVALID;
154 if (!crl->issuers)
156 crl->issuers = sk_GENERAL_NAMES_new_null();
157 if (!crl->issuers)
160 if (!sk_GENERAL_NAMES_push(crl->issuers, gtmp))
169 crl->flags |= EXFLAG_INVALID;
181 /* Check for critical CRL entry extensions */
193 crl->flags |= EXFLAG_CRITICAL;
206 * and hash of the whole CRL.
211 X509_CRL *crl = (X509_CRL *)*pval;
219 crl->idp = NULL;
220 crl->akid = NULL;
221 crl->flags = 0;
222 crl->idp_flags = 0;
223 crl->idp_reasons = CRLDP_ALL_REASONS;
224 crl->meth = default_crl_method;
225 crl->meth_data = NULL;
226 crl->issuers = NULL;
227 crl->crl_number = NULL;
228 crl->base_crl_number = NULL;
233 X509_CRL_digest(crl, EVP_sha1(), crl->sha1_hash, NULL);
235 crl->idp = X509_CRL_get_ext_d2i(crl,
237 if (crl->idp)
238 setup_idp(crl, crl->idp);
240 crl->akid = X509_CRL_get_ext_d2i(crl,
243 crl->crl_number = X509_CRL_get_ext_d2i(crl,
246 crl->base_crl_number = X509_CRL_get_ext_d2i(crl,
248 /* Delta CRLs must have CRL number */
249 if (crl->base_crl_number && !crl->crl_number)
250 crl->flags |= EXFLAG_INVALID;
252 /* See if we have any unhandled critical CRL extensions and
260 exts = crl->crl->extensions;
268 crl->flags |= EXFLAG_FRESHEST;
275 crl->flags |= EXFLAG_CRITICAL;
281 if (!crl_set_issuers(crl))
284 if (crl->meth->crl_init)
286 if (crl->meth->crl_init(crl) == 0)
292 if (crl->meth->crl_free)
294 if (!crl->meth->crl_free(crl))
297 if (crl->akid)
298 AUTHORITY_KEYID_free(crl->akid);
299 if (crl->idp)
300 ISSUING_DIST_POINT_free(crl->idp);
301 ASN1_INTEGER_free(crl->crl_number);
302 ASN1_INTEGER_free(crl->base_crl_number);
303 sk_GENERAL_NAMES_pop_free(crl->issuers, GENERAL_NAMES_free);
311 static void setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp)
315 crl->idp_flags |= IDP_PRESENT;
319 crl->idp_flags |= IDP_ONLYUSER;
324 crl->idp_flags |= IDP_ONLYCA;
329 crl->idp_flags |= IDP_ONLYATTR;
333 crl->idp_flags |= IDP_INVALID;
336 crl->idp_flags |= IDP_INDIRECT;
340 crl->idp_flags |= IDP_REASONS;
342 crl->idp_reasons = idp->onlysomereasons->data[0];
344 crl->idp_reasons |=
346 crl->idp_reasons &= CRLDP_ALL_REASONS;
349 DIST_POINT_set_dpname(idp->distpoint, X509_CRL_get_issuer(crl));
353 ASN1_SIMPLE(X509_CRL, crl, X509_CRL_INFO),
371 int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev)
374 inf = crl->crl;
385 int X509_CRL_verify(X509_CRL *crl, EVP_PKEY *r)
387 if (crl->meth->crl_verify)
388 return crl->meth->crl_verify(crl, r);
392 int X509_CRL_get0_by_serial(X509_CRL *crl,
395 if (crl->meth->crl_lookup)
396 return crl->meth->crl_lookup(crl, ret, serial, NULL);
400 int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x)
402 if (crl->meth->crl_lookup)
403 return crl->meth->crl_lookup(crl, ret,
409 static int def_crl_verify(X509_CRL *crl, EVP_PKEY *r)
412 crl->sig_alg, crl->signature,crl->crl,r));
415 static int crl_revoked_issuer_match(X509_CRL *crl, X509_NAME *nm,
424 if (!X509_NAME_cmp(nm, X509_CRL_get_issuer(crl)))
430 nm = X509_CRL_get_issuer(crl);
444 static int def_crl_lookup(X509_CRL *crl,
453 if (!sk_X509_REVOKED_is_sorted(crl->crl->revoked))
456 sk_X509_REVOKED_sort(crl->crl->revoked);
459 idx = sk_X509_REVOKED_find(crl->crl->revoked, &rtmp);
463 for(;idx < sk_X509_REVOKED_num(crl->crl->revoked); idx++)
465 rev = sk_X509_REVOKED_value(crl->crl->revoked, idx);
468 if (crl_revoked_issuer_match(crl, issuer, rev))
489 int (*crl_init)(X509_CRL *crl),
490 int (*crl_free)(X509_CRL *crl),
491 int (*crl_lookup)(X509_CRL *crl, X509_REVOKED **ret,
493 int (*crl_verify)(X509_CRL *crl, EVP_PKEY *pk))
514 void X509_CRL_set_meth_data(X509_CRL *crl, void *dat)
516 crl->meth_data = dat;
519 void *X509_CRL_get_meth_data(X509_CRL *crl)
521 return crl->meth_data;