Contents

POST /csr-issue#

Obtain donau-side input values in preparation for a issue receipt step for certain donation unit cipher types, specifically at this point for Clause-Schnorr blind signatures. This API is used by the donor.

Request: The request body must be a IssuePrepareRequest object.

Response:

201 Created:

The request was successful, and the response is a IssuePrepareResponse. Note that repeating exactly the same request will again yield the same response (assuming none of the donation unit is expired).

400 Bad Request:

The request body is malformed or required fields are missing, or the specified denomination key does not support this operation. Returned with error codes TALER_EC_GENERIC_JSON_INVALID or TALER_EC_DONAU_GENERIC_INVALID_DENOMINATION_CIPHER_FOR_OPERATION.

404 Not Found:

One of the referenced donation unit keys could not be found. Returned with error code TALER_EC_DONAU_GENERIC_DONATION_UNIT_UNKNOWN.

500 Internal Server Error:

The donation unit key is not known to the Donau, has the wrong cipher type, or the signing helper encountered an error. Returned with error code TALER_EC_DONAU_GENERIC_KEYS_MISSING or TALER_EC_DONAU_SIGNKEY_HELPER_BUG.

503 Service unavailable:

The donau is lacking the keys to create the response. Returned with error code TALER_EC_DONAU_GENERIC_KEYS_MISSING.

Details:

interface IssuePrepareRequest {

  // Nonce to be used by the donau to derive
  // its private inputs from. Must not have ever
  // been used before.
  nonce: CSNonce;

  // Hash of the public key of the donation unit
  // the request relates to.
  du_pub_hash: HashCode;

}
type IssuePrepareResponse =
  | DonauIssueValue;
type DonauIssueValue =
  | DonauRsaIssueValue
  | DonauCsIssueValue;
interface DonauRsaIssueValue {
  cipher: "RSA";
}
interface DonauCsIssueValue {
  cipher: "CS";

  // CSR R0 value
  r_pub_0: CSRPublic;

  // CSR R1 value
  r_pub_1: CSRPublic;
}