bindings/rust/extended/s2n-tls/src/enums.rs (254 lines of code) (raw):

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 #![allow(clippy::missing_safety_doc)] // TODO add safety docs use crate::error::Error; use core::convert::TryFrom; use s2n_tls_sys::*; #[derive(Debug, PartialEq, Copy, Clone)] pub enum CallbackResult { Success, Failure, } impl From<CallbackResult> for s2n_status_code::Type { fn from(input: CallbackResult) -> s2n_status_code::Type { match input { CallbackResult::Success => s2n_status_code::SUCCESS, CallbackResult::Failure => s2n_status_code::FAILURE, } } } impl<T, E> From<Result<T, E>> for CallbackResult { fn from(result: Result<T, E>) -> CallbackResult { match result { Ok(_) => CallbackResult::Success, Err(_) => CallbackResult::Failure, } } } /// Corresponds to [s2n_fips_mode]. #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] pub enum FipsMode { Disabled, Enabled, } impl FipsMode { pub fn is_enabled(&self) -> bool { matches!(self, FipsMode::Enabled) } } impl TryFrom<s2n_fips_mode::Type> for FipsMode { type Error = Error; fn try_from(input: s2n_fips_mode::Type) -> Result<Self, Self::Error> { let mode = match input { s2n_fips_mode::FIPS_MODE_DISABLED => FipsMode::Disabled, s2n_fips_mode::FIPS_MODE_ENABLED => FipsMode::Enabled, _ => return Err(Error::INVALID_INPUT), }; Ok(mode) } } /// Corresponds to [s2n_mode]. #[derive(Debug, PartialEq, Copy, Clone)] pub enum Mode { Server, Client, } impl From<Mode> for s2n_mode::Type { fn from(input: Mode) -> s2n_mode::Type { match input { Mode::Server => s2n_mode::SERVER, Mode::Client => s2n_mode::CLIENT, } } } #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] pub enum Version { SSLV2, SSLV3, TLS10, TLS11, TLS12, TLS13, } impl TryFrom<s2n_tls_version::Type> for Version { type Error = Error; fn try_from(input: s2n_tls_version::Type) -> Result<Self, Self::Error> { let version = match input { s2n_tls_version::SSLV2 => Self::SSLV2, s2n_tls_version::SSLV3 => Self::SSLV3, s2n_tls_version::TLS10 => Self::TLS10, s2n_tls_version::TLS11 => Self::TLS11, s2n_tls_version::TLS12 => Self::TLS12, s2n_tls_version::TLS13 => Self::TLS13, _ => return Err(Error::INVALID_INPUT), }; Ok(version) } } #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] pub enum CertSNIMatch { /// The client did not supply an SNI NoSNI, ExactMatch, WildcardMatch, NoMatch, } impl TryFrom<s2n_cert_sni_match::Type> for CertSNIMatch { type Error = Error; fn try_from(input: s2n_cert_sni_match::Type) -> Result<Self, Self::Error> { let match_type = match input { s2n_cert_sni_match::SNI_NONE => Self::NoSNI, s2n_cert_sni_match::SNI_EXACT_MATCH => Self::ExactMatch, s2n_cert_sni_match::SNI_WILDCARD_MATCH => Self::WildcardMatch, s2n_cert_sni_match::SNI_NO_MATCH => Self::NoMatch, _ => return Err(Error::INVALID_INPUT), }; Ok(match_type) } } #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] /// Corresponds to [s2n_blinding]. pub enum Blinding { SelfService, BuiltIn, } impl From<Blinding> for s2n_blinding::Type { fn from(input: Blinding) -> s2n_blinding::Type { match input { Blinding::SelfService => s2n_blinding::SELF_SERVICE_BLINDING, Blinding::BuiltIn => s2n_blinding::BUILT_IN_BLINDING, } } } /// Corresponds to [s2n_cert_auth_type]. #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] pub enum ClientAuthType { Required, Optional, None, } impl From<ClientAuthType> for s2n_cert_auth_type::Type { fn from(input: ClientAuthType) -> s2n_cert_auth_type::Type { match input { ClientAuthType::Required => s2n_cert_auth_type::REQUIRED, ClientAuthType::Optional => s2n_cert_auth_type::OPTIONAL, ClientAuthType::None => s2n_cert_auth_type::NONE, } } } /// Corresponds to [s2n_alert_behavior]. #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] pub enum AlertBehavior { FailOnWarnings, IgnoreWarnings, } impl From<AlertBehavior> for s2n_alert_behavior::Type { fn from(input: AlertBehavior) -> s2n_alert_behavior::Type { match input { AlertBehavior::FailOnWarnings => s2n_alert_behavior::FAIL_ON_WARNINGS, AlertBehavior::IgnoreWarnings => s2n_alert_behavior::IGNORE_WARNINGS, } } } /// Corresponds to [s2n_tls_signature_algorithm]. #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] #[allow(non_camel_case_types)] pub enum SignatureAlgorithm { RSA_PKCS1, RSA_PSS_RSAE, RSA_PSS_PSS, ECDSA, } impl TryFrom<s2n_tls_signature_algorithm::Type> for SignatureAlgorithm { type Error = Error; fn try_from(input: s2n_tls_signature_algorithm::Type) -> Result<Self, Self::Error> { let version = match input { s2n_tls_signature_algorithm::RSA => Self::RSA_PKCS1, s2n_tls_signature_algorithm::RSA_PSS_RSAE => Self::RSA_PSS_RSAE, s2n_tls_signature_algorithm::RSA_PSS_PSS => Self::RSA_PSS_PSS, s2n_tls_signature_algorithm::ECDSA => Self::ECDSA, _ => return Err(Error::INVALID_INPUT), }; Ok(version) } } /// Corresponds to [s2n_tls_hash_algorithm]. #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] #[allow(non_camel_case_types)] pub enum HashAlgorithm { MD5, SHA1, SHA224, SHA256, SHA384, SHA512, } impl TryFrom<s2n_tls_hash_algorithm::Type> for HashAlgorithm { type Error = Error; fn try_from(input: s2n_tls_hash_algorithm::Type) -> Result<Self, Self::Error> { let version = match input { s2n_tls_hash_algorithm::MD5 => Self::MD5, s2n_tls_hash_algorithm::SHA1 => Self::SHA1, s2n_tls_hash_algorithm::SHA224 => Self::SHA224, s2n_tls_hash_algorithm::SHA256 => Self::SHA256, s2n_tls_hash_algorithm::SHA384 => Self::SHA384, s2n_tls_hash_algorithm::SHA512 => Self::SHA512, _ => return Err(Error::INVALID_INPUT), }; Ok(version) } } /// Corresponds to [s2n_peer_key_update]. #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] pub enum PeerKeyUpdate { KeyUpdateNotRequested, KeyUpdatedRequested, } impl From<PeerKeyUpdate> for s2n_peer_key_update::Type { fn from(input: PeerKeyUpdate) -> s2n_peer_key_update::Type { match input { PeerKeyUpdate::KeyUpdateNotRequested => s2n_peer_key_update::KEY_UPDATE_NOT_REQUESTED, PeerKeyUpdate::KeyUpdatedRequested => s2n_peer_key_update::KEY_UPDATE_REQUESTED, } } } #[non_exhaustive] #[derive(Debug)] pub enum PskMode { Resumption, External, } impl From<PskMode> for s2n_psk_mode::Type { fn from(input: PskMode) -> Self { match input { PskMode::Resumption => s2n_psk_mode::RESUMPTION, PskMode::External => s2n_psk_mode::EXTERNAL, } } } #[non_exhaustive] #[derive(Debug)] pub enum PskHmac { SHA256, SHA384, } impl From<PskHmac> for s2n_psk_hmac::Type { fn from(input: PskHmac) -> Self { match input { PskHmac::SHA256 => s2n_psk_hmac::SHA256, PskHmac::SHA384 => s2n_psk_hmac::SHA384, } } } /// Corresponds to [s2n_serialization_version]. #[non_exhaustive] #[derive(Debug, PartialEq, Copy, Clone)] pub enum SerializationVersion { None, V1, } impl From<SerializationVersion> for s2n_serialization_version::Type { fn from(input: SerializationVersion) -> s2n_serialization_version::Type { match input { SerializationVersion::None => s2n_serialization_version::SERIALIZED_CONN_NONE, SerializationVersion::V1 => s2n_serialization_version::SERIALIZED_CONN_V1, } } }