- POST /blinding-prepare#
Obtain exchange-side input values in preparation for a blinding step of multiple coins for certain denomination cipher types, specifically at this point for Clause-Schnorr blind signatures.
Request:
The request body must be a BlindingPrepareRequest object.
Response:
- 200 OK:
The request was successful, and the response is a BlindingPrepareResponse. Note that repeating exactly the same request will again yield the same response (assuming none of the denominations is expired).
- 400 Bad Request:
The request body is malformed or a parameter is invalid. This response comes with a standard ErrorDetail response. Possible error codes include
TALER_EC_GENERIC_PARAMETER_MALFORMEDorTALER_EC_EXCHANGE_GENERIC_NEW_DENOMS_ARRAY_SIZE_EXCESSIVE.- 404 Not found:
A denomination key is not known to the exchange. The response is a DenominationUnknownMessage.
- 410 Gone:
A requested denomination key is not yet or no longer valid. It either before the validity start, past the expiration or was revoked. The response is a DenominationGoneMessage. Clients must evaluate the error code provided to understand which of the cases this is and handle it accordingly.
- 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 with a code of
TALER_EC_EXCHANGE_GENERIC_KEYS_MISSING.
Details:
type BlindingPrepareRequest = BlindingPrepareRequestCS;
interface BlindingPrepareRequestCS { // Cipher type cipher: "CS"; // The type of operation this blinding is for. operation: "withdraw" | "melt"; // Master seed for the Clause-Schnorr R-value creation. // MUST not have been used in any prior request of this type. seed: BlindingMasterSeed; // Array of denominations and coin offsets for // each of the fresh coins with a CS-cipher // denomination. // The coin_offset values MUST be strongly increasing. nks: BlindingInputParameter[]; }
interface BlindingInputParameter { // Offset of this coin in the list of // fresh coins. May not match the array offset // as the fresh coins may include non-CS // denominations as well. coin_offset: Integer; // Hash of the public key of the denomination the // request relates to. Must be a CS denomination type. denom_pub_hash: HashCode; }
type BlindingPrepareResponse = BlindingPrepareResponseCS;
interface BlindingPrepareResponseCS { cipher: "CS"; // Array of pairs of CS values, one pair per input r_pubs: CSRPublicPair[]; }
// Pair of points (of type CSRPublic) on the curve Curve25519, // one of which is randomly selected in the Clause-Schnorr // signature scheme. type CSRPublicPair = [CSRPublic, CSRPublic];