From e7a78d7acd8d6ace84947b79421683b849f933b3 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Feb 14 2012 19:18:16 +0000 Subject: - add_request handles property names, now, too -- at least they're discoverable --- diff --git a/doc/api.txt b/doc/api.txt index d102e4b..dae508a 100644 --- a/doc/api.txt +++ b/doc/api.txt @@ -25,28 +25,28 @@ o object layout - get_supported_cert_storage returns: array of string -> "NSSDB", "FILE" - add_request - arguments: [dict{string,variant{string/array-of-string/number/boolean}}] - {"NICKNAME",string} - {"KEY_TYPE","RSA"} - {"KEY_SIZE",integer} - {"KEY_STORAGE","NSSDB"/"FILE"/"NONE"}* - {"KEY_LOCATION",string}* - {"KEY_NICKNAME",string} - {"KEY_TOKEN",string} - {"KEY_PIN",string} - {"KEY_PIN_FILE",string} - {"CERT_STORAGE","NSSDB"/"FILE"}* - {"CERT_LOCATION",string}* - {"CERT_NICKNAME",string} - {"CERT_TOKEN",string} - {"TRACK",boolean} - {"RENEW",boolean} - {"SUBJECT",string} - {"EKU",array-of-string (oids)} - {"PRINCIPAL",array-of-string (principal names)} - {"DNS",array-of-string (dns names)} - {"EMAIL",array-of-string (email addresses)} - {"CA",string (name of configured CA to use)} + arguments: [dict{string,variant{string/path/array-of-string/number/boolean}}] + {"NICKNAME"("nickname"),string} + {"KEY_TYPE"("key-type"),"RSA"} + {"KEY_SIZE"("key-size"),integer} + {"KEY_STORAGE"("key-storage"),"NSSDB"/"FILE"/"NONE"}* + {"KEY_LOCATION"("key-file"/"key-database"),string}* + {"KEY_NICKNAME"("key-nickname"),string} + {"KEY_TOKEN"("key-token"),string} + {"KEY_PIN"("key-pin"),string} + {"KEY_PIN_FILE"("key-pin-file"),string} + {"CERT_STORAGE"("cert-storage"),"NSSDB"/"FILE"}* + {"CERT_LOCATION"("cert-file"/"cert-database"),string}* + {"CERT_NICKNAME"("cert-nickname"),string} + {"CERT_TOKEN"("cert-token"),string} + {"TRACK"("monitoring"),boolean} + {"RENEW"("autorenew"),boolean} + {"SUBJECT"("template-subject"),string} + {"EKU"("template-eku"),array-of-string (oids)} + {"PRINCIPAL"("template-principal"),array-of-string (principal names)} + {"DNS"("template-hostname"),array-of-string (dns names)} + {"EMAIL"("template-email"),array-of-string (email addresses)} + {"CA"("ca"),path (known CA to use)} * = required values returns: boolean -> succeeded path (optional) -> object path for new request diff --git a/src/tdbush.c b/src/tdbush.c index 8398fe9..c71aa44 100644 --- a/src/tdbush.c +++ b/src/tdbush.c @@ -390,6 +390,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, /* Certificate storage. */ param = cm_tdbusm_find_dict_entry(d, "CERT_STORAGE", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_CERT_LOCATION_TYPE, + cm_tdbusm_dict_s); + } + if (param == NULL) { /* This is a required parameter. */ cm_log(1, "Cert storage type not specified.\n"); talloc_free(parent); @@ -416,6 +421,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, } /* Handle parameters for either a PIN or the location of a PIN. */ param = cm_tdbusm_find_dict_entry(d, "KEY_PIN", cm_tdbusm_dict_s); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_KEY_PIN, + cm_tdbusm_dict_s); + } if ((param == NULL) || (param->value.s == NULL) || (strlen(param->value.s) == 0)) { @@ -425,6 +435,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, key_pin_file = NULL; } param = cm_tdbusm_find_dict_entry(d, "KEY_PIN_FILE", cm_tdbusm_dict_s); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_KEY_PIN_FILE, + cm_tdbusm_dict_s); + } if ((param == NULL) || (param->value.s == NULL) || (strlen(param->value.s) == 0)) { @@ -453,6 +468,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, param = cm_tdbusm_find_dict_entry(d, "CERT_LOCATION", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_CERT_LOCATION_FILE, + cm_tdbusm_dict_s); + } + if (param == NULL) { cm_log(1, "Cert storage location not specified.\n"); talloc_free(parent); return send_internal_base_missing_arg_error(conn, msg, @@ -497,6 +517,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, param = cm_tdbusm_find_dict_entry(d, "CERT_LOCATION", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_CERT_LOCATION_DATABASE, + cm_tdbusm_dict_s); + } + if (param == NULL) { cm_log(1, "Cert storage location not specified.\n"); talloc_free(parent); return send_internal_base_missing_arg_error(conn, msg, @@ -528,6 +553,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, param = cm_tdbusm_find_dict_entry(d, "CERT_NICKNAME", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_CERT_LOCATION_NICKNAME, + cm_tdbusm_dict_s); + } + if (param == NULL) { cm_log(1, "Cert nickname not specified.\n"); talloc_free(parent); return send_internal_base_missing_arg_error(conn, msg, @@ -538,6 +568,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, param = cm_tdbusm_find_dict_entry(d, "CERT_TOKEN", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_CERT_LOCATION_TOKEN, + cm_tdbusm_dict_s); + } + if (param == NULL) { cert_token = NULL; } else { cert_token = param->value.s; @@ -553,6 +588,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, } /* Check that the requested nickname will be unique. */ param = cm_tdbusm_find_dict_entry(d, "NICKNAME", cm_tdbusm_dict_s); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_NICKNAME, + cm_tdbusm_dict_s); + } if (param != NULL) { n_entries = cm_get_n_entries(ctx); for (i = 0; i < n_entries; i++) { @@ -610,6 +650,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, * we don't require that we know anything about the key. */ param = cm_tdbusm_find_dict_entry(d, "KEY_STORAGE", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_KEY_LOCATION_TYPE, + cm_tdbusm_dict_s); + } + if (param == NULL) { key_storage = cm_key_storage_none; key_location = NULL; key_token = NULL; @@ -646,6 +691,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, param = cm_tdbusm_find_dict_entry(d, "KEY_LOCATION", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_KEY_LOCATION_FILE, + cm_tdbusm_dict_s); + } + if (param == NULL) { cm_log(1, "Key storage location not specified.\n"); talloc_free(parent); @@ -691,6 +741,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, param = cm_tdbusm_find_dict_entry(d, "KEY_LOCATION", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_KEY_LOCATION_DATABASE, + cm_tdbusm_dict_s); + } + if (param == NULL) { cm_log(1, "Key storage location not specified.\n"); talloc_free(parent); @@ -723,6 +778,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, param = cm_tdbusm_find_dict_entry(d, "KEY_NICKNAME", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_KEY_LOCATION_NICKNAME, + cm_tdbusm_dict_s); + } + if (param == NULL) { cm_log(1, "Key nickname not specified.\n"); talloc_free(parent); return send_internal_base_missing_arg_error(conn, msg, @@ -733,6 +793,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, param = cm_tdbusm_find_dict_entry(d, "KEY_TOKEN", cm_tdbusm_dict_s); if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_KEY_LOCATION_TOKEN, + cm_tdbusm_dict_s); + } + if (param == NULL) { key_token = NULL; } else { key_token = param->value.s; @@ -794,11 +859,21 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, /* Populate it with all of the information we have. */ new_entry->cm_busname = cm_store_entry_next_busname(new_entry); param = cm_tdbusm_find_dict_entry(d, "NICKNAME", cm_tdbusm_dict_s); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_NICKNAME, + cm_tdbusm_dict_s); + } if (param != NULL) { new_entry->cm_nickname = talloc_strdup(new_entry, param->value.s); } param = cm_tdbusm_find_dict_entry(d, "KEY_SIZE", cm_tdbusm_dict_n); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_KEY_SIZE, + cm_tdbusm_dict_n); + } if (param != NULL) { new_entry->cm_key_type.cm_key_gen_algorithm = CM_DEFAULT_PUBKEY_TYPE; new_entry->cm_key_type.cm_key_gen_size = param->value.n; @@ -824,6 +899,11 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, new_entry->cm_cert_token = maybe_strdup(new_entry, cert_token); /* Which CA to use. */ param = cm_tdbusm_find_dict_entry(d, "CA", cm_tdbusm_dict_s); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_CA, + cm_tdbusm_dict_s); + } if (param != NULL) { ca = get_ca_for_path(ctx, param->value.s); if (ca != NULL) { @@ -842,12 +922,22 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, } /* Behavior settings. */ param = cm_tdbusm_find_dict_entry(d, "TRACK", cm_tdbusm_dict_b); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_MONITORING, + cm_tdbusm_dict_b); + } if (param != NULL) { new_entry->cm_monitor = param->value.b; } else { new_entry->cm_monitor = cm_prefs_monitor(); } param = cm_tdbusm_find_dict_entry(d, "RENEW", cm_tdbusm_dict_b); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_AUTORENEW, + cm_tdbusm_dict_b); + } if (param != NULL) { new_entry->cm_autorenew = param->value.b; } else { @@ -855,27 +945,52 @@ base_add_request(DBusConnection *conn, DBusMessage *msg, } /* Template information. */ param = cm_tdbusm_find_dict_entry(d, "SUBJECT", cm_tdbusm_dict_s); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_TEMPLATE_SUBJECT, + cm_tdbusm_dict_s); + } if (param != NULL) { new_entry->cm_template_subject = maybe_strdup(new_entry, param->value.s); } param = cm_tdbusm_find_dict_entry(d, "EKU", cm_tdbusm_dict_as); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_TEMPLATE_EKU, + cm_tdbusm_dict_as); + } if (param != NULL) { new_entry->cm_template_eku = cm_submit_maybe_joinv(new_entry, ",", param->value.as); } param = cm_tdbusm_find_dict_entry(d, "PRINCIPAL", cm_tdbusm_dict_as); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_TEMPLATE_PRINCIPAL, + cm_tdbusm_dict_as); + } if (param != NULL) { new_entry->cm_template_principal = maybe_strdupv(new_entry, param->value.as); } param = cm_tdbusm_find_dict_entry(d, "DNS", cm_tdbusm_dict_as); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_TEMPLATE_HOSTNAME, + cm_tdbusm_dict_as); + } if (param != NULL) { new_entry->cm_template_hostname = maybe_strdupv(new_entry, param->value.as); } param = cm_tdbusm_find_dict_entry(d, "EMAIL", cm_tdbusm_dict_as); + if (param == NULL) { + param = cm_tdbusm_find_dict_entry(d, + CM_DBUS_PROP_TEMPLATE_EMAIL, + cm_tdbusm_dict_as); + } if (param != NULL) { new_entry->cm_template_email = maybe_strdupv(new_entry, param->value.as);