Contents

POST /management/keys#

Provide master signatures for future public keys to be used by the exchange. Only to be used by the exchange’s offline key management team. Not useful for anyone else.

Request:

The request body must be a MasterSignatures object.

Response:

204 No content:

The request was successfully processed.

403 Forbidden:

A provided signature is invalid. This response comes with a standard ErrorDetail response. Possible error codes include TALER_EC_EXCHANGE_MANAGEMENT_KEYS_DENOMKEY_ADD_SIGNATURE_INVALID or TALER_EC_EXCHANGE_MANAGEMENT_KEYS_SIGNKEY_ADD_SIGNATURE_INVALID.

404 Not found:

One of the keys for which a signature was provided is unknown to the exchange. This response comes with a standard ErrorDetail response. Possible error codes include TALER_EC_EXCHANGE_GENERIC_DENOMINATION_KEY_UNKNOWN or TALER_EC_EXCHANGE_MANAGEMENT_KEYS_SIGNKEY_UNKNOWN.

409 Conflict:

The denomination or signing key meta data conflicts with existing keys. This response comes with a standard ErrorDetail response with a code of TALER_EC_EXCHANGE_MANAGEMENT_CONFLICTING_DENOMINATION_META_DATA or TALER_EC_EXCHANGE_MANAGEMENT_CONFLICTING_SIGNKEY_META_DATA.

413 Request entity too large:

The uploaded body is to long, it exceeds the size limit. Returned with an error code of TALER_EC_GENERIC_UPLOAD_EXCEEDS_LIMIT.

500 Internal Server Error:

The server experienced an internal error. This response comes with a standard ErrorDetail response. Possible error codes include TALER_EC_GENERIC_DB_FETCH_FAILED, TALER_EC_GENERIC_DB_STORE_FAILED, TALER_EC_EXCHANGE_GENERIC_KEYS_MISSING, or TALER_EC_EXCHANGE_GENERIC_BAD_CONFIGURATION.

Details:

interface MasterSignatures {

  // Provided master signatures for future denomination keys.
  denom_sigs: DenomSignature[];

  // Provided master signatures for future online signing keys.
  signkey_sigs: SignKeySignature[];

}
interface DenomSignature {

  // Hash of the public key of the denomination.
  h_denom_pub: HashCode;

  // Signature over TALER_DenominationKeyValidityPS.
  // Must have purpose TALER_SIGNATURE_MASTER_DENOMINATION_KEY_VALIDITY
  master_sig: EddsaSignature;

}
interface SignKeySignature {
  // The actual exchange's EdDSA signing public key.
  exchange_pub: EddsaPublicKey;

  // Signature by the exchange master key over
  // TALER_ExchangeSigningKeyValidityPS.
  // Must have purpose TALER_SIGNATURE_MASTER_SIGNING_KEY_VALIDITY.
  master_sig: EddsaSignature;

}