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

Function md_config_set_eab

modules/md/mod_md_config.c:1252–1310  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1250}
1251
1252static const char *md_config_set_eab(cmd_parms *cmd, void *dc,
1253 const char *keyid, const char *hmac)
1254{
1255 md_srv_conf_t *sc = md_config_get(cmd->server);
1256 const char *err;
1257
1258 (void)dc;
1259 if ((err = md_conf_check_location(cmd, MD_LOC_ALL))) {
1260 return err;
1261 }
1262 if (!hmac) {
1263 if (!apr_cstr_casecmp("None", keyid)) {
1264 keyid = "none";
1265 }
1266 else {
1267 /* a JSON file keeping keyid and hmac */
1268 const char *fpath;
1269 apr_status_t rv;
1270 md_json_t *json;
1271
1272 /* If only dumping the config, don't verify the file */
1273 if (ap_state_query(AP_SQ_RUN_MODE) == AP_SQ_RM_CONFIG_DUMP) {
1274 goto leave;
1275 }
1276
1277 fpath = ap_server_root_relative(cmd->pool, keyid);
1278 if (!fpath) {
1279 return apr_pstrcat(cmd->pool, cmd->cmd->name,
1280 ": Invalid file path ", keyid, NULL);
1281 }
1282 if (!md_file_exists(fpath, cmd->pool)) {
1283 return apr_pstrcat(cmd->pool, cmd->cmd->name,
1284 ": file not found: ", fpath, NULL);
1285 }
1286
1287 rv = md_json_readf(&json, cmd->pool, fpath);
1288 if (APR_SUCCESS != rv) {
1289 return apr_pstrcat(cmd->pool, cmd->cmd->name,
1290 ": error reading JSON file ", fpath, NULL);
1291 }
1292 keyid = md_json_gets(json, MD_KEY_KID, NULL);
1293 if (!keyid || !*keyid) {
1294 return apr_pstrcat(cmd->pool, cmd->cmd->name,
1295 ": JSON does not contain '", MD_KEY_KID,
1296 "' element in file ", fpath, NULL);
1297 }
1298 hmac = md_json_gets(json, MD_KEY_HMAC, NULL);
1299 if (!hmac || !*hmac) {
1300 return apr_pstrcat(cmd->pool, cmd->cmd->name,
1301 ": JSON does not contain '", MD_KEY_HMAC,
1302 "' element in file ", fpath, NULL);
1303 }
1304 }
1305 }
1306leave:
1307 sc->ca_eab_kid = keyid;
1308 sc->ca_eab_hmac = hmac;
1309 return NULL;

Callers

nothing calls this directly

Calls 7

md_config_getFunction · 0.85
md_conf_check_locationFunction · 0.85
ap_state_queryFunction · 0.85
ap_server_root_relativeFunction · 0.85
md_file_existsFunction · 0.85
md_json_readfFunction · 0.85
md_json_getsFunction · 0.85

Tested by

no test coverage detected