quic: move Quic state into quic module

This commit is contained in:
Dirkjan Ochtman 2021-04-25 09:34:30 +02:00
parent c92bbfc28d
commit 747810a41f
4 changed files with 34 additions and 35 deletions

View File

@ -1,5 +1,3 @@
#[cfg(feature = "quic")]
use crate::conn::Quic;
use crate::conn::{Connection, ConnectionCommon, IoState, PlaintextSink, Reader, Writer};
use crate::error::Error;
use crate::key;
@ -16,7 +14,7 @@ use crate::msgs::handshake::CertificatePayload;
#[cfg(feature = "quic")]
use crate::msgs::handshake::ClientExtension;
#[cfg(feature = "quic")]
use crate::quic;
use crate::quic::{self, Quic};
use crate::sign;
use crate::suites::SupportedCipherSuite;
use crate::verify;

View File

@ -14,6 +14,8 @@ use crate::msgs::hsjoiner::HandshakeJoiner;
use crate::msgs::message::{BorrowedOpaqueMessage, Message, MessagePayload, OpaqueMessage};
use crate::prf;
use crate::quic;
#[cfg(feature = "quic")]
use crate::quic::Quic;
use crate::rand;
use crate::record_layer;
use crate::suites::{SupportedCipherSuite, Tls12CipherSuite};
@ -1077,31 +1079,3 @@ pub enum MessageType {
Handshake,
Data(Message),
}
#[cfg(feature = "quic")]
pub(crate) struct Quic {
/// QUIC transport parameters received from the peer during the handshake
pub params: Option<Vec<u8>>,
pub alert: Option<AlertDescription>,
pub hs_queue: VecDeque<(bool, Vec<u8>)>,
pub early_secret: Option<ring::hkdf::Prk>,
pub hs_secrets: Option<quic::Secrets>,
pub traffic_secrets: Option<quic::Secrets>,
/// Whether keys derived from traffic_secrets have been passed to the QUIC implementation
pub returned_traffic_keys: bool,
}
#[cfg(feature = "quic")]
impl Quic {
pub fn new() -> Self {
Self {
params: None,
alert: None,
hs_queue: VecDeque::new(),
early_secret: None,
hs_secrets: None,
traffic_secrets: None,
returned_traffic_keys: false,
}
}
}

View File

@ -1,6 +1,5 @@
/// This module contains optional APIs for implementing QUIC TLS.
pub use crate::client::ClientQuicExt;
use crate::conn::Quic;
use crate::error::Error;
use crate::key_schedule::hkdf_expand;
use crate::msgs::base::Payload;
@ -12,6 +11,8 @@ use crate::suites::{BulkAlgorithm, SupportedCipherSuite, TLS13_AES_128_GCM_SHA25
use ring::{aead, hkdf};
use std::collections::VecDeque;
/// Secrets used to encrypt/decrypt traffic
#[derive(Clone, Debug)]
pub(crate) struct Secrets {
@ -185,6 +186,34 @@ impl Keys {
}
}
#[cfg(feature = "quic")]
pub(crate) struct Quic {
/// QUIC transport parameters received from the peer during the handshake
pub params: Option<Vec<u8>>,
pub alert: Option<AlertDescription>,
pub hs_queue: VecDeque<(bool, Vec<u8>)>,
pub early_secret: Option<ring::hkdf::Prk>,
pub hs_secrets: Option<Secrets>,
pub traffic_secrets: Option<Secrets>,
/// Whether keys derived from traffic_secrets have been passed to the QUIC implementation
pub returned_traffic_keys: bool,
}
#[cfg(feature = "quic")]
impl Quic {
pub(crate) fn new() -> Self {
Self {
params: None,
alert: None,
hs_queue: VecDeque::new(),
early_secret: None,
hs_secrets: None,
traffic_secrets: None,
returned_traffic_keys: false,
}
}
}
pub(crate) fn read_hs(
plaintext: &[u8],
joiner: &mut HandshakeJoiner,

View File

@ -1,5 +1,3 @@
#[cfg(feature = "quic")]
use crate::conn::Quic;
use crate::conn::{Connection, ConnectionCommon, IoState, PlaintextSink, Reader, Writer};
use crate::error::Error;
use crate::key;
@ -11,7 +9,7 @@ use crate::msgs::enums::ProtocolVersion;
use crate::msgs::enums::SignatureScheme;
use crate::msgs::handshake::ServerExtension;
#[cfg(feature = "quic")]
use crate::quic;
use crate::quic::{self, Quic};
use crate::sign;
use crate::suites::SupportedCipherSuite;
use crate::verify;