MCPcopy Create free account
hub / github.com/apache/httpd / pubcert_load

Function pubcert_load

modules/md/md_reg.c:574–621  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

572/* certificate related */
573
574static apr_status_t pubcert_load(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
575{
576 md_reg_t *reg = baton;
577 apr_array_header_t *certs;
578 md_pubcert_t *pubcert, **ppubcert;
579 const md_t *md;
580 int index;
581 const md_cert_t *cert;
582 md_cert_state_t cert_state;
583 md_store_group_t group;
584 apr_status_t rv;
585
586 ppubcert = va_arg(ap, md_pubcert_t **);
587 group = (md_store_group_t)va_arg(ap, int);
588 md = va_arg(ap, const md_t *);
589 index = va_arg(ap, int);
590
591 if (md->cert_files && md->cert_files->nelts) {
592 rv = md_chain_fload(&certs, p, APR_ARRAY_IDX(md->cert_files, index, const char *));
593 }
594 else {
595 md_pkey_spec_t *spec = md_pkeys_spec_get(md->pks, index);;
596 rv = md_pubcert_load(reg->store, group, md->name, spec, &certs, p);
597 }
598 if (APR_SUCCESS != rv) goto leave;
599 if (certs->nelts == 0) {
600 rv = APR_ENOENT;
601 goto leave;
602 }
603
604 pubcert = apr_pcalloc(p, sizeof(*pubcert));
605 pubcert->certs = certs;
606 cert = APR_ARRAY_IDX(certs, 0, const md_cert_t *);
607 if (APR_SUCCESS != (rv = md_cert_get_alt_names(&pubcert->alt_names, cert, p))) goto leave;
608 switch ((cert_state = md_cert_state_get(cert))) {
609 case MD_CERT_VALID:
610 case MD_CERT_EXPIRED:
611 break;
612 default:
613 md_log_perror(MD_LOG_MARK, MD_LOG_ERR, APR_EINVAL, ptemp,
614 "md %s has unexpected cert state: %d", md->name, cert_state);
615 rv = APR_ENOTIMPL;
616 break;
617 }
618leave:
619 *ppubcert = (APR_SUCCESS == rv)? pubcert : NULL;
620 return rv;
621}
622
623apr_status_t md_reg_get_pubcert(const md_pubcert_t **ppubcert, md_reg_t *reg,
624 const md_t *md, int i, apr_pool_t *p)

Callers

nothing calls this directly

Calls 6

md_chain_floadFunction · 0.85
md_pkeys_spec_getFunction · 0.85
md_pubcert_loadFunction · 0.85
md_cert_get_alt_namesFunction · 0.85
md_cert_state_getFunction · 0.85
md_log_perrorFunction · 0.85

Tested by

no test coverage detected