Source code for rfc9180.constants

from enum import IntEnum


# HPKE Modes (RFC 9180 §5, Table 1)
[docs] class HPKEMode(IntEnum): """ HPKE mode identifiers as defined in RFC 9180 §5, Table 1. Attributes ---------- MODE_BASE : int Base mode (0x00). MODE_PSK : int Pre-shared key mode (0x01). MODE_AUTH : int Authenticated mode (0x02). MODE_AUTH_PSK : int Authenticated pre-shared key mode (0x03). """ MODE_BASE = 0x00 MODE_PSK = 0x01 MODE_AUTH = 0x02 MODE_AUTH_PSK = 0x03
# KEM Algorithm IDs (RFC 9180 §7.1, Table 2)
[docs] class KEMID(IntEnum): """ Key Encapsulation Mechanism algorithm identifiers (RFC 9180 §7.1, Table 2). Attributes ---------- DHKEM_P256_HKDF_SHA256 : int P-256 curve with HKDF-SHA256 (0x0010). DHKEM_P384_HKDF_SHA384 : int P-384 curve with HKDF-SHA384 (0x0011). DHKEM_P521_HKDF_SHA512 : int P-521 curve with HKDF-SHA512 (0x0012). DHKEM_X25519_HKDF_SHA256 : int X25519 with HKDF-SHA256 (0x0020). DHKEM_X448_HKDF_SHA512 : int X448 with HKDF-SHA512 (0x0021). """ DHKEM_P256_HKDF_SHA256 = 0x0010 DHKEM_P384_HKDF_SHA384 = 0x0011 DHKEM_P521_HKDF_SHA512 = 0x0012 DHKEM_X25519_HKDF_SHA256 = 0x0020 DHKEM_X448_HKDF_SHA512 = 0x0021
# KDF Algorithm IDs (RFC 9180 §7.2, Table 3)
[docs] class KDFID(IntEnum): """ Key Derivation Function algorithm identifiers (RFC 9180 §7.2, Table 3). Attributes ---------- HKDF_SHA256 : int HKDF with SHA-256 (0x0001). HKDF_SHA384 : int HKDF with SHA-384 (0x0002). HKDF_SHA512 : int HKDF with SHA-512 (0x0003). """ HKDF_SHA256 = 0x0001 HKDF_SHA384 = 0x0002 HKDF_SHA512 = 0x0003
# AEAD Algorithm IDs (RFC 9180 §7.3, Table 5)
[docs] class AEADID(IntEnum): """ Authenticated Encryption with Associated Data algorithm identifiers (RFC 9180 §7.3, Table 5). Attributes ---------- AES_128_GCM : int AES-128 in GCM mode (0x0001). AES_256_GCM : int AES-256 in GCM mode (0x0002). CHACHA20_POLY1305 : int ChaCha20-Poly1305 (0x0003). EXPORT_ONLY : int Export-only mode, no encryption (0xFFFF). """ AES_128_GCM = 0x0001 AES_256_GCM = 0x0002 CHACHA20_POLY1305 = 0x0003 EXPORT_ONLY = 0xFFFF
# Algorithm parameter sizes # KEM params: Nsecret, Nenc, Npk, Nsk, Ndh KEM_PARAMS = { KEMID.DHKEM_P256_HKDF_SHA256: {"Nsecret": 32, "Nenc": 65, "Npk": 65, "Nsk": 32, "Ndh": 32}, KEMID.DHKEM_P384_HKDF_SHA384: {"Nsecret": 48, "Nenc": 97, "Npk": 97, "Nsk": 48, "Ndh": 48}, KEMID.DHKEM_P521_HKDF_SHA512: {"Nsecret": 64, "Nenc": 133, "Npk": 133, "Nsk": 66, "Ndh": 66}, KEMID.DHKEM_X25519_HKDF_SHA256: {"Nsecret": 32, "Nenc": 32, "Npk": 32, "Nsk": 32, "Ndh": 32}, KEMID.DHKEM_X448_HKDF_SHA512: {"Nsecret": 64, "Nenc": 56, "Npk": 56, "Nsk": 56, "Ndh": 56}, } # KDF params: Nh KDF_PARAMS = { KDFID.HKDF_SHA256: {"Nh": 32}, KDFID.HKDF_SHA384: {"Nh": 48}, KDFID.HKDF_SHA512: {"Nh": 64}, } # AEAD params: Nk (key), Nn (nonce), Nt (tag) AEAD_PARAMS = { AEADID.AES_128_GCM: {"Nk": 16, "Nn": 12, "Nt": 16}, AEADID.AES_256_GCM: {"Nk": 32, "Nn": 12, "Nt": 16}, AEADID.CHACHA20_POLY1305: {"Nk": 32, "Nn": 12, "Nt": 16}, AEADID.EXPORT_ONLY: {"Nk": 0, "Nn": 0, "Nt": 0}, }