- 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).
- 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.
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];