| 140 | } |
| 141 | |
| 142 | static apr_status_t status_get_cert_json_ex( |
| 143 | md_json_t **pjson, |
| 144 | const md_cert_t *cert, |
| 145 | const md_t *md, |
| 146 | md_reg_t *reg, |
| 147 | md_ocsp_reg_t *ocsp, |
| 148 | int with_logs, |
| 149 | apr_pool_t *p) |
| 150 | { |
| 151 | md_json_t *certj, *jobj; |
| 152 | md_timeperiod_t ocsp_valid; |
| 153 | md_ocsp_cert_stat_t cert_stat; |
| 154 | const char *ari_cert_id; |
| 155 | apr_status_t rv; |
| 156 | |
| 157 | if (APR_SUCCESS != (rv = status_get_cert_json(&certj, cert, p))) goto leave; |
| 158 | |
| 159 | if (APR_SUCCESS == md_cert_get_ari_cert_id(&ari_cert_id, cert, p)) |
| 160 | md_json_sets(ari_cert_id, certj, MD_KEY_ARI_CERT_ID, NULL); |
| 161 | |
| 162 | if (md->stapling && ocsp) { |
| 163 | rv = md_ocsp_get_meta(&cert_stat, &ocsp_valid, ocsp, cert, p, md); |
| 164 | if (APR_SUCCESS == rv) { |
| 165 | md_json_sets(md_ocsp_cert_stat_name(cert_stat), certj, MD_KEY_OCSP, MD_KEY_STATUS, NULL); |
| 166 | md_json_set_timeperiod(&ocsp_valid, certj, MD_KEY_OCSP, MD_KEY_VALID, NULL); |
| 167 | } |
| 168 | else if (!APR_STATUS_IS_ENOENT(rv)) goto leave; |
| 169 | rv = APR_SUCCESS; |
| 170 | if (APR_SUCCESS == job_loadj(&jobj, MD_SG_OCSP, md->name, reg, with_logs, p)) { |
| 171 | md_json_setj(jobj, certj, MD_KEY_OCSP, MD_KEY_RENEWAL, NULL); |
| 172 | } |
| 173 | } |
| 174 | |
| 175 | leave: |
| 176 | *pjson = (APR_SUCCESS == rv)? certj : NULL; |
| 177 | return rv; |
| 178 | } |
| 179 | |
| 180 | static int get_cert_count(const md_t *md, int from_staging) |
| 181 | { |
no test coverage detected