Skip to main content

ML-KEM template

Example:

{
  "key_gen": {
    "enabled": true,
    "key_type": {
      "allowed_types": [
        "rsa",
        "ecdsa",
        "Ed25519",
        "MLDSA",
        "SLHDSA",
        "ml-kem"
      ],
      "default_key_type": "ml-kem"
    },
    "rsa_key_size": {
      "min_bits": 1024,
      "max_bits": 4096,
      "default_bits": 2048
    },
    "ecdsa_curve": {
      "allowed_curves": [
        "P-256",
        "P-384",
        "P-521"
      ],
      "default_curve": "P-256"
    },
    "dilithium_key_size": {
      "allowed_sizes": [
        "MLDSA-44",
        "MLDSA-65",
        "MLDSA-87"
      ],
      "default_size": "MLDSA-44"
    },
    "sphincs_key_size": {
      "allowed_sizes": [
        "SLHDSA-SHAKE-128f",
        "SLHDSA-SHA2-128s",
        "SLHDSA-SHAKE-128s",
        "SLHDSA-SHA2-128f",
        "SLHDSA-SHAKE-192s",
        "SLHDSA-SHA2-192f",
        "SLHDSA-SHA2-192s",
        "SLHDSA-SHAKE-192f",
        "SLHDSA-SHAKE-256f",
        "SLHDSA-SHA2-256s",
        "SLHDSA-SHAKE-256s",
        "SLHDSA-SHA2-256f"
      ],
      "default_size": "SLHDSA-SHAKE-128f"
    },
    "mlkem_key_size": {
      "allowed_sizes": [
        "ML-KEM-512",
        "ML-KEM-768",
        "ML-KEM-1024"
      ],
      "default_size": "ML-KEM-512"
    }
  },
  "issue_types": [
    "client_authentication"
  ],
  "signature_algorithm": {
    "allowed_algorithms": [
      "sha256WithRSA",
      "sha384WithRSA",
      "sha512WithRSA",
      "sha256WithECDSA",
      "sha384WithECDSA",
      "sha512WithECDSA",
      "sha3_256WithRSA",
      "sha3_384WithRSA",
      "sha3_512WithRSA",
      "MLDSA-44",
      "MLDSA-65",
      "MLDSA-87",
      "SLHDSA-SHA2-128f",
      "SLHDSA-SHA2-128s",
      "SLHDSA-SHA2-192f",
      "SLHDSA-SHA2-192s",
      "SLHDSA-SHA2-256f",
      "SLHDSA-SHA2-256s",
      "SLHDSA-SHAKE-128f",
      "SLHDSA-SHAKE-128s",
      "SLHDSA-SHAKE-192f",
      "SLHDSA-SHAKE-192s",
      "SLHDSA-SHAKE-256f",
      "SLHDSA-SHAKE-256s",
      "match_issuer"
    ],
    "default_algorithm": "match_issuer"
  },
  "subject": {
    "attributes": [
      {
        "type": "common_name",
        "include": "optional",
        "encoding": "auto",
        "allowed_source": [
          "csr",
          "fixed_value",
          "user_supplied"
        ]
      },
      {
        "type": "organization_name",
        "include": "optional",
        "encoding": "auto",
        "allowed_source": [
          "csr",
          "fixed_value",
          "user_supplied"
        ]
      },
      {
        "type": "organization_unit",
        "include": "optional",
        "encoding": "auto",
        "allowed_source": [
          "csr",
          "fixed_value",
          "user_supplied"
        ]
      },
      {
        "type": "street_address",
        "include": "optional",
        "encoding": "auto",
        "allowed_source": [
          "csr",
          "fixed_value",
          "user_supplied"
        ]
      },
      {
        "type": "postal_code",
        "include": "optional",
        "encoding": "auto",
        "allowed_source": [
          "csr",
          "fixed_value",
          "user_supplied"
        ]
      },
      {
        "type": "locality",
        "include": "optional",
        "encoding": "auto",
        "allowed_source": [
          "csr",
          "fixed_value",
          "user_supplied"
        ]
      },
      {
        "type": "state",
        "include": "optional",
        "encoding": "auto",
        "allowed_source": [
          "csr",
          "fixed_value",
          "user_supplied"
        ]
      },
      {
        "type": "country",
        "include": "optional",
        "encoding": "auto",
        "allowed_source": [
          "csr",
          "fixed_value",
          "user_supplied"
        ]
      },
      {
        "type": "email",
        "include": "optional",
        "encoding": "auto",
        "allowed_source": [
          "csr",
          "fixed_value",
          "user_supplied"
        ]
      }
    ]
  },
  "extensions": {
    "key_usage": {
      "critical": true,
      "required_usages": {
        "rsa": [
          "digital_signature",
          "key_encipherment"
        ],
        "ecdsa": [
          "digital_signature"
        ],
        "dilithium": [
          "digital_signature"
        ],
        "sphincs": [
          "digital_signature"
        ],
        "ml-kem": [
          "key_encipherment"
        ]
      },
      "optional_usages": {
        "rsa": [
          "data_encipherment"
        ],
        "ecdsa": [
          "key_agreement"
        ],
        "dilithium": [
          "non_repudiation"
        ],
        "sphincs": [
          "non_repudiation"
        ]
      }
    },
    "extended_key_usage": {
      "critical": true,
      "include": "optional",
      "required_usages": [
        {
          "oid": "client_authentication",
          "name": "Client Authentication"
        }
      ],
      "optional_usages": [
        {
          "oid": "1.2.3.4",
          "name": "Custom Extension"
        }
      ]
    }
  },
  "serial_number_size": 20,
  "validity": {
    "min_duration": {
      "value": 1,
      "unit": "DAYS"
    },
    "max_duration": {
      "value": 10,
      "unit": "YEARS"
    },
    "default_duration": {
      "value": 10,
      "unit": "YEARS"
    }
  },
  "is_composite": false
}