use neqo_common::qerror; use nss::{
Mode, RecordProtection as Aead, RecordProtectionOps as _, TLS_AES_128_GCM_SHA256,
TLS_VERSION_1_3, hkdf,
};
usecrate::{Error, Res, version::Version};
/// The AEAD used for Retry is fixed, so use thread local storage. fn make_aead(version: Version, mode: Mode) -> Aead { #[cfg(debug_assertions)]
::nss::assert_initialized();
/// Run a function with the appropriate Retry AEAD. pubfn use_aead<F, T>(version: Version, mode: Mode, f: F) -> Res<T> where
F: FnOnce(&Aead) -> Res<T>,
{ match (version, mode) {
(Version::Version2, Mode::Encrypt) => &RETRY_AEAD_V2_ENC,
(Version::Version2, Mode::Decrypt) => &RETRY_AEAD_V2_DEC,
(Version::Version1, Mode::Encrypt) => &RETRY_AEAD_V1_ENC,
(Version::Version1, Mode::Decrypt) => &RETRY_AEAD_V1_DEC, #[cfg(feature = "draft-29")]
(Version::Draft29, Mode::Encrypt) => &RETRY_AEAD_29_ENC, #[cfg(feature = "draft-29")]
(Version::Draft29, Mode::Decrypt) => &RETRY_AEAD_29_DEC,
}
.try_with(|aead| f(&aead.borrow()))
.map_err(|e| {
qerror!("Unable to access Retry AEAD: {e:?}");
Error::Internal
})?
}
/// Determine how large the expansion is for a given key. pubfn expansion(version: Version) -> usize {
use_aead(version, Mode::Encrypt, |aead| Ok(aead.expansion()))
.expect("Unable to access Retry AEAD")
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.