| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package handshake
- import (
- "crypto/x509"
- "github.com/bifurcation/mint"
- "github.com/lucas-clemente/quic-go/internal/crypto"
- "github.com/lucas-clemente/quic-go/internal/protocol"
- )
- // Sealer seals a packet
- type Sealer interface {
- Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte
- Overhead() int
- }
- // mintTLS combines some methods needed to interact with mint.
- type mintTLS interface {
- crypto.TLSExporter
- Handshake() mint.Alert
- }
- // A TLSExtensionHandler sends and received the QUIC TLS extension.
- // It provides the parameters sent by the peer on a channel.
- type TLSExtensionHandler interface {
- Send(mint.HandshakeType, *mint.ExtensionList) error
- Receive(mint.HandshakeType, *mint.ExtensionList) error
- GetPeerParams() <-chan TransportParameters
- }
- type baseCryptoSetup interface {
- HandleCryptoStream() error
- ConnectionState() ConnectionState
- GetSealer() (protocol.EncryptionLevel, Sealer)
- GetSealerWithEncryptionLevel(protocol.EncryptionLevel) (Sealer, error)
- GetSealerForCryptoStream() (protocol.EncryptionLevel, Sealer)
- }
- // CryptoSetup is the crypto setup used by gQUIC
- type CryptoSetup interface {
- baseCryptoSetup
- Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, protocol.EncryptionLevel, error)
- }
- // CryptoSetupTLS is the crypto setup used by IETF QUIC
- type CryptoSetupTLS interface {
- baseCryptoSetup
- OpenHandshake(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error)
- Open1RTT(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error)
- }
- // ConnectionState records basic details about the QUIC connection.
- // Warning: This API should not be considered stable and might change soon.
- type ConnectionState struct {
- HandshakeComplete bool // handshake is complete
- ServerName string // server name requested by client, if any (server side only)
- PeerCertificates []*x509.Certificate // certificate chain presented by remote peer
- }
|