Closed deterministic holder-proof producer input.
Fields
holder_public_key- the holder's raw 32-byte Ed25519 public key, embedded in the proof header as a public JWK; it must passBoundedAuthorityProtocol.Ed25519.acceptable_public_key?/1and match the grant'sholder_thumbprint.proof_id- thejticlaim: non-empty StringOrURI of at mostidentifier_bytes(512) UTF-8 bytes.method- thehtmclaim: a 1 tomethod_bytes(32) byte RFC 9110 method token, compared byte-for-byte and never case-normalized ("POST"and"post"differ).target_uri- thehtuclaim: the HTTPS target URI already in normal form (BoundedAuthorityProtocol.V1.Uri.normalize/2), at mosturi_bytes(8,192) bytes; a value that is not already normalized is refused.issued_at- theiatclaim, integer Unix time in seconds.nonce-nilfor no nonce, or a non-empty UTF-8 string of at mostnonce_bytes(512) bytes. Redacted byinspect/2.invocation_id- theba_invclaim: a lowercase RFC 4122 UUID naming this one invocation; reserving it against replay stays with the caller.operation- theba_opclaim: the operation name, 1 tooperation_bytes(128) printable ASCII bytes; it must name an operation of the grant.grant_compact- the exact grant compact the proof is bound to; the proof carries the SHA-256 of these bytes (ath). Redacted byinspect/2.cast_arguments- the typed request arguments as a taggedBoundedAuthorityProtocol.V1.Json.value()(for example{:object, [{"amount", {:integer, 5}}]}); the proof binds their request digest (ba_req). Redacted byinspect/2.
Summary
Types
Producer input for BoundedAuthorityProtocol.V1.proof_signing_input/2.
Types
@type t() :: %BoundedAuthorityProtocol.V1.Proof{ cast_arguments: BoundedAuthorityProtocol.V1.Json.value(), grant_compact: binary(), holder_public_key: binary(), invocation_id: binary(), issued_at: integer(), method: binary(), nonce: nil | binary(), operation: binary(), proof_id: binary(), target_uri: binary() }
Producer input for BoundedAuthorityProtocol.V1.proof_signing_input/2.