X402.Extension adapter advertising the http-message-signatures
extension.
plug X402.Plug.PaymentGate,
routes: [...],
extensions: [
{X402.Extensions.HTTPMessageSignatures.Adapter,
registration_url: "https://network.example.com/signature-agents",
signature_schemes: ["ed25519"],
tags: ["web-bot-auth"]}
]Every 402 response then carries
X402.Extensions.HTTPMessageSignatures.extension/1 for the given
options. Verifying the signatures clients send is the application's
job (X402.HTTPSignature.verify/2 in a plug ahead of the gate).
Summary
Functions
Advertises the configured extension on every 402 response.
Validates the adapter options, which are those of
X402.Extensions.HTTPMessageSignatures.extension/1.
Returns "http-message-signatures".
Functions
@spec advertise( keyword(), X402.Hooks.RequestContext.t() ) :: map()
Advertises the configured extension on every 402 response.
Examples
iex> {:ok, opts} = X402.Extensions.HTTPMessageSignatures.Adapter.init(
...> registration_url: "https://network.example.com/agents", signature_schemes: ["ed25519"], include_schema: false)
iex> X402.Extensions.HTTPMessageSignatures.Adapter.advertise(opts, X402.Hooks.RequestContext.new([]))
%{"info" => %{"registrationUrl" => "https://network.example.com/agents", "signatureSchemes" => ["ed25519"], "tags" => []}}
Validates the adapter options, which are those of
X402.Extensions.HTTPMessageSignatures.extension/1.
Examples
iex> {:ok, opts} = X402.Extensions.HTTPMessageSignatures.Adapter.init(
...> registration_url: "https://network.example.com/agents", signature_schemes: ["ed25519"])
iex> opts[:extension]["info"]["signatureSchemes"]
["ed25519"]
iex> {:error, message} = X402.Extensions.HTTPMessageSignatures.Adapter.init(signature_schemes: ["ed25519"])
iex> message =~ ":registration_url"
true
@spec key() :: String.t()
Returns "http-message-signatures".
Examples
iex> X402.Extensions.HTTPMessageSignatures.Adapter.key()
"http-message-signatures"