Struct rustls::tls13::key_schedule::KeySchedule
source · struct KeySchedule {
current: Prk,
suite: &'static Tls13CipherSuite,
}
Expand description
This is the TLS1.3 key schedule. It stores the current secret and the type of hash. This isn’t used directly; but only through the typestates.
Fields§
§current: Prk
§suite: &'static Tls13CipherSuite
Implementations§
source§impl KeySchedule
impl KeySchedule
fn new(suite: &'static Tls13CipherSuite, secret: &[u8]) -> Self
fn set_encrypter(&self, secret: &Prk, common: &mut CommonState)
fn set_decrypter(&self, secret: &Prk, common: &mut CommonState)
fn derive_decrypter(&self, secret: &Prk) -> Box<dyn MessageDecrypter>
fn algorithm(&self) -> Algorithm
fn new_with_empty_secret(suite: &'static Tls13CipherSuite) -> Self
sourcefn input_empty(&mut self)
fn input_empty(&mut self)
Input the empty secret.
sourcefn input_secret(&mut self, secret: &[u8])
fn input_secret(&mut self, secret: &[u8])
Input the given secret.
sourcefn derive<T, L>(&self, key_type: L, kind: SecretKind, hs_hash: &[u8]) -> T
fn derive<T, L>(&self, key_type: L, kind: SecretKind, hs_hash: &[u8]) -> T
Derive a secret of given kind
, using current handshake hash hs_hash
.
fn derive_logged_secret( &self, kind: SecretKind, hs_hash: &[u8], key_log: &dyn KeyLog, client_random: &[u8; 32], ) -> Prk
sourcefn derive_for_empty_hash<T>(&self, kind: SecretKind) -> T
fn derive_for_empty_hash<T>(&self, kind: SecretKind) -> T
Derive a secret of given kind
using the hash of the empty string
for the handshake hash. Useful only for
SecretKind::ResumptionPSKBinderKey
and
SecretKind::DerivedSecret
.
sourcefn sign_finish(&self, base_key: &Prk, hs_hash: &Digest) -> Tag
fn sign_finish(&self, base_key: &Prk, hs_hash: &Digest) -> Tag
Sign the finished message consisting of hs_hash
using a current
traffic secret.
sourcefn sign_verify_data(&self, base_key: &Prk, hs_hash: &Digest) -> Tag
fn sign_verify_data(&self, base_key: &Prk, hs_hash: &Digest) -> Tag
Sign the finished message consisting of hs_hash
using the key material
base_key
.
sourcefn derive_next(&self, base_key: &Prk) -> Prk
fn derive_next(&self, base_key: &Prk) -> Prk
Derive the next application traffic secret, returning it.
sourcefn derive_ticket_psk(&self, rms: &Prk, nonce: &[u8]) -> Vec<u8> ⓘ
fn derive_ticket_psk(&self, rms: &Prk, nonce: &[u8]) -> Vec<u8> ⓘ
Derive the PSK to use given a resumption_master_secret and ticket_nonce.
fn export_keying_material( &self, current_exporter_secret: &Prk, out: &mut [u8], label: &[u8], context: Option<&[u8]>, ) -> Result<(), Error>
Auto Trait Implementations§
impl Freeze for KeySchedule
impl RefUnwindSafe for KeySchedule
impl Send for KeySchedule
impl Sync for KeySchedule
impl Unpin for KeySchedule
impl UnwindSafe for KeySchedule
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more