1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
use crate::session::SessionRandoms; use crate::msgs::handshake::{ServerExtension, SessionID}; use crate::suites; use crate::key; use crate::hash_hs; use std::mem; pub struct HandshakeDetails { pub transcript: hash_hs::HandshakeHash, pub hash_at_server_fin: Vec<u8>, pub session_id: SessionID, pub randoms: SessionRandoms, pub using_ems: bool, pub extra_exts: Vec<ServerExtension>, } impl HandshakeDetails { pub fn new(extra_exts: Vec<ServerExtension>) -> HandshakeDetails { HandshakeDetails { transcript: hash_hs::HandshakeHash::new(), hash_at_server_fin: Vec::new(), session_id: SessionID::empty(), randoms: SessionRandoms::for_server(), using_ems: false, extra_exts, } } } pub struct ServerKXDetails { pub kx: Option<suites::KeyExchange>, } impl ServerKXDetails { pub fn new(kx: suites::KeyExchange) -> ServerKXDetails { ServerKXDetails { kx: Some(kx), } } pub fn take_kx(&mut self) -> suites::KeyExchange { self.kx.take().unwrap() } } pub struct ClientCertDetails { pub cert_chain: Vec<key::Certificate>, } impl ClientCertDetails { pub fn new(chain: Vec<key::Certificate>) -> ClientCertDetails { ClientCertDetails { cert_chain: chain, } } pub fn take_chain(&mut self) -> Vec<key::Certificate> { mem::replace(&mut self.cert_chain, Vec::new()) } }