Error struct returned by all MessageSignatures functions.
The reason atoms are a stable, SemVer-guarded contract:
Message / input shape:
:invalid_message— constructor input is not a usable HTTP message (relative URL, missing method/status, bad header shape):malformed_signature_input—Signature-Inputis not a valid SF dictionary of inner lists, or a parameter has the wrong type:malformed_signature—Signatureis not a valid SF dictionary of byte sequences, or its labels do not matchSignature-Input:malformed_component— component identifier is not a valid sf-string item, uses an unknown/ill-typed parameter, or combines exclusive parameters (bswithsf/key,sfwithkey):unsupported_component_parameter— thetr(trailers) parameter; parsed, deliberately unsupported in MVP
Signature base construction:
:component_not_found— a covered component (field, query param, derived value, orreqtarget) is absent from the message:duplicate_component— the same component identifier appears twice in the covered list:unknown_sf_type—sfparameter on a field whose Structured Fields type is not registered and not given via:sf_types:malformed_field_value— a component value cannot be represented in an ASCII signature base, orsf/keyre-serialization failed
Selection:
:missing_signature— noSignature-Input/Signatureheaders, or no signature matches the requested tag:multiple_signatures— more than one candidate and nolabel:/tag:selector given:label_not_found— requested label absent from either header
Crypto:
:signature_mismatch— the signature does not verify:invalid_signature_encoding— ECDSA raw signature has the wrong length, or DER decoding failed:invalid_key— key material does not match the algorithm:unknown_key— the key resolver returned an error:unknown_algorithm— analgparameter names an algorithm outside the registry
Policy:
:algorithm_not_allowed— resolved algorithm outside the policy list:algorithm_mismatch—algparameter contradicts the resolved key:missing_required_component— policy-required component not covered:missing_created— policy requires acreatedparameter:expired—expirespassed, orcreatedolder thanmax_age:not_yet_valid—createdin the future beyondclock_skew:nonce_rejected— the nonce checker refused the nonce