RFC 9935 | ML-KEM in Certificates | March 2026
Turner, et al. | Standards Track | [Page]

Stream:
  Internet Engineering Task Force (IETF)
RFC:
  9935
Category:
  Standards Track
Published:
  March 2026
ISSN:
  2070-1721
Authors:
  S. Turner
  sn3rd
  P. Kampanakis
  AWS
  J. Massimo
  AWS
  B. E. Westerbaan
  Cloudflare

# RFC 9935

# Internet X.509 Public Key Infrastructure - Algorithm Identifiers for the Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM)

## Abstract

The Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) is a quantum-resistant Key Encapsulation Mechanism. This document specifies the conventions for using the ML-KEM in X.509 Public Key Infrastructure. The conventions for the subject public keys and private keys are also specified.¶

## Status of This Memo

This is an Internet Standards Track document.¶

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.¶

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9935.¶

## Copyright Notice

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.¶

## 1. Introduction

The Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) standardized in [FIPS203] is a quantum-resistant Key Encapsulation Mechanism (KEM) standardized by the US National Institute of Standards and Technology (NIST) Post-Quantum Cryptography (PQC) Project [NIST-PQC]. Prior to standardization, versions of the mechanism were known as Kyber. ML-KEM and Kyber are not compatible. This document specifies the use of ML-KEM in Public Key Infrastructure using X.509 (PKIX) certificates [RFC5280] at three security levels: ML-KEM-512, ML-KEM-768, and ML-KEM-1024, using object identifiers (OIDs) assigned by NIST. The private key format is also specified.¶

### 1.1. Applicability Statement

ML-KEM certificates are used in protocols where the public key is used to generate and encapsulate a shared secret used to derive a symmetric key used to encrypt a payload; see [RFC9936]. To be used in TLS, ML-KEM certificates could only be used as end-entity identity certificates and would require significant updates to the protocol; for example, see [KEM-TLS].¶

## 2. Conventions and Definitions

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.¶

## 3. Algorithm Identifiers

The `AlgorithmIdentifier` type is defined in [RFC5912] as follows:¶

      AlgorithmIdentifier{ALGORITHM-TYPE, ALGORITHM-TYPE:AlgorithmSet} ::=
        SEQUENCE {
          algorithm   ALGORITHM-TYPE.&id({AlgorithmSet}),
          parameters  ALGORITHM-TYPE.
                        &Params({AlgorithmSet}{@algorithm}) OPTIONAL
        }

¶

NOTE: The above syntax is from [RFC5912] and is compatible with the 2021 ASN.1 syntax [X680]. See [RFC5280] for the 1988 ASN.1 syntax.¶

The fields in `AlgorithmIdentifier` have the following meanings:¶

- `algorithm` identifies the cryptographic algorithm with an OID.¶

- `parameters`, which are optional, are the associated parameters for the algorithm identifier in the `algorithm` field.¶

The `AlgorithmIdentifier` for an ML-KEM public key MUST use one of the `id-alg-ml-kem` OIDs from NIST [CSOR] listed below, based on the security level. The `parameters` field of the `AlgorithmIdentifier` for the ML-KEM public key MUST be absent.¶

      nistAlgorithms OBJECT IDENTIFIER ::= { joint-iso-ccitt(2)
        country(16) us(840) organization(1) gov(101) csor(3)
        nistAlgorithm(4) }

      kems OBJECT IDENTIFIER ::= { nistAlgorithms 4 }

      id-alg-ml-kem-512 OBJECT IDENTIFIER ::= { kems 1 }

      id-alg-ml-kem-768 OBJECT IDENTIFIER ::= { kems 2 }

      id-alg-ml-kem-1024 OBJECT IDENTIFIER ::= { kems 3 }

¶

## 4. Subject Public Key Fields

In the X.509 certificate, the `subjectPublicKeyInfo` field has the `SubjectPublicKeyInfo` type, which has the following ASN.1 syntax:¶

      SubjectPublicKeyInfo {PUBLIC-KEY: IOSet} ::= SEQUENCE {
          algorithm        AlgorithmIdentifier {PUBLIC-KEY, {IOSet}},
          subjectPublicKey BIT STRING
      }

¶

The fields in `SubjectPublicKeyInfo` have the following meaning:¶

- `algorithm` is the algorithm identifier and parameters for the public key (see above).¶

- `subjectPublicKey` contains the byte stream of the public key.¶

For each ML-KEM parameter set (see Table 1), we define a `PUBLIC-KEY` ASN.1 type as follows:¶

      pk-ml-kem-512 PUBLIC-KEY ::= {
        IDENTIFIER id-alg-ml-kem-512
        -- KEY no ASN.1 wrapping; 800 octets --
        PARAMS ARE absent
        CERT-KEY-USAGE { keyEncipherment }
        PRIVATE-KEY ML-KEM-512-PrivateKey -- defined in Section 6
        }

      pk-ml-kem-768 PUBLIC-KEY ::= {
        IDENTIFIER id-alg-ml-kem-768
        -- KEY no ASN.1 wrapping; 1184 octets --
        PARAMS ARE absent
        CERT-KEY-USAGE { keyEncipherment }
        PRIVATE-KEY ML-KEM-768-PrivateKey -- defined in Section 6
        }

      pk-ml-kem-1024 PUBLIC-KEY ::= {
        IDENTIFIER id-alg-ml-kem-1024
        -- KEY no ASN.1 wrapping; 1568 octets --
        PARAMS ARE absent
        CERT-KEY-USAGE { keyEncipherment }
        PRIVATE-KEY ML-KEM-1024-PrivateKey -- defined in Section 6
        }

      ML-KEM-512-PublicKey ::= OCTET STRING (SIZE (800))

      ML-KEM-768-PublicKey ::= OCTET STRING (SIZE (1184))

      ML-KEM-1024-PublicKey ::= OCTET STRING (SIZE (1568))

¶

When an ML-KEM public key appears outside of a `SubjectPublicKeyInfo` type in an environment that uses ASN.1 encoding, it can be encoded as an OCTET STRING by using the `ML-KEM-512-PublicKey`, `ML-KEM-768-PublicKey`, and `ML-KEM-1024-PublicKey` types corresponding to the correct key size.¶

[RFC5958] describes the Asymmetric Key Package's `OneAsymmetricKey` type for encoding asymmetric key pairs. When an ML-KEM private key or key pair is encoded as a `OneAsymmetricKey`, it follows the description in Section 6.¶

When the ML-KEM private key appears outside of an Asymmetric Key Package in an environment that uses ASN.1 encoding, it can be encoded using one of the `ML-KEM-PrivateKey CHOICE` formats defined in Section 6. The `seed` format is RECOMMENDED, as it efficiently stores both the private and public key.¶

Appendix C.2 contains examples for ML-KEM public keys encoded using the textual encoding defined in [RFC7468].¶

## 5. Key Usage Bits

The intended application for the key is indicated in the keyUsage certificate extension; see Section 4.2.1.3 of [RFC5280]. If the `keyUsage` extension is present in certificates, then `keyEncipherement` MUST be the only key usage set for certificates that indicate `id-alg-ml-kem-*` in `SubjectPublicKeyInfo`, (with `*` being one of 512, 768, or 1024.)¶

## 6. Private Key Format

[FIPS203] specifies two formats for an ML-KEM private key: a 64-octet seed and an (expanded) private key, which is referred to as the decapsulation key. The expanded private key (and public key) is computed from the seed using `ML-KEM.KeyGen_internal(d,z)` (algorithm 16) using the first 32 octets as d and the remaining 32 octets as z. If the expanded private key is generated without exporting the seed, `ML-KEM.KeyGen()` (algorithm 19) is used; it combines seed generation with `ML-KEM.KeyGen_internal(d,z)`.¶

A key pair is generated by sampling 64 octets uniformly at random for the seed (private key) from a cryptographically secure pseudorandom number generator (CSPRNG). The public key can then be computed using `ML-KEM.KeyGen_internal(d,z)` as described earlier.¶

"Asymmetric Key Packages" [RFC5958] describes how to encode a private key in a structure that both identifies which algorithm the private key is for and allows for the public key and additional attributes about the key to be included as well. For illustration, the ASN.1 structure `OneAsymmetricKey` is replicated below.¶

      OneAsymmetricKey ::= SEQUENCE {
        version                  Version,
        privateKeyAlgorithm      SEQUENCE {
        algorithm                PUBLIC-KEY.&id({PublicKeySet}),
        parameters               PUBLIC-KEY.&Params({PublicKeySet}
                                   {@privateKeyAlgorithm.algorithm})
                                      OPTIONAL}
        privateKey               OCTET STRING (CONTAINING
                                   PUBLIC-KEY.&PrivateKey({PublicKeySet}
                                     {@privateKeyAlgorithm.algorithm})),
        attributes           [0] Attributes OPTIONAL,
        ...,
        [[2: publicKey       [1] BIT STRING (CONTAINING
                                   PUBLIC-KEY.&Params({PublicKeySet}
                                     {@privateKeyAlgorithm.algorithm})
                                     OPTIONAL ]],
        ...
      }

¶

For ML-KEM private keys, the privateKey field in `OneAsymmetricKey` contains one of the following DER-encoded `CHOICE` structures. The `seed` format is a fixed 64-byte `OCTET STRING` (66 bytes total with the `0x8040` tag and length) for all security levels, while the `expandedKey` and `both` formats vary in size by security level:¶

      ML-KEM-512-PrivateKey ::= CHOICE {
        seed [0] OCTET STRING (SIZE (64)),
        expandedKey OCTET STRING (SIZE (1632)),
        both SEQUENCE {
          seed OCTET STRING (SIZE (64)),
          expandedKey OCTET STRING (SIZE (1632))
          }
        }

      ML-KEM-768-PrivateKey ::= CHOICE {
        seed [0] OCTET STRING (SIZE (64)),
        expandedKey OCTET STRING (SIZE (2400)),
        both SEQUENCE {
          seed OCTET STRING (SIZE (64)),
          expandedKey OCTET STRING (SIZE (2400))
          }
        }

      ML-KEM-1024-PrivateKey ::= CHOICE {
        seed [0] OCTET STRING (SIZE (64)),
        expandedKey OCTET STRING (SIZE (3168)),
        both SEQUENCE {
          seed OCTET STRING (SIZE (64)),
          expandedKey OCTET STRING (SIZE (3168))
          }
        }

¶

The `CHOICE` allows three representations of the private key:¶

- The `seed` format (tag [0]) contains just the 64-byte seed value from which both the expanded private key and public key can be derived using `ML-KEM.KeyGen_internal(d,z)` (algorithm 16) using the first 32 octets as d and the remaining 32 octets as z.¶

- The `expandedKey` format contains the expanded private key that was derived from the seed. If the seed is not exported, both the expanded private key and public key can be derived using `ML-KEM.KeyGen()` (algorithm 16).¶

- The `both` format contains both the seed and expanded private key, allowing for interoperability; some may want to use and retain the seed and others may only support expanded private keys.¶

The `privateKeyAlgorithm` field uses the `AlgorithmIdentifier` structure with the appropriate OID as defined in Section 3.¶

The publicKey field contains the byte stream of the public key. If present, the `publicKey` field will hold the encoded public key as defined in Section 4.¶

Note that while the private key can be stored in multiple formats, the seed-only format is RECOMMENDED, as it is the most compact representation. Both the expanded private key and the public key can be deterministically derived from the seed using `ML-KEM.KeyGen_internal(d,z)` (algorithm 16) using the first 32 octets as d and the remaining 32 octets as z. Alternatively, the public key can be extracted from the expanded private key. While the `publicKey` field and `expandedKey` format are technically redundant when using the seed-only format, they MAY be included to enable key pair consistency checks during import operations.¶

When parsing the private key, the ASN.1 tag explicitly indicates which variant of `CHOICE` is present. Implementations should use the context-specific tag `IMPLICIT [0]` (raw value `0x80`) for `seed`, `OCTET STRING` (`0x04`) for `expandedKey`, and `SEQUENCE` (`0x30`) for `both` to parse the private key, rather than any other heuristic like length of the enclosing `OCTET STRING`.¶

Appendix C.1 contains examples for ML-KEM private keys encoded using the textual encoding defined in [RFC7468].¶

## 7. Implementation Considerations

Though Section 7.1 of [FIPS203] mentions the potential to save seed values for future expansion, Algorithm 19 does not make the seed values available to a caller for serialization. Similarly, the algorithm that expands seed values is not listed as one of the "main algorithms" and features "internal" in the name even though it is clear that it is allowed to be exposed externally for the purposes of expanding a key from a seed. Below are possible ways to extend the APIs defined in [FIPS203] to support serialization of seed values as private keys.¶

To support serialization of seed values as private keys, let Algorithm 19b denote the same procedure as Algorithm 19 in [FIPS203], except it returns (ek, dk, d, z) on line 7. Additionally, Algorithm 16 should be promoted to be a "main algorithm" for external use in expanding seed values.¶

Note also that unlike other private key compression methods in other algorithms, expanding a private key from a seed is a one-way function, meaning that once a full key is expanded from a seed and the seed discarded, the seed cannot be recreated even if the full expanded private key is available. For this reason, it is RECOMMENDED that implementations retain and export the seed, even when also exporting the expanded private key.¶

## 8. Private Key Consistency Testing

When receiving a private key that contains both the seed and the expandedKey, the recipient SHOULD perform a seed consistency check to ensure that the sender properly generated the private key. Recipients that do not perform this seed consistency check avoid keygen and compare operations, but they are unable to ensure that the `seed` and `expandedKey` match.¶

If the check is done and the `seed` and the `expandedKey` are not consistent, the recipient MUST reject the private key as malformed.¶

When receiving a private key that contains an `expandedKey`, [FIPS203] stipulates in Section 7.3 that before use, a "hash check" MUST be performed. That section stipulates two other checks on the type and length of the `expandedKey`, which are ensured by this standard.¶

The seed consistency check consists of regenerating the expanded form from the seed via `ML-KEM.KeyGen_internal(d,z)` (algorithm 16) using the first 32 octets as d and the remaining 32 octets as z and ensuring it is bytewise equal to the value presented in the private key.¶

Appendix C.4 includes some examples of inconsistent seeds and expanded private keys.¶

## 9. Security Considerations

The Security Considerations section of [RFC5280] applies to this specification as well.¶

Protection of the private key information, i.e., the seed, is vital to public key cryptography. Disclosure of the private key material to another entity can lead to masquerades.¶

The generation of private keys relies on random numbers. The use of inadequate pseudorandom number generators (PRNGs) to generate these values can result in little or no security. An attacker may find it much easier to reproduce the PRNG environment that produced the keys, searching the resulting small set of possibilities, rather than brute force searching the whole key space. The generation of quality random numbers is difficult. ML-KEM key generation has specific requirements around randomness generation as described in Section 3.3 of [FIPS203].¶

Many protocols only rely on the IND-CCA security of a KEM. Some (implicitly) require further binding properties, formalized in [CDM23]. The private key format influences these binding properties. Per [KEMMY24], ML-KEM is LEAK-BIND-K-PK-secure and LEAK-BIND-K-CT-secure when using the expanded private key format, but not MAL-BIND-K-CT nor MAL-BIND-K-PK secure. Using the 64-byte seed format provides a step up in binding security, and additionally provides MAL-BIND-K-CT security (but still does not provide security for MAL-BIND-K-PK).¶

For more detailed ML-KEM specific security considerations regarding this, randomness, misbinding properties, decapsulation failures, key reuse, and key checks, refer to [ML-KEM-SEC-CONS].¶

## 10. IANA Considerations

For the ASN.1 module in Appendix A, IANA has assigned an OID for the module identifier (121) with a description of "id-mod-x509-ml-kem-2025" in the "SMI Security for PKIX Module Identifier" registry (1.3.6.1.5.5.7.0).¶

## 11. References

### 11.1. Normative References

[CSOR]
  NIST, "Computer Security Objects Register (CSOR)", 13 June 2025, <https://csrc.nist.gov/projects/computer-security-objects-register/algorithm-registration>.
[FIPS203]
  NIST, "Module-Lattice-Based Key-Encapsulation Mechanism Standard", NIST FIPS 203, DOI 10.6028/NIST.FIPS.203, August 2024, <https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.pdf>.
[RFC2119]
  Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
[RFC5280]
  Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, <https://www.rfc-editor.org/info/rfc5280>.
[RFC5912]
  Hoffman, P. and J. Schaad, "New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, DOI 10.17487/RFC5912, June 2010, <https://www.rfc-editor.org/info/rfc5912>.
[RFC5958]
  Turner, S., "Asymmetric Key Packages", RFC 5958, DOI 10.17487/RFC5958, August 2010, <https://www.rfc-editor.org/info/rfc5958>.
[RFC8174]
  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC9629]
  Housley, R., Gray, J., and T. Okubo, "Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)", RFC 9629, DOI 10.17487/RFC9629, August 2024, <https://www.rfc-editor.org/info/rfc9629>.
[X680]
  ITU-T, "Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation", ITU-T Recommendation X.680, ISO/IEC 8824-1:2021, February 2021, <https://www.itu.int/rec/T-REC-X.680>.
[X690]
  ITU-T, "Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1:2021, February 2021, <https://www.itu.int/rec/T-REC-X.690>.

### 11.2. Informative References

[CDM23]
  Cremers, C., Dax, A., and N. Medinger, "Keeping Up with the KEMs: Stronger Security Notions for KEMs and automated analysis of KEM-based protocols", Cryptology ePrint Archive, Paper 2023/1933, 2023, <https://eprint.iacr.org/2023/1933.pdf>.
[KEM-TLS]
  Wiggers, T., Celi, S., Schwabe, P., Stebila, D., and N. Sullivan, "KEM-based Authentication for TLS 1.3", Work in Progress, Internet-Draft, draft-celi-wiggers-tls-authkem-06, 4 November 2025, <https://datatracker.ietf.org/doc/html/draft-celi-wiggers-tls-authkem-06>.
[KEMMY24]
  Schmieg, S., "Unbindable Kemmy Schmidt: ML-KEM is neither MAL-BIND-K-CT nor MAL-BIND-K-PK", Cryptology ePrint Archive, Paper 2024/523, 2024, <https://eprint.iacr.org/2024/523.pdf>.
[ML-KEM-SEC-CONS]
  Fluhrer, S., Dang, Q., Mattsson, J. P., Milner, K., and D. Shiu, "ML-KEM Security Considerations", Work in Progress, Internet-Draft, draft-sfluhrer-cfrg-ml-kem-security-considerations-04, 17 November 2025, <https://datatracker.ietf.org/doc/html/draft-sfluhrer-cfrg-ml-kem-security-considerations-04>.
[NIST-PQC]
  NIST, "Post-Quantum Cryptography (PQC)", 28 July 2025, <https://csrc.nist.gov/projects/post-quantum-cryptography>.
[RFC7468]
  Josefsson, S. and S. Leonard, "Textual Encodings of PKIX, PKCS, and CMS Structures", RFC 7468, DOI 10.17487/RFC7468, April 2015, <https://www.rfc-editor.org/info/rfc7468>.
[RFC9881]
  Massimo, J., Kampanakis, P., Turner, S., and B. E. Westerbaan, "Internet X.509 Public Key Infrastructure -- Algorithm Identifiers for the Module-Lattice-Based Digital Signature Algorithm (ML-DSA)", RFC 9881, DOI 10.17487/RFC9881, October 2025, <https://www.rfc-editor.org/info/rfc9881>.
[RFC9936]
  Prat, J., Ounsworth, M., and D. Van Geest, "Use of ML-KEM in the Cryptographic Message Syntax (CMS)", RFC 9936, DOI 10.17487/RFC9936, March 2026, <https://www.rfc-editor.org/info/rfc9936>.

## Appendix A. ASN.1 Module

This appendix includes the ASN.1 module [X680] for the ML-KEM. Note that as per [RFC5280], certificates use the Distinguished Encoding Rules; see [X690]. This module imports objects from [RFC5912] and [RFC9629].¶

    <CODE BEGINS>
    X509-ML-KEM-2025
    { iso(1) identified-organization(3) dod(6)
      internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-x509-ml-kem-2025(121) }

    DEFINITIONS IMPLICIT TAGS ::= BEGIN

    EXPORTS ALL;

    IMPORTS

     PUBLIC-KEY
       FROM AlgorithmInformation-2009  -- [RFC 5912]
         { iso(1) identified-organization(3) dod(6) internet(1)
           security(5) mechanisms(5) pkix(7) id-mod(0)
           id-mod-algorithmInformation-02(58) }

     KEM-ALGORITHM
       FROM KEMAlgorithmInformation-2023  -- [RFC 9629]
         { iso(1) identified-organization(3) dod(6) internet(1)
           security(5) mechanisms(5) pkix(7) id-mod(0)
           id-mod-kemAlgorithmInformation-2023(109) };

    --
    -- ML-KEM Identifiers
    --

    nistAlgorithms OBJECT IDENTIFIER ::= { joint-iso-ccitt(2)
      country(16) us(840) organization(1) gov(101) csor(3)
      nistAlgorithm(4) }

    kems OBJECT IDENTIFIER ::= { nistAlgorithms 4 }

    id-alg-ml-kem-512 OBJECT IDENTIFIER ::= { kems 1 }

    id-alg-ml-kem-768 OBJECT IDENTIFIER ::= { kems 2 }

    id-alg-ml-kem-1024 OBJECT IDENTIFIER ::= { kems 3 }

    --
    -- Public Key Algorithms
    --

    PublicKeys PUBLIC-KEY ::= {
      -- This expands PublicKeys from [RFC 5912]
      pk-ml-kem-512 |
      pk-ml-kem-768 |
      pk-ml-kem-1024,
      ...
      }

    --
    -- ML-KEM Public Keys
    --

    pk-ml-kem-512 PUBLIC-KEY ::= {
      IDENTIFIER id-alg-ml-kem-512
      -- KEY no ASN.1 wrapping; 800 octets --
      PARAMS ARE absent
      CERT-KEY-USAGE { keyEncipherment }
      PRIVATE-KEY ML-KEM-512-PrivateKey
      }

    ML-KEM-512-PrivateKey ::= CHOICE {
      seed [0] OCTET STRING (SIZE (64)),
      expandedKey OCTET STRING (SIZE (1632)),
      both SEQUENCE {
          seed OCTET STRING (SIZE (64)),
          expandedKey OCTET STRING (SIZE (1632))
          }
      }

    pk-ml-kem-768 PUBLIC-KEY ::= {
      IDENTIFIER id-alg-ml-kem-768
      -- KEY no ASN.1 wrapping; 1184 octets --
      PARAMS ARE absent
      CERT-KEY-USAGE { keyEncipherment }
      PRIVATE-KEY ML-KEM-768-PrivateKey
      }

    ML-KEM-768-PrivateKey ::= CHOICE {
      seed [0] OCTET STRING (SIZE (64)),
      expandedKey OCTET STRING (SIZE (2400)),
      both SEQUENCE {
          seed OCTET STRING (SIZE (64)),
          expandedKey OCTET STRING (SIZE (2400))
          }
      }

    pk-ml-kem-1024 PUBLIC-KEY ::= {
      IDENTIFIER id-alg-ml-kem-1024
      -- KEY no ASN.1 wrapping; 1568 octets --
      PARAMS ARE absent
      CERT-KEY-USAGE { keyEncipherment }
      PRIVATE-KEY ML-KEM-1024-PrivateKey
      }

    ML-KEM-1024-PrivateKey ::= CHOICE {
      seed [0] OCTET STRING (SIZE (64)),
      expandedKey OCTET STRING (SIZE (3168)),
      both SEQUENCE {
          seed OCTET STRING (SIZE (64)),
          expandedKey OCTET STRING (SIZE (3168))
          }
      }

    ML-KEM-512-PublicKey ::= OCTET STRING (SIZE (800))

    ML-KEM-768-PublicKey ::= OCTET STRING (SIZE (1184))

    ML-KEM-1024-PublicKey ::= OCTET STRING (SIZE (1568))

    END
    <CODE ENDS>

¶

## Appendix B. Parameter Set Security and Sizes

Instead of defining the strength of a quantum algorithm in a typical manner using the imprecise notion of bits of security, NIST has defined security levels by picking a reference scheme, which is expected to offer notable levels of resistance to both quantum and classical attacks. To wit, a KEM algorithm that achieves NIST PQC security must require computational resources to break IND-CCA security comparable or greater than that required for key search on AES-128, AES-192, and AES-256 for Levels 1, 3, and 5, respectively. Levels 2 and 4 use collision search for SHA-256 and SHA-384 as reference.¶

Table 1: Mapping Between NIST Security Level, ML-KEM Parameter Sets, and Sizes in Bytes
Level | Parameter Set | Encap. Key | Decap. Key | Ciphertext | Secret
--- | --- | --- | --- | --- | ---
1 | ML-KEM-512 | 800 | 1632 | 768 | 32
3 | ML-KEM-768 | 1184 | 2400 | 1088 | 32
5 | ML-KEM-1024 | 1568 | 3168 | 1568 | 32

## Appendix C. Examples

This appendix contains examples of ML-KEM public keys, private keys, certificates, and inconsistent seed and expanded private keys.¶

### C.1. Example Private Keys

The following examples show ML-KEM private keys in different formats, all derived from the same seed `000102...1e1f`. For each security level, we show the seed-only format (using a context-specific `[0]` primitive tag with an implicit encoding of `OCTET STRING`), the expanded format, and both formats together.¶

NOTE: All examples use the same seed value, showing how the same seed produces different expanded private keys for each security level.¶

#### C.1.1. ML-KEM-512 Private Key Examples

Each of the examples includes the textual encoding [RFC7468] followed by the so-called "pretty print"; the private keys are the same.¶

##### C.1.1.1. Seed Format

    -----BEGIN PRIVATE KEY-----
    MFQCAQAwCwYJYIZIAWUDBAQBBEKAQAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ
    GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8=
    -----END PRIVATE KEY-----

¶

    SEQUENCE {
      INTEGER { 0 }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.1 }
      }
      OCTET_STRING {
        [0 PRIMITIVE] { `000102030405060708090a0b0c0d0e0f10111213141
    5161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343
    5363738393a3b3c3d3e3f` }
      }
    }

¶

##### C.1.1.2. Expanded Format

    -----BEGIN PRIVATE KEY-----
    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
    JCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==
    -----END PRIVATE KEY-----

¶

    SEQUENCE {
      INTEGER { 0 }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.1 }
      }
      OCTET_STRING {
        OCTET_STRING { `70554fd436344f2785b1b3b1bac184b6679003336c26
    f15a7de878c4825c6be03f3c4a480f75b7486aad31d3a00518623fd207ab528d
    d62721495835ae0062c367b74a71baf10aad0e8a2902076be31348beb15ccc09
    57cdebb4aff226756bbc601b6568ab784acbaeb34702f0f86a26202118b22b23
    f83558776c79c14dba983379c803e0dcc3160a11757030e69c6919798d81eb69
    8a9a4483a99e5a5cb2c31c9a661799f3cc89c790706ea041629045d42a83aed8
    8860e394c69187e2105d28cc14ec393592d67dd00aa43fe8b4eae4414002866b
    5c713c6a8d7d16cf78b819d6f12e9e5a74233908f0b15e3c4ba8329c5cdda55c
    84928e3aa8063e5aa9676403f91735b11010c7f593091364dc86445bc804840a
    9a21724212469f8a7b0ce0ac698eb86cad39a7f4824d9a5163aac21ee6808b05
    3c8a3facb0b6744b5262bbcb26a43f664c8732b64cfc7acf099605f41c796060
    976ac433833fe00343fb1828300a424741116e4b45bb276ea81129a0db4c6e60
    bce611101e8c625474925e0222679308a3e7708d1972a7b423eb232851c36d2e
    d53d3ed3bb7500637061a5dc2292fa1c466c07354683328bec2c1ed2cb5c99b7
    8eca0969038cf7c34dd118724e31cae086206b34302b520f5d177aded5b3cce0
    2acce808ea26bcc072625fdb93f17458a5fc1d4da394380a1f57e9cc66109438
    a075f0d2813fcc4a199cc76db3823f270b0061594192940411a37ffbafae2c15
    0165cec5c6bf73c595fb92cd15312607da070778652bd9944bc48bc7d1a53433
    8bad0bad6656c5d502ce7850ab1587244eeb58f439ab5e08574a718c8aac3d77
    c798bba1542733be73448f23fb70c0e5353a27c88322c5218493afbb38086434
    d6d60a56ba887dd498c3ab26a0870993815aa6a40975f218adca1582d64ffc86
    52fbb3a9a6fbc304f91945fa4aaef2878fd715df70113d2379f44886f812c83f
    f2b719a69e1ec74ae4b15accd3aed5a53ce76a7b0982471633b973cb40a1a001
    5d0a424fa11a479c023017436d2a2900e993eb5a0a067400c7f4aadf201fc4fa
    31264a63bae95cc8d65c3995815e597d104355cf29aa5333c93251869d5bcdbe
    487124f602b8b6a66c16c4761648ad765cf5d8006b515e905a7f0ac076b0c62e
    fa328153e7ca5701699f1305f1e6bc6f90b0e49b693512b6ce992a8b8016ddfc
    1a662c7e3f9619cbd869dd771af30896ccd5918ac6cb77466c5e779996d67ff9
    aabc97503f2c7b7e2d000d86450fb1807ca4cabda465825a31c789a1b7a491ab
    3872765d320d0b71920fa213c94093416b83b8124e69f65e62cb5000dcc37aa9
    a0fff73970c4772f357d24189ca6f5305568c0e2376a3762a68c605e563c5d20
    9572e0fc7532ca294729535567b5fc413c5e8792d2464536cc808f98add74664
    f141566f9016a90a541829a98a0464ce41a8bb44c2d4fa3c2c209460728ef14a
    1a7c4c9b98d12203b4cc3529160a9ab2d7838f7ff6b53ae05aa31a7d646b7afa
    6c45932526a3c3755619be994c211c2a31c05b3447836cb2150be1829dae6b04
    c5535cff546e392ba797411720f924f490a5ac5495f21356d550b782a64c1688
    b6b655bcc7842197a434c2f6563b5b7f09a78bcc488232783561d16f4cbab675
    5400050781570c66604b817ad1252294736e8b01861a4b5a74519b8b6fe51489
    a5072392e587626c713776575d33806a1c8e2732af97c2680f51666331c4eb8b
    bc0431c4f96832daf1b3c45528fba153f6c78b1c198702947ccd337727a46fb5
    3ba11de5cb4191346859516cb6ad72400f3cf209b236aef35a580ac87eb3e30f
    afd66973ca8a7dd2675af41f7a17b61433cd1af80f7708869f665488497980b1
    ac10a0cdcb636a00ed8681b35e429124ca80350725b85f83a5eac3a4a3cc1600
    903e65293560b9b336e5af0d529dac1a048119302cb7a9bcc110b94851bf0211
    7f199dc485a852b7473f09b831a6831d5b54c0b790d225cf6bb92d9462a26cdb
    33dda5123c7aaf0e26a0b83655eea28bf3a8074725018fd6bae4b601cf61baab
    71a7a3d35197a343e74b4a272c125d540896426d85b7958d3b38a6ba987ec372
    25c7b44cdb12dde4539b4ab082363683f04bf7a09cc5c41dfe830a1b162e0b32
    4334362f084a14467723344badd000f8d8c537c48f998f05307cebd1ede0b81c
    3bc59a065a1b6d63b26c82f101ff648063b376e2bb6c5b7455f655a50c2feada
    de150efa0e0e6f365aea202122232425262728292a2b2c2d2e2f303132333435
    363738393a3b3c3d3e3f` }
      }
    }

¶

##### C.1.1.3. Both Format

    -----BEGIN PRIVATE KEY-----
    MIIGvgIBADALBglghkgBZQMEBAEEggaqMIIGpgRAAAECAwQFBgcICQoLDA0ODxAR
    EhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+PwSC
    BmBwVU/UNjRPJ4Wxs7G6wYS2Z5ADM2wm8Vp96HjEglxr4D88SkgPdbdIaq0x06AF
    GGI/0gerUo3WJyFJWDWuAGLDZ7dKcbrxCq0OiikCB2vjE0i+sVzMCVfN67Sv8iZ1
    a7xgG2Voq3hKy66zRwLw+GomICEYsisj+DVYd2x5wU26mDN5yAPg3MMWChF1cDDm
    nGkZeY2B62mKmkSDqZ5aXLLDHJpmF5nzzInHkHBuoEFikEXUKoOu2Ihg45TGkYfi
    EF0ozBTsOTWS1n3QCqQ/6LTq5EFAAoZrXHE8ao19Fs94uBnW8S6eWnQjOQjwsV48
    S6gynFzdpVyEko46qAY+WqlnZAP5FzWxEBDH9ZMJE2TchkRbyASECpohckISRp+K
    ewzgrGmOuGytOaf0gk2aUWOqwh7mgIsFPIo/rLC2dEtSYrvLJqQ/ZkyHMrZM/HrP
    CZYF9Bx5YGCXasQzgz/gA0P7GCgwCkJHQRFuS0W7J26oESmg20xuYLzmERAejGJU
    dJJeAiJnkwij53CNGXKntCPrIyhRw20u1T0+07t1AGNwYaXcIpL6HEZsBzVGgzKL
    7Cwe0stcmbeOyglpA4z3w03RGHJOMcrghiBrNDArUg9dF3re1bPM4CrM6AjqJrzA
    cmJf25PxdFil/B1No5Q4Ch9X6cxmEJQ4oHXw0oE/zEoZnMdts4I/JwsAYVlBkpQE
    EaN/+6+uLBUBZc7Fxr9zxZX7ks0VMSYH2gcHeGUr2ZRLxIvH0aU0M4utC61mVsXV
    As54UKsVhyRO61j0OateCFdKcYyKrD13x5i7oVQnM75zRI8j+3DA5TU6J8iDIsUh
    hJOvuzgIZDTW1gpWuoh91JjDqyaghwmTgVqmpAl18hityhWC1k/8hlL7s6mm+8ME
    +RlF+kqu8oeP1xXfcBE9I3n0SIb4Esg/8rcZpp4ex0rksVrM067VpTznansJgkcW
    M7lzy0ChoAFdCkJPoRpHnAIwF0NtKikA6ZPrWgoGdADH9KrfIB/E+jEmSmO66VzI
    1lw5lYFeWX0QQ1XPKapTM8kyUYadW82+SHEk9gK4tqZsFsR2Fkitdlz12ABrUV6Q
    Wn8KwHawxi76MoFT58pXAWmfEwXx5rxvkLDkm2k1ErbOmSqLgBbd/BpmLH4/lhnL
    2GnddxrzCJbM1ZGKxst3Rmxed5mW1n/5qryXUD8se34tAA2GRQ+xgHykyr2kZYJa
    MceJobekkas4cnZdMg0LcZIPohPJQJNBa4O4Ek5p9l5iy1AA3MN6qaD/9zlwxHcv
    NX0kGJym9TBVaMDiN2o3YqaMYF5WPF0glXLg/HUyyilHKVNVZ7X8QTxeh5LSRkU2
    zICPmK3XRmTxQVZvkBapClQYKamKBGTOQai7RMLU+jwsIJRgco7xShp8TJuY0SID
    tMw1KRYKmrLXg49/9rU64FqjGn1ka3r6bEWTJSajw3VWGb6ZTCEcKjHAWzRHg2yy
    FQvhgp2uawTFU1z/VG45K6eXQRcg+ST0kKWsVJXyE1bVULeCpkwWiLa2VbzHhCGX
    pDTC9lY7W38Jp4vMSIIyeDVh0W9MurZ1VAAFB4FXDGZgS4F60SUilHNuiwGGGkta
    dFGbi2/lFImlByOS5YdibHE3dlddM4BqHI4nMq+XwmgPUWZjMcTri7wEMcT5aDLa
    8bPEVSj7oVP2x4scGYcClHzNM3cnpG+1O6Ed5ctBkTRoWVFstq1yQA888gmyNq7z
    WlgKyH6z4w+v1mlzyop90mda9B96F7YUM80a+A93CIafZlSISXmAsawQoM3LY2oA
    7YaBs15CkSTKgDUHJbhfg6Xqw6SjzBYAkD5lKTVgubM25a8NUp2sGgSBGTAst6m8
    wRC5SFG/AhF/GZ3EhahSt0c/CbgxpoMdW1TAt5DSJc9ruS2UYqJs2zPdpRI8eq8O
    JqC4NlXuoovzqAdHJQGP1rrktgHPYbqrcaej01GXo0PnS0onLBJdVAiWQm2Ft5WN
    Ozimuph+w3Ilx7RM2xLd5FObSrCCNjaD8Ev3oJzFxB3+gwobFi4LMkM0Ni8IShRG
    dyM0S63QAPjYxTfEj5mPBTB869Ht4LgcO8WaBlobbWOybILxAf9kgGOzduK7bFt0
    VfZVpQwv6treFQ76Dg5vNlrqICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9
    Pj8=
    -----END PRIVATE KEY-----

¶

    SEQUENCE {
      INTEGER { 0 }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.1 }
      }
      OCTET_STRING {
        SEQUENCE {
          OCTET_STRING { `000102030405060708090a0b0c0d0e0f1011121314
    15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334
    35363738393a3b3c3d3e3f` }
          OCTET_STRING { `70554fd436344f2785b1b3b1bac184b6679003336c
    26f15a7de878c4825c6be03f3c4a480f75b7486aad31d3a00518623fd207ab52
    8dd62721495835ae0062c367b74a71baf10aad0e8a2902076be31348beb15ccc
    0957cdebb4aff226756bbc601b6568ab784acbaeb34702f0f86a26202118b22b
    23f83558776c79c14dba983379c803e0dcc3160a11757030e69c6919798d81eb
    698a9a4483a99e5a5cb2c31c9a661799f3cc89c790706ea041629045d42a83ae
    d88860e394c69187e2105d28cc14ec393592d67dd00aa43fe8b4eae441400286
    6b5c713c6a8d7d16cf78b819d6f12e9e5a74233908f0b15e3c4ba8329c5cdda5
    5c84928e3aa8063e5aa9676403f91735b11010c7f593091364dc86445bc80484
    0a9a21724212469f8a7b0ce0ac698eb86cad39a7f4824d9a5163aac21ee6808b
    053c8a3facb0b6744b5262bbcb26a43f664c8732b64cfc7acf099605f41c7960
    60976ac433833fe00343fb1828300a424741116e4b45bb276ea81129a0db4c6e
    60bce611101e8c625474925e0222679308a3e7708d1972a7b423eb232851c36d
    2ed53d3ed3bb7500637061a5dc2292fa1c466c07354683328bec2c1ed2cb5c99
    b78eca0969038cf7c34dd118724e31cae086206b34302b520f5d177aded5b3cc
    e02acce808ea26bcc072625fdb93f17458a5fc1d4da394380a1f57e9cc661094
    38a075f0d2813fcc4a199cc76db3823f270b0061594192940411a37ffbafae2c
    150165cec5c6bf73c595fb92cd15312607da070778652bd9944bc48bc7d1a534
    338bad0bad6656c5d502ce7850ab1587244eeb58f439ab5e08574a718c8aac3d
    77c798bba1542733be73448f23fb70c0e5353a27c88322c5218493afbb380864
    34d6d60a56ba887dd498c3ab26a0870993815aa6a40975f218adca1582d64ffc
    8652fbb3a9a6fbc304f91945fa4aaef2878fd715df70113d2379f44886f812c8
    3ff2b719a69e1ec74ae4b15accd3aed5a53ce76a7b0982471633b973cb40a1a0
    015d0a424fa11a479c023017436d2a2900e993eb5a0a067400c7f4aadf201fc4
    fa31264a63bae95cc8d65c3995815e597d104355cf29aa5333c93251869d5bcd
    be487124f602b8b6a66c16c4761648ad765cf5d8006b515e905a7f0ac076b0c6
    2efa328153e7ca5701699f1305f1e6bc6f90b0e49b693512b6ce992a8b8016dd
    fc1a662c7e3f9619cbd869dd771af30896ccd5918ac6cb77466c5e779996d67f
    f9aabc97503f2c7b7e2d000d86450fb1807ca4cabda465825a31c789a1b7a491
    ab3872765d320d0b71920fa213c94093416b83b8124e69f65e62cb5000dcc37a
    a9a0fff73970c4772f357d24189ca6f5305568c0e2376a3762a68c605e563c5d
    209572e0fc7532ca294729535567b5fc413c5e8792d2464536cc808f98add746
    64f141566f9016a90a541829a98a0464ce41a8bb44c2d4fa3c2c209460728ef1
    4a1a7c4c9b98d12203b4cc3529160a9ab2d7838f7ff6b53ae05aa31a7d646b7a
    fa6c45932526a3c3755619be994c211c2a31c05b3447836cb2150be1829dae6b
    04c5535cff546e392ba797411720f924f490a5ac5495f21356d550b782a64c16
    88b6b655bcc7842197a434c2f6563b5b7f09a78bcc488232783561d16f4cbab6
    755400050781570c66604b817ad1252294736e8b01861a4b5a74519b8b6fe514
    89a5072392e587626c713776575d33806a1c8e2732af97c2680f51666331c4eb
    8bbc0431c4f96832daf1b3c45528fba153f6c78b1c198702947ccd337727a46f
    b53ba11de5cb4191346859516cb6ad72400f3cf209b236aef35a580ac87eb3e3
    0fafd66973ca8a7dd2675af41f7a17b61433cd1af80f7708869f665488497980
    b1ac10a0cdcb636a00ed8681b35e429124ca80350725b85f83a5eac3a4a3cc16
    00903e65293560b9b336e5af0d529dac1a048119302cb7a9bcc110b94851bf02
    117f199dc485a852b7473f09b831a6831d5b54c0b790d225cf6bb92d9462a26c
    db33dda5123c7aaf0e26a0b83655eea28bf3a8074725018fd6bae4b601cf61ba
    ab71a7a3d35197a343e74b4a272c125d540896426d85b7958d3b38a6ba987ec3
    7225c7b44cdb12dde4539b4ab082363683f04bf7a09cc5c41dfe830a1b162e0b
    324334362f084a14467723344badd000f8d8c537c48f998f05307cebd1ede0b8
    1c3bc59a065a1b6d63b26c82f101ff648063b376e2bb6c5b7455f655a50c2fea
    dade150efa0e0e6f365aea202122232425262728292a2b2c2d2e2f3031323334
    35363738393a3b3c3d3e3f` }
        }
      }
    }

¶

#### C.1.2. ML-KEM-768 Private Key Examples

Each of the examples includes the textual encoding [RFC7468] followed by the so-called "pretty print"; the private keys are the same.¶

##### C.1.2.1. Seed Format

    -----BEGIN PRIVATE KEY-----
    MFQCAQAwCwYJYIZIAWUDBAQCBEKAQAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ
    GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8=
    -----END PRIVATE KEY-----

¶

    SEQUENCE {
      INTEGER { 0 }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.2 }
      }
      OCTET_STRING {
        [0 PRIMITIVE] { `000102030405060708090a0b0c0d0e0f10111213141
    5161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343
    5363738393a3b3c3d3e3f` }
      }
    }

¶

##### C.1.2.2. Expanded Format

    -----BEGIN PRIVATE KEY-----
    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
    JCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==
    -----END PRIVATE KEY-----

¶

    SEQUENCE {
      INTEGER { 0 }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.2 }
      }
      OCTET_STRING {
        OCTET_STRING { `27d2a77f33756f61208ef113abe82595873d4abc730e
    [encoded data, 4736 characters]
    363738393a3b3c3d3e3f` }
      }
    }

¶

##### C.1.2.3. Both Format

    -----BEGIN PRIVATE KEY-----
    MIIJvgIBADALBglghkgBZQMEBAIEggmqMIIJpgRAAAECAwQFBgcICQoLDA0ODxAR
    EhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+PwSC
    CWAn0qd/M3VvYSCO8ROr6CWVhz1KvHMOW11nlSm/akzrY4NCcjGoYS9BVQUVrLpS
    5I6ti5QoM7vmhl0T0Up50sXD4H8KBW2N56rfyroFjEk8gLN8q4xWJ1O7O6a27IKX
    +IXqp1QNUwAVqEQG5VsTZrV34jbOWKJtih61pE1UIyPCFn2b9KR/mFaZygW65DuN
    7GF/AjgKOJCv1LjH7H7eJlU6Al885bxdemITAwQjXLGtSDa1ZrW4Y72b20WihEpw
    R7bI04PkSFJeBAtNyKK0jGw3yW1i1D8/2I4ogcQKIFyeJI9lK1kngad5+GiA8qFH
    tnhj85HMGlqQjACV4HISKR4u+KNuuanAxgcyJbNHA6SvBJOCxHVz2mj96SRa1ETj
    Gx+9tSHx9h83vAzvKSBn5nDSih/9kE9vEZCplpGKEwN6bKvzw3O/gpbNN6szundG
    gJzD+K3hs2Ob1Xv8xpZQqq8d4Zj8TARjKZ5SxGF4DMQo/F0EpcUYUMumwqUnQ0Bn
    V5PdoJvkTCnmOVxl+F0qCnxt9BHmkRsfLLbDUc0uh19Rtji+d2CX6T4vKy+D2gvu
    9KqFup52OrZFAqDKUiLp6rWztwiO1SBg6Mgmm5Q6casK4cWxtofS4BnPgDa8+b9u
    e6w6qjbkFmD6pFQPJkjNk6GJ7Fwt6nC6yqpP/JBvkIEOobZ78k8seM9rqIGq6mHA
    ZSv/lbG65EJtF3O5zCyoLCHjjGNuOxxSMkSYawvoqD9d1c8tVHYvs8Xr9ZuOiFMC
    sc5HAz7fdg9OApvkC21WaxnddYrNXHQSh4ExJE+QFyxT8mZjwh2QUwHUi6+RyRfM
    d3np2IAswQ2Jo3BQmaKtOjqIlnQ8EURpgJO+JX2stm3HhSKLkSyNll0Uqig0LDrE
    qT/vpTKyCUXdwQIBOcFNY4uQjE3d6aBkW5Wy5EFNQLt58EQTgw8VqHPCi7cFnCdB
    ACAV8gQI8FjnFbC/mVtTgLfdMloFarl+ZZor4M32wzcxxoOmNLdx6MkqE5ruS7Dk
    nHB3Mh1C/BmffB8pjKYl0iOlwmOgPMSBWbeBJmW3hjfk4YcgssKaa5n0J2aky8Tc
    UIupS6g7icOlx4+Lsmu9m3m+uMgYJJD1eT7luWATt0t+Fp4p0WLxMVRk6n1yQ22J
    t1UWEZLIHMLdHIuLunle9CbuHMAcN6qjeyz/iwo3i0fL0LTUk5jPwnEpWWmfoL2M
    2EZmrMYfVBuE+pa5yFTk516RRK3bRLhWalffu1Rc5CPAM0byssGpF4DRUqjeGk1M
    nKzec5LJloiMwjmcAsOLM1Ot+KyrKDkk2gCgW3bnOMcskw1sugmuFomQ+qH+8iJu
    eAhh1Bbv9AL091n8ZIqx+XEAEJCH+W5LFI0ssx5IBTFOoM2V+wI+rA2YlHS6QgHX
    tB0m9TlLIX7qWzS3Gos3kxwOWUJx4LfHMyVyQCM+e6c1YD5CWofe53B543yyiiF2
    RZTOU1DY2itioHF0lDAy7InJiAnHO2Qj0wwdKDp2amTYlwPD1im0l4KNSDIMNGIQ
    eXopiqENQjyN2gadArxZ5s3wOglriz2kyrm4DKShSQdnLM7x7E+vI0oLxbfp1HPy
    sxM7Oyah0XXLZ6eAWRlpnAL3ZTG5nF+JGAcEu0ykU1xbiXJnnGYKB8XlFLhwCchi
    649RV2le+z/ECp3va4HBzAKiSa5PCUrQ2b00hcHBxoCAUgp8jGMgMs7nOBVOXFF2
    wH2lYCR3akMP526s9mWj97gyECIVvILxCTnINVcEM2qPrB2B5LsEhapdfHTWtZu+
    XF6XKg2LrEEbVbXVVXzWgKGo9xtOuGvEjJoFCXMaVL2dcpCyeWPkNy3JsZnP3KwL
    AazSimI5URLkxDZI1iLEjII00BRA6Mw3bJJ/I6WvyawEdMZiJ05CRSXIVS7OOz/i
    ZRbekBvH1RW96JVY5ibJXIC5M0L4AQAE855sbJSHHF40TKs5Zsg1+alqWa/THEAo
    azixwaeEcLq5R1GJNEU86Gc2qRnx9abVEKhvVFT8OYDLXHZb0r1fezaxQQ1mNcjO
    tHxN2g12oo6sk5xxwwJIBIZscWJmWEQhY8LCIRflCs785jeKmFZSMCpO8MLODMcW
    t3luK2suN3ffoaw9olmjG1qbUw+MtjioGmKsMBhJq6+VpzAb2jAGiQm/235n28y7
    OKVVGiWxo6D2hXSK1XU9iIDwAWxidIYWY4TFVx/iNlkANk0DgxHi2HXbNmaGkyte
    xgJDCjaeh6bvXDOHhmV4Jb1MBXrOuSPrCTXmkF5jtM7X+AhXp3PdZLFQ0mYS6prB
    IFLbIBe/GEPMtLMoG2kNxyit+oXAAoG448CShzNfhWtPwokvaaL1eSGtoBkUxAmI
    Zi1XdpZip4Y1G5tmST2reVlNmG3iEA1lug/06li4FTjSSkQ1olj6wlQEqn9B9lix
    OFBl4VjctgEVcycg9ARZqqwV5AaVOpCsUpl9HM0HAGDvxl255lM1RGf61W7HE8hu
    dUDEI6zyZp9S+m9KxoiNhx7z6EfAKaiq+7kuF7JKoHmx9Bm6YXW0Qq+xGQnUpWtw
    oDNbKHOSGKp8k0jiw8Lz6z0VpB5kF8DdlL/rIUGbMRp7sToYC76DMhipprF0R8yF
    8iWFlYenMHcEmsvP1E0PAlQ44V0VOCcNWG4b+DGSqUWc9jwOly+FKXZ5gx7PEhUJ
    hRy4NA9vEHsPoaDv0bNqgYm8CFxPXLeE5VP0G5GPgDl84ZVveFvuN3ypqovmmYra
    MMJrfD2Ma1UlTMliA7IMQq7grE4eu0COSanj+HnQqweF63AlQl0TBaIpnAFeEg0W
    Ow4ZSUzlclPQJG0YJ0XLgZerdDizwbt5cr7Fowbro1Z4VcAUaZ/vZa5Ux3Cg2FwY
    QAz2Qq7cZgd3uksThQK9WngS9iH4Skgpa5jdQyK28VgouKjw4AqLpEpTw6ixQ1cb
    B0Cr1Wfa8c3px5wgS21eJZ0XZqMbu8tOagXPRQIXazAcHC9BJHdQFXvOyF6AmzCk
    1g13R83Q9bmaqMgmmHUXeTqqgICgsSSoVY33K743t19O27a+ghbWxjP7KyKA4lET
    2GleQ0gcPus5frGSUFIptnogHqiTw+LLMtqLw0L6TeoFeKJOFtj4+Tg6lbdwUPTZ
    /S9XM+7B1j7zwj6/mRgXNmmnICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9
    Pj8=
    -----END PRIVATE KEY-----

¶

    SEQUENCE {
      INTEGER { 0 }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.2 }
      }
      OCTET_STRING {
        SEQUENCE {
          OCTET_STRING { `000102030405060708090a0b0c0d0e0f1011121314
    15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334
    35363738393a3b3c3d3e3f` }
          OCTET_STRING { `27d2a77f33756f61208ef113abe82595873d4abc73
    [encoded data, 4736 characters]
    35363738393a3b3c3d3e3f` }
        }
      }
    }

¶

#### C.1.3. ML-KEM-1024 Private Key Examples

Each of the examples includes the textual encoding [RFC7468] followed by the so-called "pretty print"; the private keys are the same.¶

##### C.1.3.1. Seed Format

    -----BEGIN PRIVATE KEY-----
    MFQCAQAwCwYJYIZIAWUDBAQDBEKAQAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ
    GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8=
    -----END PRIVATE KEY-----

¶

    SEQUENCE {
      INTEGER { 0 }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.3 }
      }
      OCTET_STRING {
        [0 PRIMITIVE] { `000102030405060708090a0b0c0d0e0f10111213141
    5161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343
    5363738393a3b3c3d3e3f` }
      }
    }

¶

##### C.1.3.2. Expanded Format

    -----BEGIN PRIVATE KEY-----
    [encoded data, 4224 characters]
    JCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==
    -----END PRIVATE KEY-----

¶

    SEQUENCE {
      INTEGER { 0 }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.3 }
      }
      OCTET_STRING {
        OCTET_STRING { `f77b7f6b15c73fe2cc546b67fb774ca19b42cd463ea9
    [encoded data, 6272 characters]
    363738393a3b3c3d3e3f` }
      }
    }

¶

##### C.1.3.3. Both Format

    -----BEGIN PRIVATE KEY-----
    [encoded data, 4352 characters]
    Pj8=
    -----END PRIVATE KEY-----

¶

    SEQUENCE {
      INTEGER { 0 }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.3 }
      }
      OCTET_STRING {
        SEQUENCE {
          OCTET_STRING { `000102030405060708090a0b0c0d0e0f1011121314
    15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334
    35363738393a3b3c3d3e3f` }
          OCTET_STRING { `f77b7f6b15c73fe2cc546b67fb774ca19b42cd463e
    [encoded data, 6272 characters]
    35363738393a3b3c3d3e3f` }
        }
      }
    }

¶

### C.2. Example Public Keys

The following is the ML-KEM-512 public key corresponding to the private key in the previous section. The textual encoding [RFC7468] is followed by the so-called "pretty print"; the public keys are the same.¶

    -----BEGIN PUBLIC KEY-----
    MIIDMjALBglghkgBZQMEBAEDggMhADmVgV5ZfRBDVc8pqlMzyTJRhp1bzb5IcST2
    Ari2pmwWxHYWSK12XPXYAGtRXpBafwrAdrDGLvoygVPnylcBaZ8TBfHmvG+QsOSb
    aTUSts6ZKouAFt38GmYsfj+WGcvYad13GvMIlszVkYrGy3dGbF53mZbWf/mqvJdQ
    Pyx7fi0ADYZFD7GAfKTKvaRlgloxx4mht6SRqzhydl0yDQtxkg+iE8lAk0Frg7gS
    Tmn2XmLLUADcw3qpoP/3OXDEdy81fSQYnKb1MFVowOI3ajdipoxgXlY8XSCVcuD8
    dTLKKUcpU1VntfxBPF6HktJGRTbMgI+YrddGZPFBVm+QFqkKVBgpqYoEZM5BqLtE
    wtT6PCwglGByjvFKGnxMm5jRIgO0zDUpFgqasteDj3/2tTrgWqMafWRrevpsRZMl
    JqPDdVYZvplMIRwqMcBbNEeDbLIVC+GCna5rBMVTXP9Ubjkrp5dBFyD5JPSQpaxU
    lfITVtVQt4KmTBaItrZVvMeEIZekNML2Vjtbfwmni8xIgjJ4NWHRb0y6tnVUAAUH
    gVcMZmBLgXrRJSKUc26LAYYaS1p0UZuLb+UUiaUHI5Llh2JscTd2V10zgGocjicy
    r5fCaA9RZmMxxOuLvAQxxPloMtrxs8RVKPuhU/bHixwZhwKUfM0zdyekb7U7oR3l
    y0GRNGhZUWy2rXJADzzyCbI2rvNaWArIfrPjD6/WaXPKin3SZ1r0H3oXthQzzRr4
    D3cIhp9mVIhJeYCxrBCgzctjagDthoGzXkKRJMqANQcluF+DperDpKPMFgCQPmUp
    NWC5szblrw1SnawaBIEZMCy3qbzBELlIUb8CEX8ZncSFqFK3Rz8JuDGmgx1bVMC3
    kNIlz2u5LZRiomzbM92lEjx6rw4moLg2Ve6ii/OoB0clAY/WuuS2Ac9huqtxp6PT
    UZejQ+dLSicsEl1UCJZCbYW3lY07OKa6mH7DciXHtEzbEt3kU5tKsII2NoPwS/eg
    nMXEHf6DChsWLgsyQzQ2LwhKFEZ3IzRLrdAA+NjFN8SPmY8FMHzr0e3guBw7xZoG
    WhttY7Js
    -----END PUBLIC KEY-----

¶

    SEQUENCE {
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.1 }
      }
      BIT_STRING { `00` `3995815e597d104355cf29aa5333c93251869d5bcdb
    e487124f602b8b6a66c16c4761648ad765cf5d8006b515e905a7f0ac076b0c62
    efa328153e7ca5701699f1305f1e6bc6f90b0e49b693512b6ce992a8b8016ddf
    c1a662c7e3f9619cbd869dd771af30896ccd5918ac6cb77466c5e779996d67ff
    9aabc97503f2c7b7e2d000d86450fb1807ca4cabda465825a31c789a1b7a491a
    b3872765d320d0b71920fa213c94093416b83b8124e69f65e62cb5000dcc37aa
    9a0fff73970c4772f357d24189ca6f5305568c0e2376a3762a68c605e563c5d2
    09572e0fc7532ca294729535567b5fc413c5e8792d2464536cc808f98add7466
    4f141566f9016a90a541829a98a0464ce41a8bb44c2d4fa3c2c209460728ef14
    a1a7c4c9b98d12203b4cc3529160a9ab2d7838f7ff6b53ae05aa31a7d646b7af
    a6c45932526a3c3755619be994c211c2a31c05b3447836cb2150be1829dae6b0
    4c5535cff546e392ba797411720f924f490a5ac5495f21356d550b782a64c168
    8b6b655bcc7842197a434c2f6563b5b7f09a78bcc488232783561d16f4cbab67
    55400050781570c66604b817ad1252294736e8b01861a4b5a74519b8b6fe5148
    9a5072392e587626c713776575d33806a1c8e2732af97c2680f51666331c4eb8
    bbc0431c4f96832daf1b3c45528fba153f6c78b1c198702947ccd337727a46fb
    53ba11de5cb4191346859516cb6ad72400f3cf209b236aef35a580ac87eb3e30
    fafd66973ca8a7dd2675af41f7a17b61433cd1af80f7708869f665488497980b
    1ac10a0cdcb636a00ed8681b35e429124ca80350725b85f83a5eac3a4a3cc160
    0903e65293560b9b336e5af0d529dac1a048119302cb7a9bcc110b94851bf021
    17f199dc485a852b7473f09b831a6831d5b54c0b790d225cf6bb92d9462a26cd
    b33dda5123c7aaf0e26a0b83655eea28bf3a8074725018fd6bae4b601cf61baa
    b71a7a3d35197a343e74b4a272c125d540896426d85b7958d3b38a6ba987ec37
    225c7b44cdb12dde4539b4ab082363683f04bf7a09cc5c41dfe830a1b162e0b3
    24334362f084a14467723344badd000f8d8c537c48f998f05307cebd1ede0b81
    c3bc59a065a1b6d63b26c` }
    }

¶

The following is the ML-KEM-768 public key corresponding to the private key in the previous section. The textual encoding [RFC7468] is followed by the so-called "pretty print"; the public keys are the same.¶

    -----BEGIN PUBLIC KEY-----
    MIIEsjALBglghkgBZQMEBAIDggShACmKoQ1CPI3aBp0CvFnmzfA6CWuLPaTKubgM
    pKFJB2cszvHsT68jSgvFt+nUc/KzEzs7JqHRdctnp4BZGWmcAvdlMbmcX4kYBwS7
    TKRTXFuJcmecZgoHxeUUuHAJyGLrj1FXaV77P8QKne9rgcHMAqJJrk8JStDZvTSF
    wcHGgIBSCnyMYyAyzuc4FU5cUXbAfaVgJHdqQw/nbqz2ZaP3uDIQIhW8gvEJOcg1
    VwQzao+sHYHkuwSFql18dNa1m75cXpcqDYusQRtVtdVVfNaAoaj3G064a8SMmgUJ
    cxpUvZ1ykLJ5Y+Q3Lcmxmc/crAsBrNKKYjlREuTENkjWIsSMgjTQFEDozDdskn8j
    pa/JrAR0xmInTkJFJchVLs47P+JlFt6QG8fVFb3olVjmJslcgLkzQvgBAATznmxs
    lIccXjRMqzlmyDX5qWpZr9McQChrOLHBp4RwurlHUYk0RTzoZzapGfH1ptUQqG9U
    VPw5gMtcdlvSvV97NrFBDWY1yM60fE3aDXaijqyTnHHDAkgEhmxxYmZYRCFjwsIh
    F+UKzvzmN4qYVlIwKk7wws4Mxxa3eW4ray43d9+hrD2iWaMbWptTD4y2OKgaYqww
    GEmrr5WnMBvaMAaJCb/bfmfbzLs4pVUaJbGjoPaFdIrVdT2IgPABbGJ0hhZjhMVX
    H+I2WQA2TQODEeLYdds2ZoaTK17GAkMKNp6Hpu9cM4eGZXglvUwFes65I+sJNeaQ
    XmO0ztf4CFenc91ksVDSZhLqmsEgUtsgF78YQ8y0sygbaQ3HKK36hcACgbjjwJKH
    M1+Fa0/CiS9povV5Ia2gGRTECYhmLVd2lmKnhjUbm2ZJPat5WU2YbeIQDWW6D/Tq
    WLgVONJKRDWiWPrCVASqf0H2WLE4UGXhWNy2ARVzJyD0BFmqrBXkBpU6kKxSmX0c
    zQcAYO/GXbnmUzVEZ/rVbscTyG51QMQjrPJmn1L6b0rGiI2HHvPoR8ApqKr7uS4X
    skqgebH0GbphdbRCr7EZCdSla3CgM1soc5IYqnyTSOLDwvPrPRWkHmQXwN2Uv+sh
    QZsxGnuxOhgLvoMyGKmmsXRHzIXyJYWVh6cwdwSay8/UTQ8CVDjhXRU4Jw1Ybhv4
    MZKpRZz2PA6XL4UpdnmDHs8SFQmFHLg0D28Qew+hoO/Rs2qBibwIXE9ct4TlU/Qb
    kY+AOXzhlW94W+43fKmqi+aZitowwmt8PYxrVSVMyWIDsgxCruCsTh67QI5JqeP4
    edCrB4XrcCVCXRMFoimcAV4SDRY7DhlJTOVyU9AkbRgnRcuBl6t0OLPBu3lyvsWj
    BuujVnhVwBRpn+9lrlTHcKDYXBhADPZCrtxmB3e6SxOFAr1aeBL2IfhKSClrmN1D
    IrbxWCi4qPDgCoukSlPDqLFDVxsHQKvVZ9rxzenHnCBLbV4lnRdmoxu7y05qBc9F
    AhdrMBwcL0Ekd1AVe87IXoCbMKTWDXdHzdD1uZqoyCaYdRd5OqqAgKCxJKhVjfcr
    vje3X07btr6CFtbGM/srIoDiURPYaV5DSBw+6zl+sZJQUim2eiAeqJPD4ssy2ovD
    QvpN6gV4
    -----END PUBLIC KEY-----

¶

    SEQUENCE {
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.2 }
      }
      BIT_STRING { `00` `298aa10d423c8dda069d02bc59e6cdf03a096b8b3da
    4cab9b80ca4a14907672ccef1ec4faf234a0bc5b7e9d473f2b3133b3b26a1d17
    5cb67a7805919699c02f76531b99c5f89180704bb4ca4535c5b8972679c660a0
    7c5e514b87009c862eb8f5157695efb3fc40a9def6b81c1cc02a249ae4f094ad
    0d9bd3485c1c1c68080520a7c8c632032cee738154e5c5176c07da56024776a4
    30fe76eacf665a3f7b832102215bc82f10939c8355704336a8fac1d81e4bb048
    5aa5d7c74d6b59bbe5c5e972a0d8bac411b55b5d5557cd680a1a8f71b4eb86bc
    48c9a0509731a54bd9d7290b27963e4372dc9b199cfdcac0b01acd28a6239511
    2e4c43648d622c48c8234d01440e8cc376c927f23a5afc9ac0474c662274e424
    525c8552ece3b3fe26516de901bc7d515bde89558e626c95c80b93342f801000
    4f39e6c6c94871c5e344cab3966c835f9a96a59afd31c40286b38b1c1a78470b
    ab947518934453ce86736a919f1f5a6d510a86f5454fc3980cb5c765bd2bd5f7
    b36b1410d6635c8ceb47c4dda0d76a28eac939c71c3024804866c71626658442
    163c2c22117e50acefce6378a985652302a4ef0c2ce0cc716b7796e2b6b2e377
    7dfa1ac3da259a31b5a9b530f8cb638a81a62ac301849abaf95a7301bda30068
    909bfdb7e67dbccbb38a5551a25b1a3a0f685748ad5753d8880f0016c6274861
    66384c5571fe2365900364d038311e2d875db366686932b5ec602430a369e87a
    6ef5c338786657825bd4c057aceb923eb0935e6905e63b4ced7f80857a773dd6
    4b150d26612ea9ac12052db2017bf1843ccb4b3281b690dc728adfa85c00281b
    8e3c09287335f856b4fc2892f69a2f57921ada01914c40988662d57769662a78
    6351b9b66493dab79594d986de2100d65ba0ff4ea58b81538d24a4435a258fac
    25404aa7f41f658b1385065e158dcb60115732720f40459aaac15e406953a90a
    c52997d1ccd070060efc65db9e653354467fad56ec713c86e7540c423acf2669
    f52fa6f4ac6888d871ef3e847c029a8aafbb92e17b24aa079b1f419ba6175b44
    2afb11909d4a56b70a0335b28739218aa7c9348e2c3c2f3eb3d15a41e6417c0d
    d94bfeb21419b311a7bb13a180bbe833218a9a6b17447cc85f225859587a7307
    7049acbcfd44d0f025438e15d1538270d586e1bf83192a9459cf63c0e972f852
    97679831ecf121509851cb8340f6f107b0fa1a0efd1b36a8189bc085c4f5cb78
    4e553f41b918f80397ce1956f785bee377ca9aa8be6998ada30c26b7c3d8c6b5
    5254cc96203b20c42aee0ac4e1ebb408e49a9e3f879d0ab0785eb7025425d130
    5a2299c015e120d163b0e19494ce57253d0246d182745cb8197ab7438b3c1bb7
    972bec5a306eba3567855c014699fef65ae54c770a0d85c18400cf642aedc660
    777ba4b138502bd5a7812f621f84a48296b98dd4322b6f15828b8a8f0e00a8ba
    44a53c3a8b143571b0740abd567daf1cde9c79c204b6d5e259d1766a31bbbcb4
    e6a05cf4502176b301c1c2f41247750157bcec85e809b30a4d60d7747cdd0f5b
    99aa8c826987517793aaa8080a0b124a8558df72bbe37b75f4edbb6be8216d6c
    633fb2b2280e25113d8695e43481c3eeb397eb192505229b67a201ea893c3e2c
    b32da8bc342fa4dea0578` }
    }

¶

The following is the ML-KEM-1024 public key corresponding to the private key in the previous section. The textual encoding [RFC7468] is followed by the so-called "pretty print"; the public keys are the same.¶

    -----BEGIN PUBLIC KEY-----
    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
    uYOILhF1
    -----END PUBLIC KEY-----

¶

    SEQUENCE {
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.3 }
      }
      BIT_STRING { `00` `4b94c29450111191823b3514c9ac1ea3d9825ccb863
    93a2dfb04654fa2192d37bfad1c497c6502eee5ca80a73bfce0baf5a54a88585
    a401397a3d232f426a7afb082bc21a44317090eaac7592c2ea88a653c4491ea1
    93931335f52e989a3c4cc56d9c553732d57c470fb41ab759b65d2d04445382fc
    d9c4e344a1128fa9e11e04358e192ed014b23232a7ee2b22e23717f44111ee33
    575399c37646da9813ec9b212afe94e5dc5c2330a7294cc1f4234a6d3fbb4f16
    85ab8892c04acb17cd1c170d7b0611b6a7176c794cc8c67f55fc923c2ad20310
    0f365991882c30243d77813843b5ec7c964032263706092ecf00c7516be64e45
    98ca4226c069bb5e67e4175cf2286c8dd5c488a6c5861f31baa0bd0269470e8b
    551dd3bcd38c86c12f9cdb176c77dc8b6c02a701f478902c8553f694c0d82727
    b4c4a5c2c1041212aa1274808b82111b377ec75214e9b1978f76004d4139d986
    13f4b8e98d20af7b534073a509a959b7a7564f9b40ca218bf61829320a850201
    7954d328d7ac6c769ec29700756e7b0685b340d5e118059504a49a9a50a10198
    eb10a5784678eb427d7b4babb9552933b062897973e1318eaf0a0eac37584a65
    401b1703e042accd837531483f241cadcd1c1d378119e694429db199ac891e4c
    5343757085bb3ae783667350c4458d97672e861e80b1d2679510ea3a6f2360c7
    7a46942c7a06a554d228080c84b47aef14db17620cb16c06ab30a1be4cda7082
    be9f87e9c211c46916349a5ba8eaa5201c7294a3c0885b53b657452108825ec6
    46c90a04612324ee7d031afe5343132cbef67b6efb1a5ec2809b773538ce77b3
    d8b04eb0b3c2256011e4c716c19a8ba0752bf71492117649f0615c3290fc29a4
    6fde4bd52db9286d603388244259c15a7ac2b640a60cc03376a5841a3fb8a473
    568fa9b1a267215f34c01697b0f0e627175d72105b7707c29b9e614bdc33a6f6
    c818a95370b427882d7b476796a9ec6eb993274cd9b2391a82ba45e3393d2e9a
    e9721ca9d6c1b988b5827713f90a6585de9433528c02b03ce10bb5f720138d0f
    bb4c30c1266b918e52925dfe17b37f95d22bca54f475919ac859098c0f0d08ac
    5875ef29b56fd141e6ef15f700a0b66f39595c588177373c4669b21bc071e4c3
    aa5f0b4a31b6258f35da24ac3cd29c7f2092410c5078355b138fb53a6b9ae6e0
    b9c08243e7baa45c47376eb8c7f13d4cf51aa736fa31540c9241f370da544bf9
    f9c28d9a57e2f2a7ca95a4e4b466e641ab3bcc76adf1139d567a6f12b52f3a65
    e7ec0aae26bcaa8c55833b04e59998ebc9a1930fbb6d2233c53d2c1f8b9518e3
    c2de73a19dee6b380a5b32971cf64e129fd6c1fa6e75d4a234501e966dd3a540
    af5c8f4f34a6b4a253ee28492566d5e67c6f55855fcb0506fb06c156744d9a03
    a31a26fa94cad14f157b7f303d07a69c773768fcb4d079c09059703a0c3a94de
    4b99ea3a2f16583d0f9170a3950db07b4f0bc30802927f9f7961b6259892636a
    9502a2705303637799dd344da451c1cf7bf67840ceb3079ab8c6b8c1927f6405
    3c612450c45c9e603bc16666e596b3471e103b6f15447424d17022048111ffbd
    37e1c670f64f14b8a7b32b94c1a49b45dd2fc38cd5289d910ad63602cf5e1304
    2c64ac6797b89fb551ad08e05a92d200cccb7e712ef23c9312cb350f029ab537
    e287347fd3075ac10906a783f1c6c07ccb88f41228c4be1c640f790b5c3a5d5d
    3ca792495d74bc461562658c07ac600276b924ab5bc9be1f0494cb76f82f460a
    7480972663381e169996061d799859ec54d4f5ca5c411c01db1597b165977669
    de13a928a34afbac258fea8c4764239c9421dc3119bf5b47699206978327b1c5
    345ef746a7983841f056e2534100ab24d4e9abbd0b17c6a95bd4c3c0e40f69e1
    612aceeb28b99086c95116e7204273893390bf46b899b36286b0ebf1947bb988
    4f732ca27da82b19b5dc0cc7f8885714910888b2310c4f9319d410b34e6433b9
    003e2176bb995257456106e8952163b8ba592530cc5aa0aeb43ad398fe9e97ba
    a523d7a4431677c3d3af0719e475db85ca95af5089beabeb05b2faab4896ba60
    f81c88472a57b46a828826a0cdfb446f8189182d2bf5eac4ec1cc5deaf599c8a
    13e48235406d17ffddc8344b6c66984a868aa92fa02227a086950eb0c8701ed5
    8dc628776b983882e1175` }
    }

¶

### C.3. Example Certificates

The following is the ML-KEM-512 certificate corresponding to the public key in the previous section signed with the ML-DSA-44 private key from [RFC9881]. The textual encoding [RFC7468] is followed by the so-called "pretty print"; the certificates are the same.¶

    -----BEGIN CERTIFICATE-----
    [encoded data, 4608 characters]
    s7TAwcrR1drv9BRiaH2qytnr8PcAAAAAAAAAAAAAAAAAAAAAFSM2QA==
    -----END CERTIFICATE-----

¶

    SEQUENCE {
      SEQUENCE {
        [0] {
          INTEGER { 2 }
        }
        INTEGER { `159ffe6f22fd5cc42c524df6fd5e28d0de38f34f` }
        SEQUENCE {
          OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.3.17 }
        }
        SEQUENCE {
          SET {
            SEQUENCE {
              # organizationName
              OBJECT_IDENTIFIER { 2.5.4.10 }
              PrintableString { "IETF" }
            }
          }
          SET {
            SEQUENCE {
              # commonName
              OBJECT_IDENTIFIER { 2.5.4.3 }
              PrintableString { "LAMPS WG" }
            }
          }
        }
        SEQUENCE {
          UTCTime { "200203043210Z" }
          UTCTime { "400129043210Z" }
        }
        SEQUENCE {
          SET {
            SEQUENCE {
              # organizationName
              OBJECT_IDENTIFIER { 2.5.4.10 }
              PrintableString { "IETF" }
            }
          }
          SET {
            SEQUENCE {
              # commonName
              OBJECT_IDENTIFIER { 2.5.4.3 }
              PrintableString { "LAMPS WG" }
            }
          }
        }
        SEQUENCE {
          SEQUENCE {
            OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.1 }
          }
          BIT_STRING { `00` `3995815e597d104355cf29aa5333c93251869d5
    bcdbe487124f602b8b6a66c16c4761648ad765cf5d8006b515e905a7f0ac076b
    0c62efa328153e7ca5701699f1305f1e6bc6f90b0e49b693512b6ce992a8b801
    6ddfc1a662c7e3f9619cbd869dd771af30896ccd5918ac6cb77466c5e779996d
    67ff9aabc97503f2c7b7e2d000d86450fb1807ca4cabda465825a31c789a1b7a
    491ab3872765d320d0b71920fa213c94093416b83b8124e69f65e62cb5000dcc
    37aa9a0fff73970c4772f357d24189ca6f5305568c0e2376a3762a68c605e563
    c5d209572e0fc7532ca294729535567b5fc413c5e8792d2464536cc808f98add
    74664f141566f9016a90a541829a98a0464ce41a8bb44c2d4fa3c2c209460728
    ef14a1a7c4c9b98d12203b4cc3529160a9ab2d7838f7ff6b53ae05aa31a7d646
    b7afa6c45932526a3c3755619be994c211c2a31c05b3447836cb2150be1829da
    e6b04c5535cff546e392ba797411720f924f490a5ac5495f21356d550b782a64
    c1688b6b655bcc7842197a434c2f6563b5b7f09a78bcc488232783561d16f4cb
    ab6755400050781570c66604b817ad1252294736e8b01861a4b5a74519b8b6fe
    51489a5072392e587626c713776575d33806a1c8e2732af97c2680f51666331c
    4eb8bbc0431c4f96832daf1b3c45528fba153f6c78b1c198702947ccd337727a
    46fb53ba11de5cb4191346859516cb6ad72400f3cf209b236aef35a580ac87eb
    3e30fafd66973ca8a7dd2675af41f7a17b61433cd1af80f7708869f665488497
    980b1ac10a0cdcb636a00ed8681b35e429124ca80350725b85f83a5eac3a4a3c
    c1600903e65293560b9b336e5af0d529dac1a048119302cb7a9bcc110b94851b
    f02117f199dc485a852b7473f09b831a6831d5b54c0b790d225cf6bb92d9462a
    26cdb33dda5123c7aaf0e26a0b83655eea28bf3a8074725018fd6bae4b601cf6
    1baab71a7a3d35197a343e74b4a272c125d540896426d85b7958d3b38a6ba987
    ec37225c7b44cdb12dde4539b4ab082363683f04bf7a09cc5c41dfe830a1b162
    e0b324334362f084a14467723344badd000f8d8c537c48f998f05307cebd1ede
    0b81c3bc59a065a1b6d63b26c` }
        }
        [3] {
          SEQUENCE {
            SEQUENCE {
              # keyUsage
              OBJECT_IDENTIFIER { 2.5.29.15 }
              BOOLEAN { TRUE }
              OCTET_STRING {
                BIT_STRING { b`001` }
              }
            }
            SEQUENCE {
              # subjectKeyIdentifier
              OBJECT_IDENTIFIER { 2.5.29.14 }
              OCTET_STRING {
                OCTET_STRING { `0ec592a5971e7e8da078a86e4674f2fb11f6
    e8d7` }
              }
            }
            SEQUENCE {
              # authorityKeyIdentifier
              OBJECT_IDENTIFIER { 2.5.29.35 }
              OCTET_STRING {
                SEQUENCE {
                  [0 PRIMITIVE] { `329a07b1fabb48f52a309f11a1898f848
    e2322ff` }
                }
              }
            }
          }
        }
      }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.3.17 }
      }
      BIT_STRING { `00` `dc57c2c0fc37bc4ace942f7b4c7075ca7348935da04
    [encoded data, 4736 characters]
    41462687daacad9ebf0f70000000000000000000000000000000015233640` }
    }

¶

The following is the ML-KEM-768 certificate corresponding to the public key in the previous section signed with the ML-DSA-65 private key from [RFC9881]. The textual encoding [RFC7468] is followed by the so-called "pretty print"; the certificates are the same.¶

    -----BEGIN CERTIFICATE-----
    [encoded data, 6336 characters]
    AAAAAAAAAAAAAAAFDBUZHyU=
    -----END CERTIFICATE-----

¶

    SEQUENCE {
      SEQUENCE {
        [0] {
          INTEGER { 2 }
        }
        INTEGER { `159ffe6f22fd5cc42c524df6fd5e28d0de38f34f` }
        SEQUENCE {
          OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.3.18 }
        }
        SEQUENCE {
          SET {
            SEQUENCE {
              # organizationName
              OBJECT_IDENTIFIER { 2.5.4.10 }
              PrintableString { "IETF" }
            }
          }
          SET {
            SEQUENCE {
              # commonName
              OBJECT_IDENTIFIER { 2.5.4.3 }
              PrintableString { "LAMPS WG" }
            }
          }
        }
        SEQUENCE {
          UTCTime { "200203043210Z" }
          UTCTime { "400129043210Z" }
        }
        SEQUENCE {
          SET {
            SEQUENCE {
              # organizationName
              OBJECT_IDENTIFIER { 2.5.4.10 }
              PrintableString { "IETF" }
            }
          }
          SET {
            SEQUENCE {
              # commonName
              OBJECT_IDENTIFIER { 2.5.4.3 }
              PrintableString { "LAMPS WG" }
            }
          }
        }
        SEQUENCE {
          SEQUENCE {
            OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.2 }
          }
          BIT_STRING { `00` `298aa10d423c8dda069d02bc59e6cdf03a096b8
    b3da4cab9b80ca4a14907672ccef1ec4faf234a0bc5b7e9d473f2b3133b3b26a
    1d175cb67a7805919699c02f76531b99c5f89180704bb4ca4535c5b8972679c6
    60a07c5e514b87009c862eb8f5157695efb3fc40a9def6b81c1cc02a249ae4f0
    94ad0d9bd3485c1c1c68080520a7c8c632032cee738154e5c5176c07da560247
    76a430fe76eacf665a3f7b832102215bc82f10939c8355704336a8fac1d81e4b
    b0485aa5d7c74d6b59bbe5c5e972a0d8bac411b55b5d5557cd680a1a8f71b4eb
    86bc48c9a0509731a54bd9d7290b27963e4372dc9b199cfdcac0b01acd28a623
    95112e4c43648d622c48c8234d01440e8cc376c927f23a5afc9ac0474c662274
    e424525c8552ece3b3fe26516de901bc7d515bde89558e626c95c80b93342f80
    10004f39e6c6c94871c5e344cab3966c835f9a96a59afd31c40286b38b1c1a78
    470bab947518934453ce86736a919f1f5a6d510a86f5454fc3980cb5c765bd2b
    d5f7b36b1410d6635c8ceb47c4dda0d76a28eac939c71c3024804866c7162665
    8442163c2c22117e50acefce6378a985652302a4ef0c2ce0cc716b7796e2b6b2
    e3777dfa1ac3da259a31b5a9b530f8cb638a81a62ac301849abaf95a7301bda3
    0068909bfdb7e67dbccbb38a5551a25b1a3a0f685748ad5753d8880f0016c627
    486166384c5571fe2365900364d038311e2d875db366686932b5ec602430a369
    e87a6ef5c338786657825bd4c057aceb923eb0935e6905e63b4ced7f80857a77
    3dd64b150d26612ea9ac12052db2017bf1843ccb4b3281b690dc728adfa85c00
    281b8e3c09287335f856b4fc2892f69a2f57921ada01914c40988662d5776966
    2a786351b9b66493dab79594d986de2100d65ba0ff4ea58b81538d24a4435a25
    8fac25404aa7f41f658b1385065e158dcb60115732720f40459aaac15e406953
    a90ac52997d1ccd070060efc65db9e653354467fad56ec713c86e7540c423acf
    2669f52fa6f4ac6888d871ef3e847c029a8aafbb92e17b24aa079b1f419ba617
    5b442afb11909d4a56b70a0335b28739218aa7c9348e2c3c2f3eb3d15a41e641
    7c0dd94bfeb21419b311a7bb13a180bbe833218a9a6b17447cc85f225859587a
    73077049acbcfd44d0f025438e15d1538270d586e1bf83192a9459cf63c0e972
    f85297679831ecf121509851cb8340f6f107b0fa1a0efd1b36a8189bc085c4f5
    cb784e553f41b918f80397ce1956f785bee377ca9aa8be6998ada30c26b7c3d8
    c6b55254cc96203b20c42aee0ac4e1ebb408e49a9e3f879d0ab0785eb7025425
    d1305a2299c015e120d163b0e19494ce57253d0246d182745cb8197ab7438b3c
    1bb7972bec5a306eba3567855c014699fef65ae54c770a0d85c18400cf642aed
    c660777ba4b138502bd5a7812f621f84a48296b98dd4322b6f15828b8a8f0e00
    a8ba44a53c3a8b143571b0740abd567daf1cde9c79c204b6d5e259d1766a31bb
    bcb4e6a05cf4502176b301c1c2f41247750157bcec85e809b30a4d60d7747cdd
    0f5b99aa8c826987517793aaa8080a0b124a8558df72bbe37b75f4edbb6be821
    6d6c633fb2b2280e25113d8695e43481c3eeb397eb192505229b67a201ea893c
    3e2cb32da8bc342fa4dea0578` }
        }
        [3] {
          SEQUENCE {
            SEQUENCE {
              # keyUsage
              OBJECT_IDENTIFIER { 2.5.29.15 }
              BOOLEAN { TRUE }
              OCTET_STRING {
                BIT_STRING { b`001` }
              }
            }
            SEQUENCE {
              # subjectKeyIdentifier
              OBJECT_IDENTIFIER { 2.5.29.14 }
              OCTET_STRING {
                OCTET_STRING { `42bcb5a167fa330449612dbd8187056a7518
    f787` }
              }
            }
            SEQUENCE {
              # authorityKeyIdentifier
              OBJECT_IDENTIFIER { 2.5.29.35 }
              OCTET_STRING {
                SEQUENCE {
                  [0 PRIMITIVE] { `1b0563e3cd3346149c8c9ebcf23b0a4e5
    a900eea` }
                }
              }
            }
          }
        }
      }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.3.18 }
      }
      BIT_STRING { `00` `f26b7c753fb82773fe37fa0c08d5b6cfc8b16191b3d
    [encoded data, 6528 characters]
    00000000000000000000000000000000000050c15191f25` }
    }

¶

The following is the ML-KEM-1024 certificate corresponding to the public key in the previous section signed with the ML-DSA-87 private key from [RFC9881]. The textual encoding [RFC7468] is followed by the so-called "pretty print"; the certificates are the same.¶

    -----BEGIN CERTIFICATE-----
    [encoded data, 8576 characters]
    kNggIp4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIDxcdKS4x
    -----END CERTIFICATE-----

¶

    SEQUENCE {
      SEQUENCE {
        [0] {
          INTEGER { 2 }
        }
        INTEGER { `159ffe6f22fd5cc42c524df6fd5e28d0de38f34f` }
        SEQUENCE {
          OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.3.19 }
        }
        SEQUENCE {
          SET {
            SEQUENCE {
              # organizationName
              OBJECT_IDENTIFIER { 2.5.4.10 }
              PrintableString { "IETF" }
            }
          }
          SET {
            SEQUENCE {
              # commonName
              OBJECT_IDENTIFIER { 2.5.4.3 }
              PrintableString { "LAMPS WG" }
            }
          }
        }
        SEQUENCE {
          UTCTime { "200203043210Z" }
          UTCTime { "400129043210Z" }
        }
        SEQUENCE {
          SET {
            SEQUENCE {
              # organizationName
              OBJECT_IDENTIFIER { 2.5.4.10 }
              PrintableString { "IETF" }
            }
          }
          SET {
            SEQUENCE {
              # commonName
              OBJECT_IDENTIFIER { 2.5.4.3 }
              PrintableString { "LAMPS WG" }
            }
          }
        }
        SEQUENCE {
          SEQUENCE {
            OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.4.3 }
          }
          BIT_STRING { `00` `4b94c29450111191823b3514c9ac1ea3d9825cc
    b86393a2dfb04654fa2192d37bfad1c497c6502eee5ca80a73bfce0baf5a54a8
    8585a401397a3d232f426a7afb082bc21a44317090eaac7592c2ea88a653c449
    1ea193931335f52e989a3c4cc56d9c553732d57c470fb41ab759b65d2d044453
    82fcd9c4e344a1128fa9e11e04358e192ed014b23232a7ee2b22e23717f44111
    ee33575399c37646da9813ec9b212afe94e5dc5c2330a7294cc1f4234a6d3fbb
    4f1685ab8892c04acb17cd1c170d7b0611b6a7176c794cc8c67f55fc923c2ad2
    03100f365991882c30243d77813843b5ec7c964032263706092ecf00c7516be6
    4e4598ca4226c069bb5e67e4175cf2286c8dd5c488a6c5861f31baa0bd026947
    0e8b551dd3bcd38c86c12f9cdb176c77dc8b6c02a701f478902c8553f694c0d8
    2727b4c4a5c2c1041212aa1274808b82111b377ec75214e9b1978f76004d4139
    d98613f4b8e98d20af7b534073a509a959b7a7564f9b40ca218bf61829320a85
    02017954d328d7ac6c769ec29700756e7b0685b340d5e118059504a49a9a50a1
    0198eb10a5784678eb427d7b4babb9552933b062897973e1318eaf0a0eac3758
    4a65401b1703e042accd837531483f241cadcd1c1d378119e694429db199ac89
    1e4c5343757085bb3ae783667350c4458d97672e861e80b1d2679510ea3a6f23
    60c77a46942c7a06a554d228080c84b47aef14db17620cb16c06ab30a1be4cda
    7082be9f87e9c211c46916349a5ba8eaa5201c7294a3c0885b53b65745210882
    5ec646c90a04612324ee7d031afe5343132cbef67b6efb1a5ec2809b773538ce
    77b3d8b04eb0b3c2256011e4c716c19a8ba0752bf71492117649f0615c3290fc
    29a46fde4bd52db9286d603388244259c15a7ac2b640a60cc03376a5841a3fb8
    a473568fa9b1a267215f34c01697b0f0e627175d72105b7707c29b9e614bdc33
    a6f6c818a95370b427882d7b476796a9ec6eb993274cd9b2391a82ba45e3393d
    2e9ae9721ca9d6c1b988b5827713f90a6585de9433528c02b03ce10bb5f72013
    8d0fbb4c30c1266b918e52925dfe17b37f95d22bca54f475919ac859098c0f0d
    08ac5875ef29b56fd141e6ef15f700a0b66f39595c588177373c4669b21bc071
    e4c3aa5f0b4a31b6258f35da24ac3cd29c7f2092410c5078355b138fb53a6b9a
    e6e0b9c08243e7baa45c47376eb8c7f13d4cf51aa736fa31540c9241f370da54
    4bf9f9c28d9a57e2f2a7ca95a4e4b466e641ab3bcc76adf1139d567a6f12b52f
    3a65e7ec0aae26bcaa8c55833b04e59998ebc9a1930fbb6d2233c53d2c1f8b95
    18e3c2de73a19dee6b380a5b32971cf64e129fd6c1fa6e75d4a234501e966dd3
    a540af5c8f4f34a6b4a253ee28492566d5e67c6f55855fcb0506fb06c156744d
    9a03a31a26fa94cad14f157b7f303d07a69c773768fcb4d079c09059703a0c3a
    94de4b99ea3a2f16583d0f9170a3950db07b4f0bc30802927f9f7961b6259892
    636a9502a2705303637799dd344da451c1cf7bf67840ceb3079ab8c6b8c1927f
    64053c612450c45c9e603bc16666e596b3471e103b6f15447424d17022048111
    ffbd37e1c670f64f14b8a7b32b94c1a49b45dd2fc38cd5289d910ad63602cf5e
    13042c64ac6797b89fb551ad08e05a92d200cccb7e712ef23c9312cb350f029a
    b537e287347fd3075ac10906a783f1c6c07ccb88f41228c4be1c640f790b5c3a
    5d5d3ca792495d74bc461562658c07ac600276b924ab5bc9be1f0494cb76f82f
    460a7480972663381e169996061d799859ec54d4f5ca5c411c01db1597b16597
    7669de13a928a34afbac258fea8c4764239c9421dc3119bf5b47699206978327
    b1c5345ef746a7983841f056e2534100ab24d4e9abbd0b17c6a95bd4c3c0e40f
    69e1612aceeb28b99086c95116e7204273893390bf46b899b36286b0ebf1947b
    b9884f732ca27da82b19b5dc0cc7f8885714910888b2310c4f9319d410b34e64
    33b9003e2176bb995257456106e8952163b8ba592530cc5aa0aeb43ad398fe9e
    97baa523d7a4431677c3d3af0719e475db85ca95af5089beabeb05b2faab4896
    ba60f81c88472a57b46a828826a0cdfb446f8189182d2bf5eac4ec1cc5deaf59
    9c8a13e48235406d17ffddc8344b6c66984a868aa92fa02227a086950eb0c870
    1ed58dc628776b983882e1175` }
        }
        [3] {
          SEQUENCE {
            SEQUENCE {
              # keyUsage
              OBJECT_IDENTIFIER { 2.5.29.15 }
              BOOLEAN { TRUE }
              OCTET_STRING {
                BIT_STRING { b`001` }
              }
            }
            SEQUENCE {
              # subjectKeyIdentifier
              OBJECT_IDENTIFIER { 2.5.29.14 }
              OCTET_STRING {
                OCTET_STRING { `da82182c39ebdb350d904ee4bc507b72043f
    fa23` }
              }
            }
            SEQUENCE {
              # authorityKeyIdentifier
              OBJECT_IDENTIFIER { 2.5.29.35 }
              OCTET_STRING {
                SEQUENCE {
                  [0 PRIMITIVE] { `89886750b57c24db3fc012e61ede59753
    337374f` }
                }
              }
            }
          }
        }
      }
      SEQUENCE {
        OBJECT_IDENTIFIER { 2.16.840.1.101.3.4.3.19 }
      }
      BIT_STRING { `00` `74225bdfc7af660a19d5e3c84e80613d45140b98c2b
    [encoded data, 9152 characters]
    000000000000000000000000000000000000000000004080f171d292e31` }
    }

¶

### C.4. Examples of Bad Private Keys

WARNING: These private keys are purposely bad. Do not use them in production systems.¶

The following examples demonstrate inconsistent seed and expanded private keys.¶

#### C.4.1. ML-KEM Inconsistent Seed and Expanded Private Keys

Four `ML-KEM-512-PrivateKey` examples of inconsistent seed and expanded private keys are shown as follows:¶

1. The first `ML-KEM-512-PrivateKey` example includes the `both CHOICE`, i.e., both `seed` and `expandedKey` are included. The `seed` and `expanded` values can be checked for inconsistencies.¶

2. The second `ML-KEM-512-PrivateKey` example includes only `expandedKey`. The expanded private key has a mutated `s_0` and a valid public key hash, but a pairwise consistency check would find that the public key fails to match private.¶

3. The third `ML-KEM-512-PrivateKey` example includes only `expandedKey`. The expanded private key has a mutated H(ek); both a public key digest check and a pairwise consistency check should fail.¶

4. The fourth `ML-KEM-512-PrivateKey` example includes the `both CHOICE`, i.e., both `seed` and `expandedKey` are included. There is mismatch of the seed and expanded private key in only the `z` implicit rejection secret; here, the private and public vectors match and the pairwise consistency check passes, but z is different.¶

The following is the first example:¶

    -----BEGIN PRIVATE KEY-----
    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
    P0A=
    -----END PRIVATE KEY-----

¶

The following is the second example:¶

    -----BEGIN PRIVATE KEY-----
    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
    JCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==
    -----END PRIVATE KEY-----

¶

The following is the third example:¶

    -----BEGIN PRIVATE KEY-----
    MIIGeAIBADALBglghkgBZQMEBAEEggZkBIIGYHBVT9Q2NE8nhbGzsbrBhLZnkAMz
    bCbxWn3oeMSCXGvgPzxKSA91t0hqrTHToAUYYj/SB6tSjdYnIUlYNa4AYsNnt0px
    uvEKrQ6KKQIHa+MTSL6xXMwJV83rtK/yJnVrvGAbZWireErLrrNHAvD4aiYgIRiy
    KyP4NVh3bHnBTbqYM3nIA+DcwxYKEXVwMOacaRl5jYHraYqaRIOpnlpcssMcmmYX
    mfPMiceQcG6gQWKQRdQqg67YiGDjlMaRh+IQXSjMFOw5NZLWfdAKpD/otOrkQUAC
    hmtccTxqjX0Wz3i4GdbxLp5adCM5CPCxXjxLqDKcXN2lXISSjjqoBj5aqWdkA/kX
    NbEQEMf1kwkTZNyGRFvIBIQKmiFyQhJGn4p7DOCsaY64bK05p/SCTZpRY6rCHuaA
    iwU8ij+ssLZ0S1Jiu8smpD9mTIcytkz8es8JlgX0HHlgYJdqxDODP+ADQ/sYKDAK
    QkdBEW5LRbsnbqgRKaDbTG5gvOYREB6MYlR0kl4CImeTCKPncI0Zcqe0I+sjKFHD
    bS7VPT7Tu3UAY3BhpdwikvocRmwHNUaDMovsLB7Sy1yZt47KCWkDjPfDTdEYck4x
    yuCGIGs0MCtSD10Xet7Vs8zgKszoCOomvMByYl/bk/F0WKX8HU2jlDgKH1fpzGYQ
    lDigdfDSgT/MShmcx22zgj8nCwBhWUGSlAQRo3/7r64sFQFlzsXGv3PFlfuSzRUx
    JgfaBwd4ZSvZlEvEi8fRpTQzi60LrWZWxdUCznhQqxWHJE7rWPQ5q14IV0pxjIqs
    PXfHmLuhVCczvnNEjyP7cMDlNTonyIMixSGEk6+7OAhkNNbWCla6iH3UmMOrJqCH
    CZOBWqakCXXyGK3KFYLWT/yGUvuzqab7wwT5GUX6Sq7yh4/XFd9wET0jefRIhvgS
    yD/ytxmmnh7HSuSxWszTrtWlPOdqewmCRxYzuXPLQKGgAV0KQk+hGkecAjAXQ20q
    KQDpk+taCgZ0AMf0qt8gH8T6MSZKY7rpXMjWXDmVgV5ZfRBDVc8pqlMzyTJRhp1b
    zb5IcST2Ari2pmwWxHYWSK12XPXYAGtRXpBafwrAdrDGLvoygVPnylcBaZ8TBfHm
    vG+QsOSbaTUSts6ZKouAFt38GmYsfj+WGcvYad13GvMIlszVkYrGy3dGbF53mZbW
    f/mqvJdQPyx7fi0ADYZFD7GAfKTKvaRlgloxx4mht6SRqzhydl0yDQtxkg+iE8lA
    k0Frg7gSTmn2XmLLUADcw3qpoP/3OXDEdy81fSQYnKb1MFVowOI3ajdipoxgXlY8
    XSCVcuD8dTLKKUcpU1VntfxBPF6HktJGRTbMgI+YrddGZPFBVm+QFqkKVBgpqYoE
    ZM5BqLtEwtT6PCwglGByjvFKGnxMm5jRIgO0zDUpFgqasteDj3/2tTrgWqMafWRr
    evpsRZMlJqPDdVYZvplMIRwqMcBbNEeDbLIVC+GCna5rBMVTXP9Ubjkrp5dBFyD5
    JPSQpaxUlfITVtVQt4KmTBaItrZVvMeEIZekNML2Vjtbfwmni8xIgjJ4NWHRb0y6
    tnVUAAUHgVcMZmBLgXrRJSKUc26LAYYaS1p0UZuLb+UUiaUHI5Llh2JscTd2V10z
    gGocjicyr5fCaA9RZmMxxOuLvAQxxPloMtrxs8RVKPuhU/bHixwZhwKUfM0zdyek
    b7U7oR3ly0GRNGhZUWy2rXJADzzyCbI2rvNaWArIfrPjD6/WaXPKin3SZ1r0H3oX
    thQzzRr4D3cIhp9mVIhJeYCxrBCgzctjagDthoGzXkKRJMqANQcluF+DperDpKPM
    FgCQPmUpNWC5szblrw1SnawaBIEZMCy3qbzBELlIUb8CEX8ZncSFqFK3Rz8JuDGm
    gx1bVMC3kNIlz2u5LZRiomzbM92lEjx6rw4moLg2Ve6ii/OoB0clAY/WuuS2Ac9h
    uqtxp6PTUZejQ+dLSicsEl1UCJZCbYW3lY07OKa6mH7DciXHtEzbEt3kU5tKsII2
    NoPwS/egnMXEHf6DChsWLgsyQzQ2LwhKFEZ3IzRLrdAA+NjFN8SPmY8FMHzr0e3g
    uBw7xZoGWhttY7Jsg/EB/2SAY7N24rtsW3RV9lWlDC/q2t4VDvoODm82WuogISIj
    JCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==
    -----END PRIVATE KEY-----

¶

The following is the fourth example:¶

    -----BEGIN PRIVATE KEY-----
    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
    Pj4=
    -----END PRIVATE KEY-----

¶

## Acknowledgments

The authors wish to thank the following people for their contributions to this document: Corey Bonnell, Deirdre Connolly, Viktor Dukhovni, Alicja Kario, Russ Housley, Mike Ounsworth, Daniel Van Geest, Thom Wiggers, and Carl Wallace.¶

In addition, we would like to thank those who contributed to the private key format discussion: Tony Arcieri, Bob Beck, Dmitry Belyavskiy, David Benjamin, Daniel Bernstein, Uri Blumenthal, Theo Buehler, Stephen Farrell, Jean-Pierre Fiset, Scott Fluhrer, Alex Gaynor, John Gray, Peter Gutmann, David Hook, Tim Hudson, Paul Kehrer, John Kemp, Watson Ladd, Adam Langley, John Mattsson, Damien Miller, Robert Relyea, Michael Richardson, Markku-Juhani O. Saarinen, Rich Salz, Roland Shoemaker, Sophie Schmieg, Simo Sorce, Michael St. Johns, Falko Strenzke, Filippo Valsorda, and Wei-Jun Wang.¶

## Authors' Addresses