| 197 | } |
| 198 | |
| 199 | static apr_status_t ostat_from_json(md_ocsp_cert_stat_t *pstat, |
| 200 | md_data_t *resp_der, md_timeperiod_t *resp_valid, |
| 201 | md_json_t *json, apr_pool_t *p) |
| 202 | { |
| 203 | const char *s; |
| 204 | md_timeperiod_t valid; |
| 205 | apr_status_t rv = APR_ENOENT; |
| 206 | |
| 207 | memset(&valid, 0, sizeof(valid)); |
| 208 | memset(resp_der, 0, sizeof(*resp_der)); |
| 209 | memset(resp_valid, 0, sizeof(*resp_valid)); |
| 210 | s = md_json_dups(p, json, MD_KEY_VALID, MD_KEY_FROM, NULL); |
| 211 | if (s && *s) valid.start = apr_date_parse_rfc(s); |
| 212 | s = md_json_dups(p, json, MD_KEY_VALID, MD_KEY_UNTIL, NULL); |
| 213 | if (s && *s) valid.end = apr_date_parse_rfc(s); |
| 214 | s = md_json_dups(p, json, MD_KEY_RESPONSE, NULL); |
| 215 | if (!s || !*s) goto cleanup; |
| 216 | md_util_base64url_decode(resp_der, s, p); |
| 217 | *pstat = md_ocsp_cert_stat_value(md_json_gets(json, MD_KEY_STATUS, NULL)); |
| 218 | *resp_valid = valid; |
| 219 | rv = APR_SUCCESS; |
| 220 | cleanup: |
| 221 | return rv; |
| 222 | } |
| 223 | |
| 224 | static void ostat_to_json(md_json_t *json, md_ocsp_cert_stat_t stat, |
| 225 | const md_data_t *resp_der, const md_timeperiod_t *resp_valid, |
no test coverage detected