| Internet-Draft | ML-DSA in HTTP Message Signatures | July 2026 |
| Skokan | Expires 26 January 2027 | [Page] |
This document registers algorithm identifiers for the Module-Lattice-Based
Digital Signature Algorithm (ML-DSA) in the "HTTP Signature Algorithms"
registry, and defines the HTTP_SIGN and HTTP_VERIFY primitive functions for
them.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at https://panva.github.io/draft-httpbis-message-signatures-ml-dsa/draft-skokan-httpbis-message-signatures-ml-dsa.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-skokan-httpbis-message-signatures-ml-dsa/.¶
Discussion of this document takes place on the HTTP Working Group mailing list (mailto:ietf-http-wg@w3.org), which is archived at https://lists.w3.org/Archives/Public/ietf-http-wg/.¶
Source for this draft and an issue tracker can be found at https://github.com/panva/draft-httpbis-message-signatures-ml-dsa.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 26 January 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
The Module-Lattice-Based Digital Signature Algorithm (ML-DSA) [FIPS204] is a signature scheme believed to resist an adversary in possession of a Cryptographically Relevant Quantum Computer (CRQC).¶
HTTP Message Signatures [RFC9421] establishes the "HTTP Signature Algorithms" registry (Section 6.2 of [RFC9421]). Every digital signature algorithm in its initial contents rests on integer factorization or on the discrete logarithm problem, so none of them resists a CRQC.¶
[RFC9964] registers ML-DSA identifiers for JOSE and COSE, but those cannot be
reused here. Section 3.3.7 of [RFC9421] states that JSON Web Algorithm values
"are not registered in the 'HTTP Signature Algorithms' registry (Section 6.2),
and so the explicit alg signature parameter is not used at all when using JOSE
signing algorithms". A signer using ML-DSA therefore has no way to name the
algorithm in the alg signature parameter (Section 2.3 of [RFC9421]), and a
verifier has no way to request it in the Accept-Signature field
(Section 5 of [RFC9421]).¶
This document registers three ML-DSA algorithm identifiers and defines the
HTTP_SIGN and HTTP_VERIFY primitive functions (Section 3.3 of [RFC9421])
for each.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
ML-DSA-44, ML-DSA-65, and ML-DSA-87 refer to ML-DSA with the parameter choices given in Table 1 of [FIPS204].¶
These algorithms use ML-DSA as specified in [FIPS204]. HashML-DSA, the pre-hash variant in Section 5.4 of [FIPS204], is not used; see Section 5.1.¶
To sign using these algorithms, the signer applies ML-DSA.Sign (Algorithm 2 of
[FIPS204]) with the signer's private signing key and the signature base
(Section 2.5 of [RFC9421]) as the message (M). The signature base is taken
as the input message with no prehash function. The context string (ctx) MUST
be the empty string. The resulting signature, encoded as described in Section
7.2 of [FIPS204], is the byte array (S) used as the HTTP message signature
output in Section 3.1 of [RFC9421].¶
To verify using these algorithms, the verifier applies ML-DSA.Verify
(Algorithm 3 of [FIPS204]) using the public key portion of the verification
key material and the signature base recreated as described in
Section 3.2 of [RFC9421]. The signature base is taken as the input message
with no prehash function. The context string (ctx) MUST be the empty string.
The verifier extracts the HTTP message signature to be verified (S) as
described in Section 3.2 of [RFC9421]. The results of the verification
function indicate whether the signature presented is valid.¶
Implementations MUST pass the signature base to ML-DSA.Sign and
ML-DSA.Verify unaltered: they MUST NOT append a trailing newline, alter its
line endings, or apply any further encoding.¶
A signer SHOULD use the hedged variant of ML-DSA.Sign, the default in
[FIPS204], and MAY use the deterministic variant; see Section 5.3.¶
This algorithm uses the ML-DSA-44 parameter set. Signatures are 2420 bytes.¶
The use of this algorithm can be indicated at runtime using the ml-dsa-44
value for the alg signature parameter.¶
ML-DSA signatures are much larger than those of the algorithms [RFC9421]
originally registered. The Signature field carries a signature as a Structured
Fields Byte Sequence, Base64 encoded and delimited by colons, so the encoded
value is approximately a third larger than the signature itself.¶
| Algorithm | Signature | Encoded in the Signature field |
|---|---|---|
ed25519
|
64 bytes | approximately 90 bytes |
ml-dsa-44
|
2420 bytes | approximately 3.2 kilobytes |
ml-dsa-65
|
3309 bytes | approximately 4.4 kilobytes |
ml-dsa-87
|
4627 bytes | approximately 6.2 kilobytes |
Servers and intermediaries limit how large header fields may be. Two kinds of limit are common, and both are often set to around 8 kilobytes: one on any single field, and one on the request line and all header fields together.¶
Under a per-field limit of that size, one ml-dsa-87 signature fits with little
room to spare, and two do not fit at all. Under a combined limit, one
ml-dsa-87 signature leaves less than 2 kilobytes for the request line and
every other field, including the Signature-Input field that accompanies every
signature. Messages carrying more than one signature
(Section 4.3 of [RFC9421]) multiply these figures.¶
A signature value differs on every message, so HTTP/2 and HTTP/3 header compression does not help: the full value is sent each time. [RFC9958] discusses the operational effects of post-quantum algorithm sizes more generally.¶
[[ Editor's note: is ml-dsa-87 worth registering at all? One signature eats most of an 8 kilobyte limit before anything else is in the message. ]]¶
The security considerations of [RFC9421] and [RFC9881] apply to this document. [RFC9958] provides general background on the threat posed by CRQCs and on the transition to post-quantum cryptography.¶
This document does not define algorithms for HashML-DSA, the pre-hash variant in Section 5.4 of [FIPS204]. ML-DSA and HashML-DSA are incompatible and require different verification routines, so supporting HashML-DSA would mean registering further identifiers.¶
Pre-hashing accommodates signers that cannot pass a complete message to the signing module. The signature base (Section 2.5 of [RFC9421]) is built in full before signing begins and is small enough to pass to the signing module directly.¶
ML-DSA accepts a context string (ctx) that separates signatures made in
different application contexts. This document fixes it to the empty string, as
do other documents that use ML-DSA ([RFC9881], [RFC9882], [RFC9964]).¶
In HTTP message signatures that separation comes from the signature base, which
covers the signature parameters, including the application-specific tag
parameter (Section 2.3 of [RFC9421]); a signature made over one set of
parameters does not verify against another.¶
Fixing the context string also keeps every parameter of these algorithms determined by this document, as Section 6.2 of [RFC9421] expects of a registered algorithm identifier.¶
An application needing cryptographic separation between HTTP message signatures and other uses of the same signing key SHOULD use a separate key for each.¶
ML-DSA permits deterministic and hedged (randomized) signing, hedged being the default in [FIPS204]. Both verify with the same procedure and a verifier cannot tell them apart, so the choice rests with the signer. Section 3 recommends the hedged variant because mixing in fresh randomness hardens an implementation against fault and side-channel attacks, as Section 9 of [RFC9881] discusses.¶
Two hedged signatures over the same signature base with the same key will differ. A verifier MUST NOT check a signature by re-signing the signature base and comparing the result, as Section 7.3.5 of [RFC9421] warns; the procedure in Section 3 is the only correct one.¶
During migration to post-quantum algorithms a verifier is likely to accept both ML-DSA and a classical algorithm. Section 7.3.6 of [RFC9421] describes the downgrade risk that follows: an attacker who can influence algorithm selection can have a verifier accept a signature made with the weaker one.¶
A verifier accepting ML-DSA for its resistance to a CRQC gains that resistance
only for signatures actually made with ML-DSA. A verifier SHOULD therefore take
the acceptable algorithm from the key material or from configuration rather than
from the alg signature parameter, and SHOULD NOT accept a classical algorithm
from a signer for which ML-DSA is expected.¶
ML-DSA computes the message representative over a hash of the public key, which binds a signature to the key that produced it. That mitigates the key substitution concerns of Section 7.3.4 of [RFC9421], where a signature is verified under a key other than the signer's. Verifiers still need to check that the key material and the algorithm both suit the application, as Section 7.3.6 of [RFC9421] notes.¶
IANA is requested to add the following entries to the "HTTP Signature Algorithms" registry established in Section 6.2 of [RFC9421].¶
| Algorithm Name | Description | Status | Reference |
|---|---|---|---|
ml-dsa-44
|
ML-DSA using the ML-DSA-44 parameter set | Active | Section 3.1 of this document |
ml-dsa-65
|
ML-DSA using the ML-DSA-65 parameter set | Active | Section 3.2 of this document |
ml-dsa-87
|
ML-DSA using the ML-DSA-87 parameter set | Active | Section 3.3 of this document |
These test vectors are non-normative, and may be used to check an implementation.¶
ML-DSA signing is randomized by default; see Section 5.3. The signature values below are therefore recorded outputs, and an implementation signing the same signature base with the same key will produce a different, equally valid signature.¶
The test cases below sign portions of the following request, the test request used in Appendix B.2 of [RFC9421].¶
Each key pair is presented in several encodings for convenience. This document does not define a key format; see Section 1.1.¶
The following key pair uses the ML-DSA-44 parameter set and is referred to in this appendix as test-key-ml-dsa-44. The 32-byte seed from which the key pair is derived, in Base64:¶
ow9QjhhV5ORaLbpMB3INQPLVmTl7F5tnPDUugwXey5Q=
The 1312-byte public key, encoded as described in Section 7.2 of [FIPS204], in Base64:¶
NOTE: '\' line wrapping per RFC 8792 wqZn1DsCdzzkbpLoq8W1YHI5pPilCv9L2V2C5FJPp6CR/U7TJe7tIpKQdz3DqLOpQNBe\ k1eML8h+YFUhlB477VepUTlx66+zJw+lBNlLWjpxxm16RbQFu9vUUlrVZlVd/d5teSvj\ YORBOtaEJF9j27s4bgOVxNGXWZ4GL4ynmpQpJ5jTOW4zEBy9//k/zDGglXnp2Oj8jRJB\ Mjqv30/T3s6nhWRjd/rPf4KTeyjqCSc/vOUrlVuT5rPVAy+6jp2X/F7IA+NG/oKstNGf\ fETTbrNtkGJr/B3vn5OXNTIz16+Kf4Ntw+Cx+Hatk37IDnnjGBwVeBW7JfACzLwrYvch\ iWz48wgoVxq3poV5zli/JAzx+YkKh7xusPDt5bjIkV95EQBNjtqokN/JXvmgwbLSY+5V\ TY5tNC9RYRBbZcu6/eG4XU1KpnRpGQsyJkcaybJKYQFOTqkrZm9gh9UPFyRyz5cxCuRN\ bumhKXaPixTy6EYVExYh7Kl6m513cs84AVsrE5ARPAR7xrZcKqV4CgQPqa9ky+2U5H5Q\ tYj+plCu6CgzpIDplBUPIABGx+qcAcuZos9YQK5FBWzG1GnIwJl6FATMXk+4V+SM5Bjw\ cRmikw55+kClAELtR4V8jWrGdYedg8WHTQ/pmWaBcsjj8VY81Dk2rkTyGr6FxjvWd0j0\ PPg0ssU+0V5jJqwVs5jK8r8Wm5SjctY5l3uH8U0LKccxj8Je6q/HqC/xS3y+2F6Y3red\ vvqHt53hNtGUvqHg+kAYdveRj6kwsI0u50ETEzhRZpIn/5OaMSs3Y6XifKFoDNH7lxSa\ T7I44b40Ocb8mtUrhQTliAbCiollAbSU2GvutDhEQGyWRvEqM1UjH0TiSTrRN2Gl8WdP\ eIUQ2ADLNueFaANCnkTcb2UqY0vr6ADyOsnmJrdEH3zCIss+JIJFbsrNo2BTKv09rSis\ Bu9PY+ZBMCfLqaG9dEtxG3FZPMCcT2HXbyOYbk6fXLjaUXGQOethqXrVsqpqGK+e95yA\ 00ZOc794sRym+FgbwFSPbKKpV27cTaqFVdh0MivTZZYcmZeXRZqgmHY1fcCdq6C7rCLw\ zHG6vV36a/eCvzERMBFtV98cV3SPNLPZ0/wup+XvZHo9B+9ODifZpk57cZAifAinPowN\ g4+Eucbk5e+WGqzmb6d2r0rY0f/sugxpkyDu8YO7EKMASvF8Z0nG9Rc9OtNzxXMrW7G8\ 1KQy4wuq3zBNEVlpdLge0VknS5cNBKZgBLiwpQsDqK8jDDO17lnxe3TxgU+nZ9E5m5k/\ lkhqVYszNenEIohO/1PWf/FOhZQCLuG8FiAVo/EvsloT5tzYrdZlZdnJCJT8CvNxPPA4\ SghyYW7Fs2hBVb8kKyvBTME1meVMLyTuhzlh/F4+HX1GWaTkjVkhDqVC3BWuyw5ftNFs\ SXYLv/Re4LjrXe04ICkg/pV36TFOukdEQIoW1suz3QahuGyL59Xu9bJ9e4Fak4KI+WA+\ QmTzj3oMTpx0Y2KYPHZYe+NN/lCum6yMBSIBsS3RJXoYRqqTWH4ZY4MjkVCkWKST7Y+T\ UzroRJ+8Z2IBEmV/ggz1JcXfvkL4E5oMpNOHuO4xqvng7MFK6iecud+i3e94BckHfYmr\ 7aYeOsf3X8KfQwrHMW3z0TRm9ZjRQb64y7fxCjgklRu3ClpAuPSmNn2+MtN2VH3DrSwo\ GGEr7t3HDFC5Rb0U4wheDaUMHrMwZSqDzcu/DCSGOv5+PK8asA==
The same key pair in PKCS #8 and SubjectPublicKeyInfo form, using the textual encoding of [RFC7468] with no encryption. The private key uses the seed representation.¶
-----BEGIN PRIVATE KEY----- MDQCAQAwCwYJYIZIAWUDBAMRBCKAIKMPUI4YVeTkWi26TAdyDUDy1Zk5exebZzw1 LoMF3suU -----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY----- MIIFMjALBglghkgBZQMEAxEDggUhAMKmZ9Q7Anc85G6S6KvFtWByOaT4pQr/S9ld guRST6egkf1O0yXu7SKSkHc9w6izqUDQXpNXjC/IfmBVIZQeO+1XqVE5ceuvsycP pQTZS1o6ccZtekW0Bbvb1FJa1WZVXf3ebXkr42DkQTrWhCRfY9u7OG4DlcTRl1me Bi+Mp5qUKSeY0zluMxAcvf/5P8wxoJV56djo/I0SQTI6r99P097Op4VkY3f6z3+C k3so6gknP7zlK5Vbk+az1QMvuo6dl/xeyAPjRv6CrLTRn3xE026zbZBia/wd75+T lzUyM9evin+DbcPgsfh2rZN+yA554xgcFXgVuyXwAsy8K2L3IYls+PMIKFcat6aF ec5YvyQM8fmJCoe8brDw7eW4yJFfeREATY7aqJDfyV75oMGy0mPuVU2ObTQvUWEQ W2XLuv3huF1NSqZ0aRkLMiZHGsmySmEBTk6pK2ZvYIfVDxckcs+XMQrkTW7poSl2 j4sU8uhGFRMWIeypepudd3LPOAFbKxOQETwEe8a2XCqleAoED6mvZMvtlOR+ULWI /qZQrugoM6SA6ZQVDyAARsfqnAHLmaLPWECuRQVsxtRpyMCZehQEzF5PuFfkjOQY 8HEZopMOefpApQBC7UeFfI1qxnWHnYPFh00P6ZlmgXLI4/FWPNQ5Nq5E8hq+hcY7 1ndI9Dz4NLLFPtFeYyasFbOYyvK/FpuUo3LWOZd7h/FNCynHMY/CXuqvx6gv8Ut8 vthemN63nb76h7ed4TbRlL6h4PpAGHb3kY+pMLCNLudBExM4UWaSJ/+TmjErN2Ol 4nyhaAzR+5cUmk+yOOG+NDnG/JrVK4UE5YgGwoqJZQG0lNhr7rQ4REBslkbxKjNV Ix9E4kk60TdhpfFnT3iFENgAyzbnhWgDQp5E3G9lKmNL6+gA8jrJ5ia3RB98wiLL PiSCRW7KzaNgUyr9Pa0orAbvT2PmQTAny6mhvXRLcRtxWTzAnE9h128jmG5On1y4 2lFxkDnrYal61bKqahivnvecgNNGTnO/eLEcpvhYG8BUj2yiqVdu3E2qhVXYdDIr 02WWHJmXl0WaoJh2NX3Anaugu6wi8Mxxur1d+mv3gr8xETARbVffHFd0jzSz2dP8 Lqfl72R6PQfvTg4n2aZOe3GQInwIpz6MDYOPhLnG5OXvlhqs5m+ndq9K2NH/7LoM aZMg7vGDuxCjAErxfGdJxvUXPTrTc8VzK1uxvNSkMuMLqt8wTRFZaXS4HtFZJ0uX DQSmYAS4sKULA6ivIwwzte5Z8Xt08YFPp2fROZuZP5ZIalWLMzXpxCKITv9T1n/x ToWUAi7hvBYgFaPxL7JaE+bc2K3WZWXZyQiU/ArzcTzwOEoIcmFuxbNoQVW/JCsr wUzBNZnlTC8k7oc5YfxePh19Rlmk5I1ZIQ6lQtwVrssOX7TRbEl2C7/0XuC4613t OCApIP6Vd+kxTrpHRECKFtbLs90Gobhsi+fV7vWyfXuBWpOCiPlgPkJk8496DE6c dGNimDx2WHvjTf5QrpusjAUiAbEt0SV6GEaqk1h+GWODI5FQpFikk+2Pk1M66ESf vGdiARJlf4IM9SXF375C+BOaDKTTh7juMar54OzBSuonnLnfot3veAXJB32Jq+2m HjrH91/Cn0MKxzFt89E0ZvWY0UG+uMu38Qo4JJUbtwpaQLj0pjZ9vjLTdlR9w60s KBhhK+7dxwxQuUW9FOMIXg2lDB6zMGUqg83Lvwwkhjr+fjyvGrA= -----END PUBLIC KEY-----
The same key pair as a JSON Web Key, using the AKP key type defined in Section 3 of [RFC9964]:¶
NOTE: '\' line wrapping per RFC 8792
{
"kty": "AKP",
"alg": "ML-DSA-44",
"kid": "test-key-ml-dsa-44",
"pub": "wqZn1DsCdzzkbpLoq8W1YHI5pPilCv9L2V2C5FJPp6CR_U7TJe7tIpKQdz\
3DqLOpQNBek1eML8h-YFUhlB477VepUTlx66-zJw-lBNlLWjpxxm16RbQFu9vUUl\
rVZlVd_d5teSvjYORBOtaEJF9j27s4bgOVxNGXWZ4GL4ynmpQpJ5jTOW4zEBy9__\
k_zDGglXnp2Oj8jRJBMjqv30_T3s6nhWRjd_rPf4KTeyjqCSc_vOUrlVuT5rPVAy\
-6jp2X_F7IA-NG_oKstNGffETTbrNtkGJr_B3vn5OXNTIz16-Kf4Ntw-Cx-Hatk3\
7IDnnjGBwVeBW7JfACzLwrYvchiWz48wgoVxq3poV5zli_JAzx-YkKh7xusPDt5b\
jIkV95EQBNjtqokN_JXvmgwbLSY-5VTY5tNC9RYRBbZcu6_eG4XU1KpnRpGQsyJk\
caybJKYQFOTqkrZm9gh9UPFyRyz5cxCuRNbumhKXaPixTy6EYVExYh7Kl6m513cs\
84AVsrE5ARPAR7xrZcKqV4CgQPqa9ky-2U5H5QtYj-plCu6CgzpIDplBUPIABGx-\
qcAcuZos9YQK5FBWzG1GnIwJl6FATMXk-4V-SM5BjwcRmikw55-kClAELtR4V8jW\
rGdYedg8WHTQ_pmWaBcsjj8VY81Dk2rkTyGr6FxjvWd0j0PPg0ssU-0V5jJqwVs5\
jK8r8Wm5SjctY5l3uH8U0LKccxj8Je6q_HqC_xS3y-2F6Y3redvvqHt53hNtGUvq\
Hg-kAYdveRj6kwsI0u50ETEzhRZpIn_5OaMSs3Y6XifKFoDNH7lxSaT7I44b40Oc\
b8mtUrhQTliAbCiollAbSU2GvutDhEQGyWRvEqM1UjH0TiSTrRN2Gl8WdPeIUQ2A\
DLNueFaANCnkTcb2UqY0vr6ADyOsnmJrdEH3zCIss-JIJFbsrNo2BTKv09rSisBu\
9PY-ZBMCfLqaG9dEtxG3FZPMCcT2HXbyOYbk6fXLjaUXGQOethqXrVsqpqGK-e95\
yA00ZOc794sRym-FgbwFSPbKKpV27cTaqFVdh0MivTZZYcmZeXRZqgmHY1fcCdq6\
C7rCLwzHG6vV36a_eCvzERMBFtV98cV3SPNLPZ0_wup-XvZHo9B-9ODifZpk57cZ\
AifAinPowNg4-Eucbk5e-WGqzmb6d2r0rY0f_sugxpkyDu8YO7EKMASvF8Z0nG9R\
c9OtNzxXMrW7G81KQy4wuq3zBNEVlpdLge0VknS5cNBKZgBLiwpQsDqK8jDDO17l\
nxe3TxgU-nZ9E5m5k_lkhqVYszNenEIohO_1PWf_FOhZQCLuG8FiAVo_EvsloT5t\
zYrdZlZdnJCJT8CvNxPPA4SghyYW7Fs2hBVb8kKyvBTME1meVMLyTuhzlh_F4-HX\
1GWaTkjVkhDqVC3BWuyw5ftNFsSXYLv_Re4LjrXe04ICkg_pV36TFOukdEQIoW1s\
uz3QahuGyL59Xu9bJ9e4Fak4KI-WA-QmTzj3oMTpx0Y2KYPHZYe-NN_lCum6yMBS\
IBsS3RJXoYRqqTWH4ZY4MjkVCkWKST7Y-TUzroRJ-8Z2IBEmV_ggz1JcXfvkL4E5\
oMpNOHuO4xqvng7MFK6iecud-i3e94BckHfYmr7aYeOsf3X8KfQwrHMW3z0TRm9Z\
jRQb64y7fxCjgklRu3ClpAuPSmNn2-MtN2VH3DrSwoGGEr7t3HDFC5Rb0U4wheDa\
UMHrMwZSqDzcu_DCSGOv5-PK8asA",
"priv": "ow9QjhhV5ORaLbpMB3INQPLVmTl7F5tnPDUugwXey5Q"
}
The following key pair uses the ML-DSA-65 parameter set and is referred to in this appendix as test-key-ml-dsa-65. The 32-byte seed from which the key pair is derived, in Base64:¶
UDNyKhTWCuNLXHxEthdQWNbuSouTeXiRK0xosHC3O5U=
The 1952-byte public key, encoded as described in Section 7.2 of [FIPS204], in Base64:¶
NOTE: '\' line wrapping per RFC 8792 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\ XfrnNrKlv4OsTU17dAg=
The same key pair in PKCS #8 and SubjectPublicKeyInfo form:¶
-----BEGIN PRIVATE KEY----- MDQCAQAwCwYJYIZIAWUDBAMSBCKAIFAzcioU1grjS1x8RLYXUFjW7kqLk3l4kStM aLBwtzuV -----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY----- 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 rE1Ne3QI -----END PUBLIC KEY-----
The same key pair as a JSON Web Key:¶
NOTE: '\' line wrapping per RFC 8792
{
"kty": "AKP",
"alg": "ML-DSA-65",
"kid": "test-key-ml-dsa-65",
"pub": "1U0-Ckh1uRZcW7IiQnaaMFyiiyNyicABlJ9k8UsrqaY2nRlhbHsmPsE9Cv\
h_JHjcLj1YB1KiSi8sD8l_lLPuePjMbl9_izN6pbHT3Zk7mn-1PQgy2WgJ4cLCH5\
S4mphR1lpiKFLnFIUjAplpfQQjxqE2QknOCdM6uuhRX1llf91o3HklII4w6lPW1W\
e3R4SB3qOkXZxupYG4yp27t58xEKrMXKO0Xc3iXS0-8dkZgSAkI9SMa54ypcwHbV\
89AOqRl2i4yueq40l2GEgK6kYFHLCyqMB-tfldlbk-pBvs6Jkkzw5qLO49Xn5tAw\
LtgooSy6zhBNgFosSiOfg5IjpNOgfEy58Nb-mf6ewSE3XD1lyIk_9r-FuU6W6Ezd\
Oxq2in7CJ7YzT_Itov5_1x8dffipspuweJzRprcbutFyXJSUMA2sIw5Eubg8xCCM\
L1SszpLVnwYdIWxL5hpzHc--3P1xQLlRnlxtByDs9HA27vEMPhX8QoxF8P_A6ueV\
M8aofJanMWOeHrHcEK5wZDRBaNHgZxQBA1wSA27RMBI1hW8nK8g_D5_i4idelzO9\
WdpSpTEdUm0Lgh3nu42KEeU5-3o3Rr1uungGizf_LyiB9OEfpqqvnN2db_8BMV1N\
CDRNErf1tkIZv3Nt1Teyp3cUhQNhqiF7v_REllfxgd8Exa57mxcMkyJ7ehiDPqS1\
yvDx3k_UNiGDIHa8TYpAE-7tuMTlhO74Tq8yKgBRixfgw1hXyLtUff0IY2waQgyo\
Q9JBta-wmgF3I5X8oCDT60_hBmYvTKf7jSjsTDl7ogyOcqvB4p6UcX9mD9BBxJYW\
LlSAT03XTm_dsu7rYo_VO_HLMlqmZKs8SxBf1lJV6F8_UJSCtvG-qR_APkBNhTDU\
S-dO97OMyP2bwpSQ1z7_9oiCdMgE31yP_a0B6CGeBoHGCwJDgU0865gRlRoDr3NA\
SGJELPl2jcgEJJzowZy8fPpfFIl58ZvOBkkQPwzw5t8QfsQX-TNjU6HWBzZgCNSX\
8-MfbavZv5_Kc4jzKsSUpREGkrp9nJ5tk2MyKjYufUob_6WzDRdmAYlJR-2qLRgM\
iWeDpir0VpZUUJe5mpp3m64ewwtIerSzzkd_tk8fTo9j00ZZNUTMDxFJGLaMD4iC\
1owW36WpiIBQmOGIINo2tXFLPtzhy8l0RxxtWI_HhdZNFnaTG5CLula0oCjDgn0t\
CTpYraUA1I2TQ7nzr9lBmMRKyBx0lHpcDisb5_pMD0oEPJhOarEDOirURwaFPwR3\
MEev75IMUHAkWqp_GG9PW8mNv2GNqUXU2GGjoVkC8FkNQF2xchN7xVbA_4mwxP3t\
U4vg8fTa5jOUHDLLttr_W3YdOMRKdsdxo5eqhcCuThLiUGr5JcFeISj9xS3xpXUV\
QFZAJI1TUJNvECTSAocUBhtKvioho9926T7Ouf9MBqy8VrBrjId3OY47HNbOFsrk\
Gv2_t-0_n9PahrTVOmzruC1SOh93A0kCVwNaI5BBuX3Jolf4eGmvypZOmfg9M-6j\
Dsu8pH533OF1LDwHtlAJn6EDoyOTBbi3I6P1WqsCMyA9_VrwKTuA-rVcBZIYeGFJ\
rnGM-_lxcxzON2xUOLruEHAfbFO9jcPAfMeIajCLlUiXFrzgShZ05YtLdGI-F9S3\
47wtpakVDf8Ce6n4aezbiYa9UDIpW7YPijUCmoPSIlT4_xTIb0RzJnQr5LiJtVvR\
bm5tJ5YMOfX1jaNmBBg7rmbCzq4pWpgamVMVctoQvLkAiNk7iluQpaCTGjQKfDLk\
73mbT-8zu349o-_dqlPtvBfIMMtcCXxpsOBjndAGLkYlPdW4ZpVtND9qPQO2eABi\
Zu90KgH5BswLD5vlarmTl06eQOLBIJM8GyE1noRnp217uVJ_O0YNjxLkFghQO96J\
jDtvOblvep4_xATlbij5j9JwPKVogz2G6kbj2RMBH6Bd5fc7DUoIaGfdS1EkCIng\
mRP8bB2pvAbrO5FOUI8KVHklg6g3Vbrye-th6HMYMezjcsmG3nL04HAIode5KzwR\
hHtkRrTYyd9UOnMqPSESZ3g1hfoK0yzfdLtmZbMdyRXcw1SMiugTje5T3c5b3TD8\
h1N0_8Ddw-ZpIxZvUePWwLkFLV8YiLBDKAVBJpZcwU7zDOBYgISt3m8dDW8pr63c\
kHdF0J4Xk7npfaU067IOobPTwjCXiitV4OsF9aptgbNLeT0vDc5FRAH_wdtubwtC\
XxWol8xY_obYc0bTJF3QQTBg8rrC5xyBW7Gf-OdVIU_dkiupSvYuiGsk9TDBeG7y\
UCcwaG-xZ9rfyT0fLnoF4ictBA11CQIcfE4TONTYlgaKPIcDdrq2fx3PB3QDZmnl\
GMDLLOzZ-cQP6fpgIXBwAj-C2pIptfqQ6gX6HhWv_nCe4Skn18gIvc23etUwJHak\
mEPoDeorqA3SE2Kgo1YcJYpwISWTr7FSEvueqi5iM2YiwM2TYWugUELGwt-whHx8\
0FcbGtz2HLUvjGnrtnXJlXxw8SObx-b1Eams1rrnKZ6U9-aDyAif_nAhg3PjwbNS\
sJmtgTpthNnauGwtgSJ3NlWDQh2xkLXfrnNrKlv4OsTU17dAg",
"priv": "UDNyKhTWCuNLXHxEthdQWNbuSouTeXiRK0xosHC3O5U"
}
The following key pair uses the ML-DSA-87 parameter set and is referred to in this appendix as test-key-ml-dsa-87. The 32-byte seed from which the key pair is derived, in Base64:¶
0IO940ljr/P08jNdPj2m5FicMkFrfasuaWd95K0Wj4s=
The 2592-byte public key, encoded as described in Section 7.2 of [FIPS204], in Base64:¶
NOTE: '\' line wrapping per RFC 8792 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
The same key pair in PKCS #8 and SubjectPublicKeyInfo form:¶
-----BEGIN PRIVATE KEY----- MDQCAQAwCwYJYIZIAWUDBAMTBCKAINCDveNJY6/z9PIzXT49puRYnDJBa32rLmln feStFo+L -----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY----- 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 p3RoyYGUcSwqXDgjwC3zIkrOWwYeXg== -----END PUBLIC KEY-----
The same key pair as a JSON Web Key:¶
NOTE: '\' line wrapping per RFC 8792
{
"kty": "AKP",
"alg": "ML-DSA-87",
"kid": "test-key-ml-dsa-87",
"pub": "xrzhAebvRTHrYnvLX1iU4uFaS66DQUPhWfP7CqGTGgjB_eQ-dxbWDGNTOG\
UT1fag92tg_uP1YB0adVlyrsbXKj1VLYf0gatwxAF3H0LpyeQnjz9e9MhenLt8IQ\
56vHIDgOaJQUMIgzt78gp71zDj_cfm6HtjWCE9kDyJrBBLV3J_VUnInY_G8_7cqT\
a-CQnkHB5JpegUUXwxGWkPIaABjaXbgeu5-2R0R49Li4AvQCSC3nt9xWFBr2drDz\
ZCxzUJISPAe6fOsSPrM_59Sm9PWDosugixYxDpj_Yk7CY1WKARZbYGt3I6AsgAma\
I9SvWlUmA1tqPwzc75JdH5ohU6zHx6-1p9lok4-OpxCu8pcfZ-f_tEomFYn9EvJ1\
bR6OWMXHmcxDQUpjc4x-uf1sN8Vn7ZhL7S_PsBcBLuBWRD9OVjYhfhHzRzuI5fTv\
CWpfps7JFKwuZzK27q7bZD90hCFbNnXF-aQaiX_PdYKTex8AlzPpUXZzrxq7wGaK\
mX2VKpw7Jb-xecfjXwhwJOLZva_fCzYROk1znSnwjj_H2XOWRuuIWy9RSnqJuQGO\
fAtI5gvy8G1r3qUSXKcMuLDBL3R7U1QDJFFGxazg5Vg3Om5UiHYY6QVJyM7UeQ8u\
xVOkn2WD_XFgh1Sep6sb_2t6VFmuSJVac2VL5wmivJU-UIEv0_lMCjo-3dVsTRXa\
y4LMwOLzMNnC_GhmwX1_G0o7EnM-UbNipr4wGxBq5wcdy72WanqVVR27u-r7165h\
okdkncefpXNPj27t5r7341RPfCt8a6n409yvguUQ0mpGqAEKwzzXwVvFiTKOsBVO\
JKCbZLPTt7nCqvISbXTUBD20Aeb2fkaTLSFynD4vcf_sOoswT0BSSq7lqTOgGIfE\
LWER8KOjj8ig9z8bck9iSiWS-hLMlzqBl61LlZAcpe5uKV3zw6NP_er8m0dAENqe\
JOV4FLqK1Zd5_Yh5YtJjFNpdF4DH_r1P_96_EX3yWDF6_uJrkNQL1yT9BLizSoXH\
3jHh1sPzoO3erzefUqVmdrWvZbD6wnGcPTm9jPaCTCqQbgK-m92fq7qDga13wNaa\
0y6ESL7QO8MpWX4bsrHluO3iSGhKi4auzwk8-lklBE_ZgclE0lJ8A5eKnZkPBQxg\
hgyccYoSvsCTbkh9T5ESQNXh4GJHJfmcLhtR04XLAEYohgcHpDtYXcseZwPbNe7U\
hYQp0VvvqjliqNf8cvcuLsxjxQjkXoZGNRx_uJLCZz-Xzs8mk6LZ077cSLdhlSlU\
KmPje29fslmVW1-sA9zB_yusdCM3KjmZx4w2FdyvXDWPR62hHTEBoSFN32yarghl\
zp1rdQ2piYlwuyjNnXROFqWYwzCyGyg21bLEsj1R5HB7cE9ZU1MDnN8GaTzwQjNt\
9uNZtVfxvc2bsFI8pWulBi6kKSJqH0ctCAoQvod9-TCahks9cR5FvP092C3jvLyh\
vBt0q3N186SXeuKjkD2gk13tTG73I8BpqbJbLzRRoBN5YGTD6tSlIyv020X3AAZm\
Xs7uHfMBoNQ6zM7PgMDLihir9S85so2crs31b5GU-jOV7OPbMh1D1OwYDBuNZjzQ\
9DpCGZaRW7LEZupi5QDr4XvZx9b3KnrMKmZDbI3TD2XjML6COKIqbmTVSqTQKNRS\
nZI14dCKPZc3yJMT44iCANtKd-bl5sH5vz1XrAcmhaedKmB5wF37ecBhASZNZ4fr\
b0XiGjql38OEYm1XtJdRlIvzyd68MJrkUH6tGcdip22iWMnIz_1oQAO5NPbk401U\
fAPE9wLrbc5tdAHKzpg_2irrIhAUvvlN4eGIY3XKnTYpArQCQIzKrVIKzBDkUu6w\
g6WBsSI0McFhqek31xIcff9oLtmv3F5c6ZAaAo6lbcalYPoBG-e4aazVLC5ESmqI\
cKxuQT6UXvEzLddaJA6n1pw3gW5cIMpKFUiOPoGdKEwYDf9JrR7iZHqddpwtIDPj\
OdL3uQgYGnvEq9m_nP4LUhofCtC7Ma05HGRP-fkkSAsHhZPoOlQIhz2fpN-jVGOs\
arSGTypg2yRJaE1CmWhhWkEee1BLRmNKePPIaPL-2KQ1JXoj4dBDzdVgm4_3z5w1\
nnISmrkP7qFfOx4MRjt3oU15DhBq5GCOjTb3sDTqT351CzpHPvKjiFNtgKzFz_rf\
TEsLFqHHNVnbHVN4QQx5KcOIA_HIJY1W_zn7d5VBeUvrahaX-NaAnICJQuC3Pl9p\
1RpM3nddWFXTkcDkqyHf2msbLSMAQPcjGcz71g09VNw8AhDICXoboyi3xvp9kbyM\
eQ8DzSHFL3zqNERAE9GODB5XofEcbJ6mdsMWZZNwAsUsBU7A4idjA4kNPy-_DB02\
aSEtIlRvZZaoXC0vSlqa0olJeBOKWWqQMuuS6-6qP4WkUUo4JTn1GNVhfdhqN50v\
MO7SecBU8xOk5deWUg1A4MOeh6joLxgrDBr93XkDwHfqrIo36lNgOW2Su1KfdmZy\
Su_KqGLUDNNLuN3JOePQ3is1-y869dux9OPJeRz8nB_4xcRRtw2V44Rpy2O31jZ8\
WXs9ag-GIMwIdtGgqjqmvIdcLdrC4ciZwikfnb8O1fUdnCHTmPLIb9KyVxcFyX4I\
Y6HPASwPr5HbQjUpyKvHKyvctsb6TyL4ea0B4UHeAcT-1rbBTm-39pg-jpPRZx8d\
1QYF54MAeiUHZhmIBaZhHvo7lJuj_F8bSFb_pqQkE725Ru6B8ul6U8Fg-6AMRDbh\
W9R4li-NI5-QLSdXz9ft4c33XAoJMt8bDF5OfEBgfgu5Gapv7zLFxL3YE_OEht09\
GRXbxliEj6a66RxSYQr9zKMDxK8SUIGaN60IKoSICwX1QKoCqQy3oFGHYmgK9UcV\
OZaPEXBWbt0yRgc9FcVAvKZrumzFAurdII0i6rH1UTBXCR7dYLZ0zeMDtDRGsnzN\
_j9uijAZAsGPbfSM1V-idy2-6lLOaXrbQNcBHxRvOZCV-PMwl35_fXxWwaYFdBWU\
mu0aXqqMC6ZPnfuap3rMZnnINsL1q7foFxrjy9YTZhaSsFchvzM1ge3NZQjJAsOP\
tsHgzV5-DJ9hMfgEqaXPz49dwlLnzbSO9HZQ3uCbCoII7s-4ZiB8FXZSDbW1QYIL\
2TfM6e5zZCC2D2t-kVa6UCRR6zABT3KOec6qH4X2q7P5sOQZ3SU2T9aM_rlYkzU2\
XcU3sSg41_M5J6N60lw-OAiazUVt0j3GNE5FfBudoUiuPEbgskLFq9j7EgehR7s_\
hkp13OXLTZ-mo_Uk22o9QL8YCf2VxjP_pKff3ZJNdnT9vdKWO-knJFli2JP_48gY\
ufCNeeNLzVhe_hXJwqYchMntvKoEk-kkn-0uI2DsXPh8eSsnYIlL_7P7a_SYnPDN\
vvMA2x68eqR9SPU_EbretzsBwJ4RW5NN1gLCe_ti2ndGjJgZRxLCpcOCPALfMiSs\
5bBh5e",
"priv": "0IO940ljr_P08jNdPj2m5FicMkFrfasuaWd95K0Wj4s"
}
Each test case covers the same components of Appendix A.1, using the alg
signature parameter to name the algorithm.¶
This example uses the ml-dsa-44 algorithm and the key test-key-ml-dsa-44. The
corresponding signature base is:¶
NOTE: '\' line wrapping per RFC 8792
"date": Tue, 20 Apr 2021 02:07:55 GMT
"@method": POST
"@path": /foo
"@authority": example.com
"content-type": application/json
"content-length": 18
"@signature-params": ("date" "@method" "@path" "@authority" "content\
-type" "content-length");created=1618884473;keyid="test-key-ml-dsa-4\
4";alg="ml-dsa-44"
This results in the following Signature-Input and Signature fields being added to the message under the label sig-mldsa:¶
This example uses the ml-dsa-65 algorithm and the key test-key-ml-dsa-65. The
corresponding signature base is:¶
NOTE: '\' line wrapping per RFC 8792
"date": Tue, 20 Apr 2021 02:07:55 GMT
"@method": POST
"@path": /foo
"@authority": example.com
"content-type": application/json
"content-length": 18
"@signature-params": ("date" "@method" "@path" "@authority" "content\
-type" "content-length");created=1618884473;keyid="test-key-ml-dsa-6\
5";alg="ml-dsa-65"
This results in the following Signature-Input and Signature fields being added to the message under the label sig-mldsa:¶
This example uses the ml-dsa-87 algorithm and the key test-key-ml-dsa-87. The
corresponding signature base is:¶
NOTE: '\' line wrapping per RFC 8792
"date": Tue, 20 Apr 2021 02:07:55 GMT
"@method": POST
"@path": /foo
"@authority": example.com
"content-type": application/json
"content-length": 18
"@signature-params": ("date" "@method" "@path" "@authority" "content\
-type" "content-length");created=1618884473;keyid="test-key-ml-dsa-8\
7";alg="ml-dsa-87"
This results in the following Signature-Input and Signature fields being added to the message under the label sig-mldsa:¶
The algorithm identifiers registered by this document are the same as those used in earlier work by Soatok Dreamseeker [HTTPSIG-PQ].¶