#![allow(non_camel_case_types)]
#[cfg(target_os = "linux")]
pub const SOL_TLS: i32 = 282;
#[cfg(target_os = "linux")]
pub const TCP_ULP: i32 = 31;
#[cfg(target_os = "linux")]
pub const SOL_TCP: i32 = 6;
#[cfg(target_os = "linux")]
pub const TLS_TX: i32 = 1;
#[cfg(target_os = "linux")]
pub const TLS_RX: i32 = 2;
#[allow(dead_code)] pub const TLS_1_2_VERSION: u16 = 0x0303;
#[allow(dead_code)]
pub const TLS_1_3_VERSION: u16 = 0x0304;
#[cfg(target_os = "linux")]
pub const TLS_CIPHER_AES_GCM_128: u16 = 51;
#[cfg(target_os = "linux")]
pub const TLS_CIPHER_AES_GCM_256: u16 = 52;
#[cfg(target_os = "linux")]
pub const TLS_CIPHER_CHACHA20_POLY1305: u16 = 54;
pub const AES_GCM_IV_LEN: usize = 8;
pub const AES_GCM_SALT_LEN: usize = 4;
pub const AES_GCM_128_KEY_LEN: usize = 16;
pub const AES_GCM_256_KEY_LEN: usize = 32;
pub const CHACHA20_POLY1305_KEY_LEN: usize = 32;
pub const CHACHA20_POLY1305_IV_LEN: usize = 12;
pub const CHACHA20_POLY1305_SALT_LEN: usize = 0;
pub const TLS_REC_SEQ_LEN: usize = 8;
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct tls_crypto_info {
pub version: u16,
pub cipher_type: u16,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct tls12_crypto_info_aes_gcm_128 {
pub info: tls_crypto_info,
pub iv: [u8; AES_GCM_IV_LEN],
pub key: [u8; AES_GCM_128_KEY_LEN],
pub salt: [u8; AES_GCM_SALT_LEN],
pub rec_seq: [u8; TLS_REC_SEQ_LEN],
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct tls12_crypto_info_aes_gcm_256 {
pub info: tls_crypto_info,
pub iv: [u8; AES_GCM_IV_LEN],
pub key: [u8; AES_GCM_256_KEY_LEN],
pub salt: [u8; AES_GCM_SALT_LEN],
pub rec_seq: [u8; TLS_REC_SEQ_LEN],
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct tls12_crypto_info_chacha20_poly1305 {
pub info: tls_crypto_info,
pub iv: [u8; CHACHA20_POLY1305_IV_LEN],
pub key: [u8; CHACHA20_POLY1305_KEY_LEN],
pub salt: [u8; CHACHA20_POLY1305_SALT_LEN],
pub rec_seq: [u8; TLS_REC_SEQ_LEN],
}
const _: () = assert!(std::mem::size_of::<tls_crypto_info>() == 4);
const _: () = assert!(std::mem::size_of::<tls12_crypto_info_aes_gcm_128>() == 40);
const _: () = assert!(std::mem::size_of::<tls12_crypto_info_aes_gcm_256>() == 56);
const _: () = assert!(std::mem::size_of::<tls12_crypto_info_chacha20_poly1305>() == 56);
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn aes_gcm_128_size() {
assert_eq!(std::mem::size_of::<tls12_crypto_info_aes_gcm_128>(), 40);
}
#[test]
fn aes_gcm_256_size() {
assert_eq!(std::mem::size_of::<tls12_crypto_info_aes_gcm_256>(), 56);
}
#[test]
fn chacha20_poly1305_size() {
assert_eq!(
std::mem::size_of::<tls12_crypto_info_chacha20_poly1305>(),
56
);
}
#[test]
fn version_constants_match_aws_lc() {
assert_eq!(i32::from(TLS_1_2_VERSION), aws_lc_sys::TLS1_2_VERSION);
assert_eq!(i32::from(TLS_1_3_VERSION), aws_lc_sys::TLS1_3_VERSION);
}
}