pub trait SecretStore {
fn store_ap_client_key(&mut self, k: &[u8]) -> ();
fn store_ap_client_iv(&mut self, n: &[u8]) -> ();
fn store_ap_server_key(&mut self, k: &[u8]) -> ();
fn store_ap_server_iv(&mut self, n: &[u8]) -> ();
fn load_ap_client_key(&self) -> &[u8];
fn load_ap_client_iv(&self) -> &[u8];
fn load_ap_server_key(&self) -> &[u8];
fn load_ap_server_iv(&self) -> &[u8];
}
pub trait Tls13KeyScheduleInit {
fn no_psk_with_crypto_and_sha256() -> impl Tls13KeyScheduleDerivedSha256;
}
pub trait Tls13KeyScheduleDerivedSha256 {
fn dh_x25519(
self,
_shared_secret: &[u8; 32],
_input_hash: &[u8; 32],
) -> impl Tls13KeyScheduleHandshakeSha256;
}
pub trait Tls13KeyScheduleHandshakeSha256 {
fn handshake_server_key(&self, _key: &mut [u8]) -> ();
fn handshake_client_key(&self, _key: &mut [u8]) -> ();
fn handshake_server_iv(&self, _iv: &mut [u8]) -> ();
fn handshake_client_iv(&self, _iv: &mut [u8]) -> ();
fn handshake_client_finished_key(&self, _key: &mut [u8]) -> ();
fn handshake_server_finished_key(&self, _key: &mut [u8]) -> ();
fn into_secrets(self) -> ([u8; 32], [u8; 32], [u8; 32]);
fn from_secrets(
_shared_secret: [u8; 32],
_client_secret: [u8; 32],
_server_secret: [u8; 32],
) -> Self;
fn finished_handshake(self, _handshake_hash: &[u8; 32]) -> impl Tls13KeyScheduleApSha256;
}
pub trait Tls13KeyScheduleApSha256 {
fn application_server_key(&self, _key: &mut [u8]) -> ();
fn application_client_key(&self, _key: &mut [u8]) -> ();
fn application_server_iv(&self, _iv: &mut [u8]) -> ();
fn application_client_iv(&self, _iv: &mut [u8]) -> ();
}