External Types
For interoperability, this crate also defines several types and algorithm identifiers.
AEADs
The following AEADs are defined.
#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
#[repr(u16)]
/// AEAD types
pub enum AeadType {
/// AES GCM 128
Aes128Gcm = 0x0001,
/// AES GCM 256
Aes256Gcm = 0x0002,
An AEAD provides the following functions to get the according values for each algorithm.
tag_size
key_size
nonce_size
Hashing
The following hash algorithms are defined.
#[repr(u8)]
#[allow(non_camel_case_types)]
/// Hash types
pub enum HashType {
Sha2_256 = 0x04,
A hash algorithm provides the following functions to get the according values for each algorithm.
size
Signatures
The following signature schemes are defined.
TlsDeserializeBytes,
TlsSize,
)]
#[repr(u16)]
pub enum SignatureScheme {
/// ECDSA_SECP256R1_SHA256
ECDSA_SECP256R1_SHA256 = 0x0403,
/// ECDSA_SECP384R1_SHA384
ECDSA_SECP384R1_SHA384 = 0x0503,
/// ECDSA_SECP521R1_SHA512
ECDSA_SECP521R1_SHA512 = 0x0603,
/// ED25519
HPKE Types
The HPKE implementation is part of the crypto provider as well. The crate, therefore, defines the necessary types too.
The HPKE algorithms are defined as follows.
/// KEM Types for HPKE
#[derive(PartialEq, Eq, Copy, Clone, Debug, Serialize, Deserialize)]
#[repr(u16)]
pub enum HpkeKemType {
/// DH KEM on P256
DhKemP256 = 0x0010,
/// DH KEM on P384
DhKemP384 = 0x0011,
/// DH KEM on P521
DhKemP521 = 0x0012,
/// DH KEM on x25519
DhKem25519 = 0x0020,
/// XWing combiner for ML-KEM and X25519
XWingKemDraft2 = 0x004D,
}
/// KDF Types for HPKE
#[derive(PartialEq, Eq, Copy, Clone, Debug, Serialize, Deserialize)]
#[repr(u16)]
pub enum HpkeKdfType {
/// HKDF SHA 256
HkdfSha256 = 0x0001,
/// HKDF SHA 512
HkdfSha512 = 0x0003,
}
/// AEAD Types for HPKE.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[repr(u16)]
pub enum HpkeAeadType {
/// AES GCM 128
AesGcm128 = 0x0001,
/// AES GCM 256
AesGcm256 = 0x0002,
In addition, helper structs for HpkeCiphertext
and HpkeKeyPair
are defined.
/// opaque kem_output<V>;
/// opaque ciphertext<V>;
/// } HPKECiphertext;
/// ```
Eq,
Clone,
Serialize,
Deserialize,