diff --git a/auth.go b/auth.go index 3e12d97..859387e 100644 --- a/auth.go +++ b/auth.go @@ -7,6 +7,7 @@ package tls import ( "crypto" "crypto/ecdsa" + "crypto/elliptic" "crypto/rsa" "encoding/asn1" "errors" @@ -131,3 +132,35 @@ func writeSignedMessage(sigHash io.Writer, context string, transcript hash.Hash) io.WriteString(sigHash, context) sigHash.Write(transcript.Sum(nil)) } + +// signatureSchemesForCertificate returns the list of supported SignatureSchemes +// for a given certificate, based on the public key. +func signatureSchemesForCertificate(cert *Certificate) []SignatureScheme { + priv, ok := cert.PrivateKey.(crypto.Signer) + if !ok { + return nil + } + + switch priv := priv.Public().(type) { + case *ecdsa.PublicKey: + switch priv.Curve { + case elliptic.P256(): + return []SignatureScheme{ECDSAWithP256AndSHA256} + case elliptic.P384(): + return []SignatureScheme{ECDSAWithP384AndSHA384} + case elliptic.P521(): + return []SignatureScheme{ECDSAWithP521AndSHA512} + default: + return nil + } + case *rsa.PublicKey: + // RSA keys with RSA-PSS OID are not supported by crypto/x509. + return []SignatureScheme{ + PSSWithSHA256, + PSSWithSHA384, + PSSWithSHA512, + } + default: + return nil + } +} diff --git a/cipher_suites.go b/cipher_suites.go index 973962a..c78bb4b 100644 --- a/cipher_suites.go +++ b/cipher_suites.go @@ -419,12 +419,16 @@ func ecdheRSAKA(version uint16) keyAgreement { func mutualCipherSuite(have []uint16, want uint16) *cipherSuite { for _, id := range have { if id == want { - for _, suite := range cipherSuites { - if suite.id == want { - return suite - } - } - return nil + return cipherSuiteByID(id) + } + } + return nil +} + +func cipherSuiteByID(id uint16) *cipherSuite { + for _, cipherSuite := range cipherSuites { + if cipherSuite.id == id { + return cipherSuite } } return nil @@ -433,12 +437,16 @@ func mutualCipherSuite(have []uint16, want uint16) *cipherSuite { func mutualCipherSuiteTLS13(have []uint16, want uint16) *cipherSuiteTLS13 { for _, id := range have { if id == want { - for _, suite := range cipherSuitesTLS13 { - if suite.id == want { - return suite - } - } - return nil + return cipherSuiteTLS13ByID(id) + } + } + return nil +} + +func cipherSuiteTLS13ByID(id uint16) *cipherSuiteTLS13 { + for _, cipherSuite := range cipherSuitesTLS13 { + if cipherSuite.id == id { + return cipherSuite } } return nil diff --git a/common.go b/common.go index 2901b9d..4614d18 100644 --- a/common.go +++ b/common.go @@ -39,7 +39,7 @@ const ( maxCiphertextTLS13 = 16384 + 256 // maximum ciphertext length in TLS 1.3 recordHeaderLen = 5 // record header length maxHandshake = 65536 // maximum handshake we support (protocol max is 16 MB) - maxUselessRecords = 5 // maximum number of consecutive non-advancing records + maxUselessRecords = 16 // maximum number of consecutive non-advancing records ) // TLS record types. @@ -93,6 +93,7 @@ const ( extensionSupportedVersions uint16 = 43 extensionCookie uint16 = 44 extensionPSKModes uint16 = 45 + extensionCertificateAuthorities uint16 = 47 extensionSignatureAlgorithmsCert uint16 = 50 extensionKeyShare uint16 = 51 extensionNextProtoNeg uint16 = 13172 // not IANA assigned @@ -235,28 +236,49 @@ const ( RequireAndVerifyClientCert ) +// requiresClientCert returns whether the ClientAuthType requires a client +// certificate to be provided. +func requiresClientCert(c ClientAuthType) bool { + switch c { + case RequireAnyClientCert, RequireAndVerifyClientCert: + return true + default: + return false + } +} + // ClientSessionState contains the state needed by clients to resume TLS // sessions. type ClientSessionState struct { sessionTicket []uint8 // Encrypted ticket used for session resumption with server vers uint16 // SSL/TLS version negotiated for the session cipherSuite uint16 // Ciphersuite negotiated for the session - masterSecret []byte // MasterSecret generated by client on a full handshake + masterSecret []byte // Full handshake MasterSecret, or TLS 1.3 resumption_master_secret serverCertificates []*x509.Certificate // Certificate chain presented by the server verifiedChains [][]*x509.Certificate // Certificate chains we built for verification + receivedAt time.Time // When the session ticket was received from the server + + // TLS 1.3 fields. + nonce []byte // Ticket nonce sent by the server, to derive PSK + useBy time.Time // Expiration of the ticket lifetime as set by the server + ageAdd uint32 // Random obfuscation factor for sending the ticket age } // ClientSessionCache is a cache of ClientSessionState objects that can be used // by a client to resume a TLS session with a given server. ClientSessionCache // implementations should expect to be called concurrently from different -// goroutines. Only ticket-based resumption is supported, not SessionID-based -// resumption. +// goroutines. Up to TLS 1.2, only ticket-based resumption is supported, not +// SessionID-based resumption. In TLS 1.3 they were merged into PSK modes, which +// are supported via this interface. type ClientSessionCache interface { // Get searches for a ClientSessionState associated with the given key. // On return, ok is true if one was found. Get(sessionKey string) (session *ClientSessionState, ok bool) - // Put adds the ClientSessionState to the cache with the given key. + // Put adds the ClientSessionState to the cache with the given key. It might + // get called multiple times in a connection if a TLS 1.3 server provides + // more than one session ticket. If called with a nil *ClientSessionState, + // it should remove the cache entry. Put(sessionKey string, cs *ClientSessionState) } @@ -503,19 +525,19 @@ type Config struct { // the order of elements in CipherSuites, is used. PreferServerCipherSuites bool - // SessionTicketsDisabled may be set to true to disable session ticket - // (resumption) support. Note that on clients, session ticket support is + // SessionTicketsDisabled may be set to true to disable session ticket and + // PSK (resumption) support. Note that on clients, session ticket support is // also disabled if ClientSessionCache is nil. SessionTicketsDisabled bool - // SessionTicketKey is used by TLS servers to provide session - // resumption. See RFC 5077. If zero, it will be filled with - // random data before the first server handshake. + // SessionTicketKey is used by TLS servers to provide session resumption. + // See RFC 5077 and the PSK mode of RFC 8446. If zero, it will be filled + // with random data before the first server handshake. // // If multiple servers are terminating connections for the same host // they should all have the same SessionTicketKey. If the // SessionTicketKey leaks, previously recorded and future TLS - // connections using that key are compromised. + // connections using that key might be compromised. SessionTicketKey [32]byte // ClientSessionCache is a cache of ClientSessionState entries for TLS @@ -590,6 +612,10 @@ func ticketKeyFromBytes(b [32]byte) (key ticketKey) { return key } +// maxSessionTicketLifetime is the maximum allowed lifetime of a TLS 1.3 session +// ticket, and the lifetime we set for tickets we send. +const maxSessionTicketLifetime = 7 * 24 * time.Hour + // Clone returns a shallow clone of c. It is safe to clone a Config that is // being used concurrently by a TLS client or server. func (c *Config) Clone() *Config { @@ -747,7 +773,7 @@ func (c *Config) supportedVersions(isClient bool) []uint16 { continue } // TLS 1.3 is only supported if explicitly requested while in development. - if v == VersionTLS13 && (!isClient || c == nil || c.MaxVersion != VersionTLS13) { + if v == VersionTLS13 && (c == nil || c.MaxVersion != VersionTLS13) { continue } versions = append(versions, v) @@ -863,14 +889,20 @@ func (c *Config) BuildNameToCertificate() { } } -// writeKeyLog logs client random and master secret if logging was enabled by -// setting c.KeyLogWriter. -func (c *Config) writeKeyLog(clientRandom, masterSecret []byte) error { +const ( + keyLogLabelTLS12 = "CLIENT_RANDOM" + keyLogLabelClientHandshake = "CLIENT_HANDSHAKE_TRAFFIC_SECRET" + keyLogLabelServerHandshake = "SERVER_HANDSHAKE_TRAFFIC_SECRET" + keyLogLabelClientTraffic = "CLIENT_TRAFFIC_SECRET_0" + keyLogLabelServerTraffic = "SERVER_TRAFFIC_SECRET_0" +) + +func (c *Config) writeKeyLog(label string, clientRandom, secret []byte) error { if c.KeyLogWriter == nil { return nil } - logLine := []byte(fmt.Sprintf("CLIENT_RANDOM %x %x\n", clientRandom, masterSecret)) + logLine := []byte(fmt.Sprintf("%s %x %x\n", label, clientRandom, secret)) writerMutex.Lock() _, err := c.KeyLogWriter.Write(logLine) @@ -941,15 +973,21 @@ func NewLRUClientSessionCache(capacity int) ClientSessionCache { } } -// Put adds the provided (sessionKey, cs) pair to the cache. +// Put adds the provided (sessionKey, cs) pair to the cache. If cs is nil, the entry +// corresponding to sessionKey is removed from the cache instead. func (c *lruSessionCache) Put(sessionKey string, cs *ClientSessionState) { c.Lock() defer c.Unlock() if elem, ok := c.m[sessionKey]; ok { - entry := elem.Value.(*lruSessionCacheEntry) - entry.state = cs - c.q.MoveToFront(elem) + if cs == nil { + c.q.Remove(elem) + delete(c.m, sessionKey) + } else { + entry := elem.Value.(*lruSessionCacheEntry) + entry.state = cs + c.q.MoveToFront(elem) + } return } diff --git a/conn.go b/conn.go index 853e86e..6786d19 100644 --- a/conn.go +++ b/conn.go @@ -57,6 +57,9 @@ type Conn struct { secureRenegotiation bool // ekm is a closure for exporting keying material. ekm func(label string, context []byte, length int) ([]byte, error) + // resumptionSecret is the resumption_master_secret for handling + // NewSessionTicket messages. nil if config.SessionTicketsDisabled. + resumptionSecret []byte // clientFinishedIsFirst is true if the client sent the first Finished // message during the most recent handshake. This is recorded because @@ -94,8 +97,9 @@ type Conn struct { bytesSent int64 packetsSent int64 - // retryCount counts the number of consecutive warning alerts received - // by Conn.readRecord. Protected by in.Mutex. + // retryCount counts the number of consecutive non-advancing records + // received by Conn.readRecord. That is, records that neither advance the + // handshake, nor deliver application data. Protected by in.Mutex. retryCount int // activeCall is an atomic int32; the low bit is whether Close has @@ -350,7 +354,7 @@ func (hc *halfConn) decrypt(record []byte) ([]byte, recordType, error) { } case cbcMode: blockSize := c.BlockSize() - minPayload := explicitNonceLen + roundUp(hc.mac.Size()+1, blockSize) // TODO: vuln? + minPayload := explicitNonceLen + roundUp(hc.mac.Size()+1, blockSize) if len(payload)%blockSize != 0 || len(payload) < minPayload { return nil, 0, alertBadRecordMAC } @@ -550,28 +554,35 @@ func (c *Conn) newRecordHeaderError(conn net.Conn, msg string) (err RecordHeader return err } -// readRecord reads the next TLS record from the connection -// and updates the record layer state. -func (c *Conn) readRecord(want recordType) error { - // Caller must be in sync with connection: - // handshake data if handshake not yet completed, - // else application data. - switch want { - default: - panic("tls: unknown record type requested") - case recordTypeHandshake, recordTypeChangeCipherSpec: - if c.handshakeComplete() { - panic("tls: handshake or ChangeCipherSpec requested while not in handshake") - } - case recordTypeApplicationData: - if !c.handshakeComplete() { - panic("tls: application data record requested while in handshake") - } +func (c *Conn) readRecord() error { + return c.readRecordOrCCS(false) +} + +func (c *Conn) readChangeCipherSpec() error { + return c.readRecordOrCCS(true) +} + +// readRecordOrCCS reads one or more TLS records from the connection and +// updates the record layer state. Some invariants: +// * c.in must be locked +// * c.input must be empty +// During the handshake one and only one of the following will happen: +// - c.hand grows +// - c.in.changeCipherSpec is called +// - an error is returned +// After the handshake one and only one of the following will happen: +// - c.hand grows +// - c.input is set +// - an error is returned +func (c *Conn) readRecordOrCCS(expectChangeCipherSpec bool) error { + if c.in.err != nil { + return c.in.err } + handshakeComplete := c.handshakeComplete() // This function modifies c.rawInput, which owns the c.input memory. if c.input.Len() != 0 { - panic("tls: attempted to read record with pending application data") + return c.in.setErrorLocked(errors.New("tls: internal error: attempted to read record with pending application data")) } c.input.Reset(nil) @@ -595,7 +606,7 @@ func (c *Conn) readRecord(want recordType) error { // start with a uint16 length where the MSB is set and the first record // is always < 256 bytes long. Therefore typ == 0x80 strongly suggests // an SSLv2 client. - if want == recordTypeHandshake && typ == 0x80 { + if !handshakeComplete && typ == 0x80 { c.sendAlert(alertProtocolVersion) return c.in.setErrorLocked(c.newRecordHeaderError(nil, "unsupported SSLv2 handshake received")) } @@ -612,7 +623,7 @@ func (c *Conn) readRecord(want recordType) error { // client. Bail out before reading a full 'body', if possible. // The current max version is 3.3 so if the version is >= 16.0, // it's probably not real. - if (typ != recordTypeAlert && typ != want) || vers >= 0x1000 { + if (typ != recordTypeAlert && typ != recordTypeHandshake) || vers >= 0x1000 { return c.in.setErrorLocked(c.newRecordHeaderError(c.conn, "first record does not look like a TLS handshake")) } } @@ -653,18 +664,6 @@ func (c *Conn) readRecord(want recordType) error { return c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) } - // In TLS 1.3, change_cipher_spec records are ignored until the Finished. - // See RFC 8446, Appendix D.4. Note that according to Section 5, a server - // can send a ChangeCipherSpec before its ServerHello, when c.vers is still - // unset. That's not useful though and suspicious if the server then selects - // a lower protocol version, so don't allow that. - if c.vers == VersionTLS13 && typ == recordTypeChangeCipherSpec { - if len(data) != 1 || data[0] != 1 || c.handshakeComplete() { - return c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) - } - return c.retryReadRecord(want) - } - switch typ { default: return c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) @@ -681,7 +680,8 @@ func (c *Conn) readRecord(want recordType) error { } switch data[0] { case alertLevelWarning: - return c.retryReadRecord(want) // Drop the record on the floor and retry. + // Drop the record on the floor and retry. + return c.retryReadRecord(expectChangeCipherSpec) case alertLevelError: return c.in.setErrorLocked(&net.OpError{Op: "remote error", Err: alert(data[1])}) default: @@ -689,59 +689,61 @@ func (c *Conn) readRecord(want recordType) error { } case recordTypeChangeCipherSpec: - if typ != want || len(data) != 1 || data[0] != 1 { - return c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) + if len(data) != 1 || data[0] != 1 { + return c.in.setErrorLocked(c.sendAlert(alertDecodeError)) } // Handshake messages are not allowed to fragment across the CCS. if c.hand.Len() > 0 { return c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) } + // In TLS 1.3, change_cipher_spec records are ignored until the + // Finished. See RFC 8446, Appendix D.4. Note that according to Section + // 5, a server can send a ChangeCipherSpec before its ServerHello, when + // c.vers is still unset. That's not useful though and suspicious if the + // server then selects a lower protocol version, so don't allow that. + if c.vers == VersionTLS13 { + return c.retryReadRecord(expectChangeCipherSpec) + } + if !expectChangeCipherSpec { + return c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) + } if err := c.in.changeCipherSpec(); err != nil { return c.in.setErrorLocked(c.sendAlert(err.(alert))) } - return nil case recordTypeApplicationData: - if typ != want { + if !handshakeComplete || expectChangeCipherSpec { return c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) } + // Some OpenSSL servers send empty records in order to randomize the + // CBC IV. Ignore a limited number of empty records. if len(data) == 0 { - return c.retryReadRecord(want) + return c.retryReadRecord(expectChangeCipherSpec) } // Note that data is owned by c.rawInput, following the Next call above, // to avoid copying the plaintext. This is safe because c.rawInput is // not read from or written to until c.input is drained. c.input.Reset(data) - return nil case recordTypeHandshake: - if typ != want && !c.isRenegotiationAcceptable() { - return c.in.setErrorLocked(c.sendAlert(alertNoRenegotiation)) - } - if len(data) == 0 { + if len(data) == 0 || expectChangeCipherSpec { return c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) } c.hand.Write(data) - return nil } + + return nil } -// retryReadRecord recurses into readRecord to drop a non-advancing record, like +// retryReadRecord recurses into readRecordOrCCS to drop a non-advancing record, like // a warning alert, empty application_data, or a change_cipher_spec in TLS 1.3. -func (c *Conn) retryReadRecord(want recordType) error { +func (c *Conn) retryReadRecord(expectChangeCipherSpec bool) error { c.retryCount++ if c.retryCount > maxUselessRecords { c.sendAlert(alertUnexpectedMessage) return c.in.setErrorLocked(errors.New("tls: too many ignored records")) } - return c.readRecord(want) -} - -func (c *Conn) isRenegotiationAcceptable() bool { - return c.isClient && - c.vers != VersionTLS13 && - c.handshakeComplete() && - c.config.Renegotiation != RenegotiateNever + return c.readRecordOrCCS(expectChangeCipherSpec) } // atLeastReader reads from R, stopping with EOF once at least N bytes have been @@ -947,7 +949,7 @@ func (c *Conn) writeRecordLocked(typ recordType, data []byte) (int, error) { data = data[m:] } - if typ == recordTypeChangeCipherSpec { + if typ == recordTypeChangeCipherSpec && c.vers != VersionTLS13 { if err := c.out.changeCipherSpec(); err != nil { return n, c.sendAlertLocked(err.(alert)) } @@ -969,10 +971,7 @@ func (c *Conn) writeRecord(typ recordType, data []byte) (int, error) { // the record layer. func (c *Conn) readHandshake() (interface{}, error) { for c.hand.Len() < 4 { - if err := c.in.err; err != nil { - return nil, err - } - if err := c.readRecord(recordTypeHandshake); err != nil { + if err := c.readRecord(); err != nil { return nil, err } } @@ -984,10 +983,7 @@ func (c *Conn) readHandshake() (interface{}, error) { return nil, c.in.setErrorLocked(fmt.Errorf("tls: handshake message of length %d bytes exceeds maximum of %d bytes", n, maxHandshake)) } for c.hand.Len() < 4+n { - if err := c.in.err; err != nil { - return nil, err - } - if err := c.readRecord(recordTypeHandshake); err != nil { + if err := c.readRecord(); err != nil { return nil, err } } @@ -1130,10 +1126,10 @@ func (c *Conn) handleRenegotiation() error { return err } - _, ok := msg.(*helloRequestMsg) + helloReq, ok := msg.(*helloRequestMsg) if !ok { c.sendAlert(alertUnexpectedMessage) - return alertUnexpectedMessage + return unexpectedMessageError(helloReq, msg) } if !c.isClient { @@ -1164,6 +1160,63 @@ func (c *Conn) handleRenegotiation() error { return c.handshakeErr } +// handlePostHandshakeMessage processes a handshake message arrived after the +// handshake is complete. Up to TLS 1.2, it indicates the start of a renegotiation. +func (c *Conn) handlePostHandshakeMessage() error { + if c.vers != VersionTLS13 { + return c.handleRenegotiation() + } + + msg, err := c.readHandshake() + if err != nil { + return err + } + + c.retryCount++ + if c.retryCount > maxUselessRecords { + c.sendAlert(alertUnexpectedMessage) + return c.in.setErrorLocked(errors.New("tls: too many non-advancing records")) + } + + switch msg := msg.(type) { + case *newSessionTicketMsgTLS13: + return c.handleNewSessionTicket(msg) + case *keyUpdateMsg: + return c.handleKeyUpdate(msg) + default: + c.sendAlert(alertUnexpectedMessage) + return fmt.Errorf("tls: received unexpected handshake message of type %T", msg) + } +} + +func (c *Conn) handleKeyUpdate(keyUpdate *keyUpdateMsg) error { + cipherSuite := cipherSuiteTLS13ByID(c.cipherSuite) + if cipherSuite == nil { + return c.in.setErrorLocked(c.sendAlert(alertInternalError)) + } + + newSecret := cipherSuite.nextTrafficSecret(c.in.trafficSecret) + c.in.setTrafficSecret(cipherSuite, newSecret) + + if keyUpdate.updateRequested { + c.out.Lock() + defer c.out.Unlock() + + msg := &keyUpdateMsg{} + _, err := c.writeRecordLocked(recordTypeHandshake, msg.marshal()) + if err != nil { + // Surface the error at the next write. + c.out.setErrorLocked(err) + return nil + } + + newSecret := cipherSuite.nextTrafficSecret(c.out.trafficSecret) + c.out.setTrafficSecret(cipherSuite, newSecret) + } + + return nil +} + // Read can be made to time out and return a net.Error with Timeout() == true // after a fixed time limit; see SetDeadline and SetReadDeadline. func (c *Conn) Read(b []byte) (int, error) { @@ -1179,48 +1232,34 @@ func (c *Conn) Read(b []byte) (int, error) { c.in.Lock() defer c.in.Unlock() - // Some OpenSSL servers send empty records in order to randomize the - // CBC IV. So this loop ignores a limited number of empty records. - const maxConsecutiveEmptyRecords = 100 - for emptyRecordCount := 0; emptyRecordCount <= maxConsecutiveEmptyRecords; emptyRecordCount++ { - for c.input.Len() == 0 && c.in.err == nil { - if err := c.readRecord(recordTypeApplicationData); err != nil { - return 0, err - } - if c.hand.Len() > 0 { - // We received handshake bytes, indicating the - // start of a renegotiation. - if err := c.handleRenegotiation(); err != nil { - return 0, err - } - } - } - if err := c.in.err; err != nil { + for c.input.Len() == 0 { + if err := c.readRecord(); err != nil { return 0, err } - - n, _ := c.input.Read(b) - - // If a close-notify alert is waiting, read it so that we can return (n, - // EOF) instead of (n, nil), to signal to the HTTP response reading - // goroutine that the connection is now closed. This eliminates a race - // where the HTTP response reading goroutine would otherwise not observe - // the EOF until its next read, by which time a client goroutine might - // have already tried to reuse the HTTP connection for a new request. - // See https://golang.org/cl/76400046 and https://golang.org/issue/3514 - if n != 0 && c.input.Len() == 0 && c.rawInput.Len() > 0 && - recordType(c.rawInput.Bytes()[0]) == recordTypeAlert { - if err := c.readRecord(recordTypeApplicationData); err != nil { - return n, err // will be io.EOF on closeNotify + for c.hand.Len() > 0 { + if err := c.handlePostHandshakeMessage(); err != nil { + return 0, err } } - - if n != 0 { - return n, nil - } } - return 0, io.ErrNoProgress + n, _ := c.input.Read(b) + + // If a close-notify alert is waiting, read it so that we can return (n, + // EOF) instead of (n, nil), to signal to the HTTP response reading + // goroutine that the connection is now closed. This eliminates a race + // where the HTTP response reading goroutine would otherwise not observe + // the EOF until its next read, by which time a client goroutine might + // have already tried to reuse the HTTP connection for a new request. + // See https://golang.org/cl/76400046 and https://golang.org/issue/3514 + if n != 0 && c.input.Len() == 0 && c.rawInput.Len() > 0 && + recordType(c.rawInput.Bytes()[0]) == recordTypeAlert { + if err := c.readRecord(); err != nil { + return n, err // will be io.EOF on closeNotify + } + } + + return n, nil } // Close closes the connection. @@ -1314,7 +1353,7 @@ func (c *Conn) Handshake() error { } if c.handshakeErr == nil && !c.handshakeComplete() { - panic("tls: internal error: handshake should have had a result") + c.handshakeErr = errors.New("tls: internal error: handshake should have had a result") } return c.handshakeErr diff --git a/handshake_client.go b/handshake_client.go index 08682c7..1f92682 100644 --- a/handshake_client.go +++ b/handshake_client.go @@ -18,6 +18,7 @@ import ( "strconv" "strings" "sync/atomic" + "time" ) type clientHandshakeState struct { @@ -137,7 +138,7 @@ NextCipherSuite: return hello, params, nil } -func (c *Conn) clientHandshake() error { +func (c *Conn) clientHandshake() (err error) { if c.config == nil { c.config = defaultConfig() } @@ -151,8 +152,20 @@ func (c *Conn) clientHandshake() error { return err } - var newSession *ClientSessionState - cacheKey, session := c.loadSession(hello) + cacheKey, session, earlySecret, binderKey := c.loadSession(hello) + if cacheKey != "" && session != nil { + defer func() { + // If we got a handshake failure when resuming a session, throw away + // the session ticket. See RFC 5077, Section 3.2. + // + // RFC 8446 makes no mention of dropping tickets on failure, but it + // does require servers to abort on invalid binders, so we need to + // delete tickets to recover from a corrupted PSK. + if err != nil { + c.config.ClientSessionCache.Put(cacheKey, nil) + } + }() + } if _, err := c.writeRecord(recordTypeHandshake, hello.marshal()); err != nil { return err @@ -180,81 +193,147 @@ func (c *Conn) clientHandshake() error { hello: hello, ecdheParams: ecdheParams, session: session, + earlySecret: earlySecret, + binderKey: binderKey, } - if err := hs.handshake(); err != nil { - return err - } + // In TLS 1.3, session tickets are delivered after the handshake. + return hs.handshake() + } - newSession = hs.session - } else { - hs := &clientHandshakeState{ - c: c, - serverHello: serverHello, - hello: hello, - session: session, - } + hs := &clientHandshakeState{ + c: c, + serverHello: serverHello, + hello: hello, + session: session, + } - if err := hs.handshake(); err != nil { - return err - } - - newSession = hs.session + if err := hs.handshake(); err != nil { + return err } // If we had a successful handshake and hs.session is different from // the one already cached - cache a new one. - if hello.ticketSupported && newSession != nil && session != newSession { - c.config.ClientSessionCache.Put(cacheKey, newSession) + if cacheKey != "" && hs.session != nil && session != hs.session { + c.config.ClientSessionCache.Put(cacheKey, hs.session) } return nil } -func (c *Conn) loadSession(hello *clientHelloMsg) (cacheKey string, session *ClientSessionState) { +func (c *Conn) loadSession(hello *clientHelloMsg) (cacheKey string, + session *ClientSessionState, earlySecret, binderKey []byte) { if c.config.SessionTicketsDisabled || c.config.ClientSessionCache == nil { - return + return "", nil, nil, nil } hello.ticketSupported = true + if hello.supportedVersions[0] == VersionTLS13 { + // Require DHE on resumption as it guarantees forward secrecy against + // compromise of the session ticket key. See RFC 8446, Section 4.2.9. + hello.pskModes = []uint8{pskModeDHE} + } + // Session resumption is not allowed if renegotiating because // renegotiation is primarily used to allow a client to send a client // certificate, which would be skipped if session resumption occurred. if c.handshakes != 0 { - return + return "", nil, nil, nil } // Try to resume a previously negotiated TLS session, if available. cacheKey = clientSessionCacheKey(c.conn.RemoteAddr(), c.config) - candidateSession, ok := c.config.ClientSessionCache.Get(cacheKey) - if !ok { - return - } - - // Check that the ciphersuite and version used for the previous session - // are still valid. - cipherSuiteOk := false - for _, id := range hello.cipherSuites { - if id == candidateSession.cipherSuite { - cipherSuiteOk = true - break - } + session, ok := c.config.ClientSessionCache.Get(cacheKey) + if !ok || session == nil { + return cacheKey, nil, nil, nil } + // Check that version used for the previous session is still valid. versOk := false for _, v := range hello.supportedVersions { - if v == candidateSession.vers { + if v == session.vers { versOk = true break } } - - if versOk && cipherSuiteOk { - session = candidateSession - hello.sessionTicket = session.sessionTicket + if !versOk { + return cacheKey, nil, nil, nil } + // Check that the cached server certificate is not expired, and that it's + // valid for the ServerName. This should be ensured by the cache key, but + // protect the application from a faulty ClientSessionCache implementation. + if !c.config.InsecureSkipVerify { + if len(session.verifiedChains) == 0 { + // The original connection had InsecureSkipVerify, while this doesn't. + return cacheKey, nil, nil, nil + } + serverCert := session.serverCertificates[0] + if c.config.time().After(serverCert.NotAfter) { + // Expired certificate, delete the entry. + c.config.ClientSessionCache.Put(cacheKey, nil) + return cacheKey, nil, nil, nil + } + if err := serverCert.VerifyHostname(c.config.ServerName); err != nil { + return cacheKey, nil, nil, nil + } + } + + if session.vers != VersionTLS13 { + // In TLS 1.2 the cipher suite must match the resumed session. Ensure we + // are still offering it. + if mutualCipherSuite(hello.cipherSuites, session.cipherSuite) == nil { + return cacheKey, nil, nil, nil + } + + hello.sessionTicket = session.sessionTicket + return + } + + // Check that the session ticket is not expired. + if c.config.time().After(session.useBy) { + c.config.ClientSessionCache.Put(cacheKey, nil) + return cacheKey, nil, nil, nil + } + + // In TLS 1.3 the KDF hash must match the resumed session. Ensure we + // offer at least one cipher suite with that hash. + cipherSuite := cipherSuiteTLS13ByID(session.cipherSuite) + if cipherSuite == nil { + return cacheKey, nil, nil, nil + } + cipherSuiteOk := false + for _, offeredID := range hello.cipherSuites { + offeredSuite := cipherSuiteTLS13ByID(offeredID) + if offeredSuite != nil && offeredSuite.hash == cipherSuite.hash { + cipherSuiteOk = true + break + } + } + if !cipherSuiteOk { + return cacheKey, nil, nil, nil + } + + // Set the pre_shared_key extension. See RFC 8446, Section 4.2.11.1. + ticketAge := uint32(c.config.time().Sub(session.receivedAt) / time.Millisecond) + identity := pskIdentity{ + label: session.sessionTicket, + obfuscatedTicketAge: ticketAge + session.ageAdd, + } + hello.pskIdentities = []pskIdentity{identity} + hello.pskBinders = [][]byte{make([]byte, cipherSuite.hash.Size())} + + // Compute the PSK binders. See RFC 8446, Section 4.2.11.2. + psk := cipherSuite.expandLabel(session.masterSecret, "resumption", + session.nonce, cipherSuite.hash.Size()) + earlySecret = cipherSuite.extract(psk, nil) + binderKey = cipherSuite.deriveSecret(earlySecret, resumptionBinderLabel, nil) + transcript := cipherSuite.hash.New() + transcript.Write(hello.marshalWithoutBinders()) + pskBinders := [][]byte{cipherSuite.finishedHash(binderKey, transcript)} + hello.updateBinders(pskBinders) + return } @@ -278,8 +357,8 @@ func (c *Conn) pickTLSVersion(serverHello *serverHelloMsg) error { return nil } -// Does the handshake, either a full one or resumes old session. -// Requires hs.c, hs.hello, and, optionally, hs.session to be set. +// Does the handshake, either a full one or resumes old session. Requires hs.c, +// hs.hello, hs.serverHello, and, optionally, hs.session to be set. func (hs *clientHandshakeState) handshake() error { c := hs.c @@ -443,7 +522,8 @@ func (hs *clientHandshakeState) doFullHandshake() error { certRequested = true hs.finishedHash.Write(certReq.marshal()) - if chainToSend, err = hs.getCertificate(certReq); err != nil { + cri := certificateRequestInfoFromMsg(certReq) + if chainToSend, err = c.getClientCertificate(cri); err != nil { c.sendAlert(alertInternalError) return err } @@ -527,7 +607,7 @@ func (hs *clientHandshakeState) doFullHandshake() error { } hs.masterSecret = masterFromPreMasterSecret(c.vers, hs.suite, preMasterSecret, hs.hello.random, hs.serverHello.random) - if err := c.config.writeKeyLog(hs.hello.random, hs.masterSecret); err != nil { + if err := c.config.writeKeyLog(keyLogLabelTLS12, hs.hello.random, hs.masterSecret); err != nil { c.sendAlert(alertInternalError) return errors.New("tls: failed to write to key log: " + err.Error()) } @@ -646,9 +726,8 @@ func (hs *clientHandshakeState) processServerHello() (bool, error) { func (hs *clientHandshakeState) readFinished(out []byte) error { c := hs.c - c.readRecord(recordTypeChangeCipherSpec) - if c.in.err != nil { - return c.in.err + if err := c.readChangeCipherSpec(); err != nil { + return err } msg, err := c.readHandshake() @@ -696,6 +775,7 @@ func (hs *clientHandshakeState) readSessionTicket() error { masterSecret: hs.masterSecret, serverCertificates: c.peerCertificates, verifiedChains: c.verifiedChains, + receivedAt: c.config.time(), } return nil @@ -789,20 +869,15 @@ func (c *Conn) verifyServerCertificate(certificates [][]byte) error { // tls11SignatureSchemes contains the signature schemes that we synthesise for // a TLS <= 1.1 connection, based on the supported certificate types. -var tls11SignatureSchemes = []SignatureScheme{ECDSAWithP256AndSHA256, ECDSAWithP384AndSHA384, ECDSAWithP521AndSHA512, PKCS1WithSHA256, PKCS1WithSHA384, PKCS1WithSHA512, PKCS1WithSHA1} - -const ( - // tls11SignatureSchemesNumECDSA is the number of initial elements of - // tls11SignatureSchemes that use ECDSA. - tls11SignatureSchemesNumECDSA = 3 - // tls11SignatureSchemesNumRSA is the number of trailing elements of - // tls11SignatureSchemes that use RSA. - tls11SignatureSchemesNumRSA = 4 +var ( + tls11SignatureSchemes = []SignatureScheme{ECDSAWithP256AndSHA256, ECDSAWithP384AndSHA384, ECDSAWithP521AndSHA512, PKCS1WithSHA256, PKCS1WithSHA384, PKCS1WithSHA512, PKCS1WithSHA1} + tls11SignatureSchemesECDSA = tls11SignatureSchemes[:3] + tls11SignatureSchemesRSA = tls11SignatureSchemes[3:] ) -func (hs *clientHandshakeState) getCertificate(certReq *certificateRequestMsg) (*Certificate, error) { - c := hs.c - +// certificateRequestInfoFromMsg generates a CertificateRequestInfo from a TLS +// <= 1.2 CertificateRequest, making an effort to fill in missing information. +func certificateRequestInfoFromMsg(certReq *certificateRequestMsg) *CertificateRequestInfo { var rsaAvail, ecdsaAvail bool for _, certType := range certReq.certificateTypes { switch certType { @@ -813,77 +888,84 @@ func (hs *clientHandshakeState) getCertificate(certReq *certificateRequestMsg) ( } } - if c.config.GetClientCertificate != nil { - var signatureSchemes []SignatureScheme - - if !certReq.hasSignatureAlgorithm { - // Prior to TLS 1.2, the signature schemes were not - // included in the certificate request message. In this - // case we use a plausible list based on the acceptable - // certificate types. - signatureSchemes = tls11SignatureSchemes - if !ecdsaAvail { - signatureSchemes = signatureSchemes[tls11SignatureSchemesNumECDSA:] - } - if !rsaAvail { - signatureSchemes = signatureSchemes[:len(signatureSchemes)-tls11SignatureSchemesNumRSA] - } - } else { - signatureSchemes = certReq.supportedSignatureAlgorithms - } - - return c.config.GetClientCertificate(&CertificateRequestInfo{ - AcceptableCAs: certReq.certificateAuthorities, - SignatureSchemes: signatureSchemes, - }) + cri := &CertificateRequestInfo{ + AcceptableCAs: certReq.certificateAuthorities, } - // RFC 4346 on the certificateAuthorities field: A list of the - // distinguished names of acceptable certificate authorities. - // These distinguished names may specify a desired - // distinguished name for a root CA or for a subordinate CA; - // thus, this message can be used to describe both known roots - // and a desired authorization space. If the - // certificate_authorities list is empty then the client MAY - // send any certificate of the appropriate - // ClientCertificateType, unless there is some external - // arrangement to the contrary. + if !certReq.hasSignatureAlgorithm { + // Prior to TLS 1.2, the signature schemes were not + // included in the certificate request message. In this + // case we use a plausible list based on the acceptable + // certificate types. + switch { + case rsaAvail && ecdsaAvail: + cri.SignatureSchemes = tls11SignatureSchemes + case rsaAvail: + cri.SignatureSchemes = tls11SignatureSchemesRSA + case ecdsaAvail: + cri.SignatureSchemes = tls11SignatureSchemesECDSA + } + return cri + } + + // In TLS 1.2, the signature schemes apply to both the certificate chain and + // the leaf key, while the certificate types only apply to the leaf key. + // See RFC 5246, Section 7.4.4 (where it calls this "somewhat complicated"). + // Filter the signature schemes based on the certificate type. + cri.SignatureSchemes = make([]SignatureScheme, 0, len(certReq.supportedSignatureAlgorithms)) + for _, sigScheme := range certReq.supportedSignatureAlgorithms { + switch signatureFromSignatureScheme(sigScheme) { + case signatureECDSA: + if ecdsaAvail { + cri.SignatureSchemes = append(cri.SignatureSchemes, sigScheme) + } + case signatureRSAPSS, signaturePKCS1v15: + if rsaAvail { + cri.SignatureSchemes = append(cri.SignatureSchemes, sigScheme) + } + } + } + + return cri +} + +func (c *Conn) getClientCertificate(cri *CertificateRequestInfo) (*Certificate, error) { + if c.config.GetClientCertificate != nil { + return c.config.GetClientCertificate(cri) + } // We need to search our list of client certs for one // where SignatureAlgorithm is acceptable to the server and the - // Issuer is in certReq.certificateAuthorities -findCert: + // Issuer is in AcceptableCAs. for i, chain := range c.config.Certificates { - if !rsaAvail && !ecdsaAvail { + sigOK := false + for _, alg := range signatureSchemesForCertificate(&chain) { + if isSupportedSignatureAlgorithm(alg, cri.SignatureSchemes) { + sigOK = true + break + } + } + if !sigOK { continue } + if len(cri.AcceptableCAs) == 0 { + return &chain, nil + } + for j, cert := range chain.Certificate { x509Cert := chain.Leaf - // parse the certificate if this isn't the leaf - // node, or if chain.Leaf was nil + // Parse the certificate if this isn't the leaf node, or if + // chain.Leaf was nil. if j != 0 || x509Cert == nil { var err error if x509Cert, err = x509.ParseCertificate(cert); err != nil { c.sendAlert(alertInternalError) - return nil, errors.New("tls: failed to parse client certificate #" + strconv.Itoa(i) + ": " + err.Error()) + return nil, errors.New("tls: failed to parse configured certificate chain #" + strconv.Itoa(i) + ": " + err.Error()) } } - switch { - case rsaAvail && x509Cert.PublicKeyAlgorithm == x509.RSA: - case ecdsaAvail && x509Cert.PublicKeyAlgorithm == x509.ECDSA: - default: - continue findCert - } - - if len(certReq.certificateAuthorities) == 0 { - // they gave us an empty list, so just take the - // first cert from c.config.Certificates - return &chain, nil - } - - for _, ca := range certReq.certificateAuthorities { + for _, ca := range cri.AcceptableCAs { if bytes.Equal(x509Cert.RawIssuer, ca) { return &chain, nil } diff --git a/handshake_client_test.go b/handshake_client_test.go index dac7a23..17e558c 100644 --- a/handshake_client_test.go +++ b/handshake_client_test.go @@ -53,6 +53,10 @@ const ( // opensslSendBanner causes OpenSSL to send the contents of // opensslSentinel on the connection. opensslSendSentinel + + // opensslKeyUpdate causes OpenSSL to send send a key update message to the + // client and request one back. + opensslKeyUpdate ) const opensslSentinel = "SENTINEL\n" @@ -64,6 +68,8 @@ func (i opensslInput) Read(buf []byte) (n int, err error) { switch event { case opensslRenegotiate: return copy(buf, []byte("R\n")), nil + case opensslKeyUpdate: + return copy(buf, []byte("K\n")), nil case opensslSendSentinel: return copy(buf, []byte(opensslSentinel)), nil default: @@ -74,23 +80,28 @@ func (i opensslInput) Read(buf []byte) (n int, err error) { return 0, io.EOF } -// opensslOutputSink is an io.Writer that receives the stdout and stderr from -// an `openssl` process and sends a value to handshakeComplete when it sees a -// log message from a completed server handshake. +// opensslOutputSink is an io.Writer that receives the stdout and stderr from an +// `openssl` process and sends a value to handshakeComplete or readKeyUpdate +// when certain messages are seen. type opensslOutputSink struct { handshakeComplete chan struct{} + readKeyUpdate chan struct{} all []byte line []byte } func newOpensslOutputSink() *opensslOutputSink { - return &opensslOutputSink{make(chan struct{}), nil, nil} + return &opensslOutputSink{make(chan struct{}), make(chan struct{}), nil, nil} } // opensslEndOfHandshake is a message that the “openssl s_server” tool will // print when a handshake completes if run with “-state”. const opensslEndOfHandshake = "SSL_accept:SSLv3/TLS write finished" +// opensslReadKeyUpdate is a message that the “openssl s_server” tool will +// print when a KeyUpdate message is received if run with “-state”. +const opensslReadKeyUpdate = "SSL_accept:TLSv1.3 read client key update" + func (o *opensslOutputSink) Write(data []byte) (n int, err error) { o.line = append(o.line, data...) o.all = append(o.all, data...) @@ -104,6 +115,9 @@ func (o *opensslOutputSink) Write(data []byte) (n int, err error) { if bytes.Equal([]byte(opensslEndOfHandshake), o.line[:i]) { o.handshakeComplete <- struct{}{} } + if bytes.Equal([]byte(opensslReadKeyUpdate), o.line[:i]) { + o.readKeyUpdate <- struct{}{} + } o.line = o.line[i+1:] } @@ -150,6 +164,8 @@ type clientTest struct { // arising from renegotiation. It can map expected errors to nil to // ignore them. checkRenegotiationError func(renegotiationNum int, err error) error + // sendKeyUpdate will cause the server to send a KeyUpdate message. + sendKeyUpdate bool } var defaultServerCommand = []string{"openssl", "s_server"} @@ -221,7 +237,7 @@ func (test *clientTest) connFromCommand() (conn *recordingConn, child *exec.Cmd, command = append(command, "-serverinfo", serverInfoPath) } - if test.numRenegotiations > 0 { + if test.numRenegotiations > 0 || test.sendKeyUpdate { found := false for _, flag := range command[1:] { if flag == "-state" { @@ -231,7 +247,7 @@ func (test *clientTest) connFromCommand() (conn *recordingConn, child *exec.Cmd, } if !found { - panic("-state flag missing to OpenSSL. You need this if testing renegotiation") + panic("-state flag missing to OpenSSL, you need this if testing renegotiation or KeyUpdate") } } @@ -321,9 +337,14 @@ func (test *clientTest) run(t *testing.T, write bool) { doneChan := make(chan bool) go func() { - defer func() { doneChan <- true }() - defer clientConn.Close() - defer client.Close() + defer func() { + // Give time to the send buffer to drain, to avoid the kernel + // sending a RST and cutting off the flow. See Issue 18701. + time.Sleep(10 * time.Millisecond) + client.Close() + clientConn.Close() + doneChan <- true + }() if _, err := client.Write([]byte("hello\n")); err != nil { t.Errorf("Client.Write failed: %s", err) @@ -352,7 +373,7 @@ func (test *clientTest) run(t *testing.T, write bool) { signalChan := make(chan struct{}) go func() { - defer func() { signalChan <- struct{}{} }() + defer close(signalChan) buf := make([]byte, 256) n, err := client.Read(buf) @@ -387,11 +408,62 @@ func (test *clientTest) run(t *testing.T, write bool) { <-signalChan } + if test.sendKeyUpdate { + if write { + <-stdout.handshakeComplete + stdin <- opensslKeyUpdate + } + + doneRead := make(chan struct{}) + + go func() { + defer close(doneRead) + + buf := make([]byte, 256) + n, err := client.Read(buf) + + if err != nil { + t.Errorf("Client.Read failed after KeyUpdate: %s", err) + return + } + + buf = buf[:n] + if !bytes.Equal([]byte(opensslSentinel), buf) { + t.Errorf("Client.Read returned %q, but wanted %q", string(buf), opensslSentinel) + } + }() + + if write { + // There's no real reason to wait for the client KeyUpdate to + // send data with the new server keys, except that s_server + // drops writes if they are sent at the wrong time. + <-stdout.readKeyUpdate + stdin <- opensslSendSentinel + } + <-doneRead + + if _, err := client.Write([]byte("hello again\n")); err != nil { + t.Errorf("Client.Write failed: %s", err) + return + } + } + if test.validate != nil { if err := test.validate(client.ConnectionState()); err != nil { t.Errorf("validate callback returned error: %s", err) } } + + // If the server sent us an alert after our last flight, give it a + // chance to arrive. + if write { + client.SetReadDeadline(time.Now().Add(500 * time.Millisecond)) + if _, err := client.Read(make([]byte, 1)); err != nil { + if netErr, ok := err.(net.Error); !ok || !netErr.Timeout() { + t.Errorf("final Read returned an error: %s", err) + } + } + } }() if !write { @@ -415,6 +487,9 @@ func (test *clientTest) run(t *testing.T, write bool) { t.Fatalf("%s #%d: mismatch on read: got:%x want:%x", test.name, i, bb, b) } } + // Give time to the send buffer to drain, to avoid the kernel + // sending a RST and cutting off the flow. See Issue 18701. + time.Sleep(10 * time.Millisecond) serverConn.Close() } @@ -454,7 +529,7 @@ func runClientTestForVersion(t *testing.T, template *clientTest, version, option test.name = version + "-" + test.name if len(test.command) == 0 { - test.command = defaultClientCommand + test.command = defaultServerCommand } test.command = append([]string(nil), test.command...) test.command = append(test.command, option) @@ -671,10 +746,9 @@ func TestHandshakeClientCHACHA20SHA256(t *testing.T) { func TestHandshakeClientECDSATLS13(t *testing.T) { test := &clientTest{ - name: "ECDSA", - command: []string{"openssl", "s_server"}, - cert: testECDSACertificate, - key: testECDSAPrivateKey, + name: "ECDSA", + cert: testECDSACertificate, + key: testECDSAPrivateKey, } runClientTestTLS13(t, test) } @@ -703,6 +777,7 @@ func TestHandshakeClientCertRSA(t *testing.T) { runClientTestTLS10(t, test) runClientTestTLS12(t, test) + runClientTestTLS13(t, test) test = &clientTest{ name: "ClientCert-RSA-AES256-GCM-SHA384", @@ -728,6 +803,7 @@ func TestHandshakeClientCertECDSA(t *testing.T) { runClientTestTLS10(t, test) runClientTestTLS12(t, test) + runClientTestTLS13(t, test) test = &clientTest{ name: "ClientCert-ECDSA-ECDSA", @@ -769,6 +845,7 @@ func TestHandshakeClientCertRSAPSS(t *testing.T) { } runClientTestTLS12(t, test) + runClientTestTLS13(t, test) } func TestHandshakeClientCertRSAPKCS1v15(t *testing.T) { @@ -786,8 +863,23 @@ func TestHandshakeClientCertRSAPKCS1v15(t *testing.T) { runClientTestTLS12(t, test) } -func TestClientResumption(t *testing.T) { +func TestClientKeyUpdate(t *testing.T) { + test := &clientTest{ + name: "KeyUpdate", + command: []string{"openssl", "s_server", "-state"}, + sendKeyUpdate: true, + } + runClientTestTLS13(t, test) +} + +func TestResumption(t *testing.T) { + t.Run("TLSv12", func(t *testing.T) { testResumption(t, VersionTLS12) }) + t.Run("TLSv13", func(t *testing.T) { testResumption(t, VersionTLS13) }) +} + +func testResumption(t *testing.T, version uint16) { serverConfig := &Config{ + MaxVersion: version, CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA}, Certificates: testConfig.Certificates, } @@ -801,6 +893,7 @@ func TestClientResumption(t *testing.T) { rootCAs.AddCert(issuer) clientConfig := &Config{ + MaxVersion: version, CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA}, ClientSessionCache: NewLRUClientSessionCache(32), RootCAs: rootCAs, @@ -823,6 +916,13 @@ func TestClientResumption(t *testing.T) { getTicket := func() []byte { return clientConfig.ClientSessionCache.(*lruSessionCache).q.Front().Value.(*lruSessionCacheEntry).state.sessionTicket } + deleteTicket := func() { + ticketKey := clientConfig.ClientSessionCache.(*lruSessionCache).q.Front().Value.(*lruSessionCacheEntry).sessionKey + clientConfig.ClientSessionCache.Put(ticketKey, nil) + } + corruptTicket := func() { + clientConfig.ClientSessionCache.(*lruSessionCache).q.Front().Value.(*lruSessionCacheEntry).state.masterSecret[0] ^= 0xff + } randomKey := func() [32]byte { var k [32]byte if _, err := io.ReadFull(serverConfig.rand(), k[:]); err != nil { @@ -834,9 +934,12 @@ func TestClientResumption(t *testing.T) { testResumeState("Handshake", false) ticket := getTicket() testResumeState("Resume", true) - if !bytes.Equal(ticket, getTicket()) { + if !bytes.Equal(ticket, getTicket()) && version != VersionTLS13 { t.Fatal("first ticket doesn't match ticket after resumption") } + if bytes.Equal(ticket, getTicket()) && version == VersionTLS13 { + t.Fatal("ticket didn't change after resumption") + } key1 := randomKey() serverConfig.SetSessionTicketKeys([][32]byte{key1}) @@ -856,6 +959,7 @@ func TestClientResumption(t *testing.T) { // Reset serverConfig to ensure that calling SetSessionTicketKeys // before the serverConfig is used works. serverConfig = &Config{ + MaxVersion: version, CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA}, Certificates: testConfig.Certificates, } @@ -863,9 +967,35 @@ func TestClientResumption(t *testing.T) { testResumeState("FreshConfig", true) - clientConfig.CipherSuites = []uint16{TLS_ECDHE_RSA_WITH_RC4_128_SHA} - testResumeState("DifferentCipherSuite", false) - testResumeState("DifferentCipherSuiteRecovers", true) + // In TLS 1.3, cross-cipher suite resumption is allowed as long as the KDF + // hash matches. Also, Config.CipherSuites does not apply to TLS 1.3. + if version != VersionTLS13 { + clientConfig.CipherSuites = []uint16{TLS_ECDHE_RSA_WITH_RC4_128_SHA} + testResumeState("DifferentCipherSuite", false) + testResumeState("DifferentCipherSuiteRecovers", true) + } + + deleteTicket() + testResumeState("WithoutSessionTicket", false) + + // Session resumption should work when using client certificates + deleteTicket() + serverConfig.ClientCAs = rootCAs + serverConfig.ClientAuth = RequireAndVerifyClientCert + clientConfig.Certificates = serverConfig.Certificates + testResumeState("InitialHandshake", false) + testResumeState("WithClientCertificates", true) + serverConfig.ClientAuth = NoClientCert + + // Tickets should be removed from the session cache on TLS handshake + // failure, and the client should recover from a corrupted PSK + testResumeState("FetchTicketToCorrupt", false) + corruptTicket() + _, _, err = testHandshake(t, clientConfig, serverConfig) + if err == nil { + t.Fatalf("handshake did not fail with a corrupted client secret") + } + testResumeState("AfterHandshakeFailure", false) clientConfig.ClientSessionCache = nil testResumeState("WithoutSessionCache", false) @@ -910,10 +1040,21 @@ func TestLRUClientSessionCache(t *testing.T) { t.Fatalf("session cache failed update for key 0") } - // Adding a nil entry is valid. + // Calling Put with a nil entry deletes the key. cache.Put(keys[0], nil) - if s, ok := cache.Get(keys[0]); !ok || s != nil { - t.Fatalf("failed to add nil entry to cache") + if _, ok := cache.Get(keys[0]); ok { + t.Fatalf("session cache failed to delete key 0") + } + + // Delete entry 2. LRU should keep 4 and 5 + cache.Put(keys[2], nil) + if _, ok := cache.Get(keys[2]); ok { + t.Fatalf("session cache failed to delete key 4") + } + for i := 4; i < 6; i++ { + if s, ok := cache.Get(keys[i]); !ok || s != &cs[i] { + t.Fatalf("session cache should not have deleted key: %s", keys[i]) + } } } @@ -968,6 +1109,49 @@ func TestKeyLog(t *testing.T) { checkKeylogLine("server", serverBuf.String()) } +func TestKeyLogTLS13(t *testing.T) { + var serverBuf, clientBuf bytes.Buffer + + clientConfig := testConfig.Clone() + clientConfig.KeyLogWriter = &clientBuf + clientConfig.MaxVersion = VersionTLS13 + + serverConfig := testConfig.Clone() + serverConfig.KeyLogWriter = &serverBuf + serverConfig.MaxVersion = VersionTLS13 + + c, s := localPipe(t) + done := make(chan bool) + + go func() { + defer close(done) + + if err := Server(s, serverConfig).Handshake(); err != nil { + t.Errorf("server: %s", err) + return + } + s.Close() + }() + + if err := Client(c, clientConfig).Handshake(); err != nil { + t.Fatalf("client: %s", err) + } + + c.Close() + <-done + + checkKeylogLines := func(side, loggedLines string) { + loggedLines = strings.TrimSpace(loggedLines) + lines := strings.Split(loggedLines, "\n") + if len(lines) != 4 { + t.Errorf("Expected the %s to log 4 lines, got %d", side, len(lines)) + } + } + + checkKeylogLines("client", clientBuf.String()) + checkKeylogLines("server", serverBuf.String()) +} + func TestHandshakeClientALPNMatch(t *testing.T) { config := testConfig.Clone() config.NextProtos = []string{"proto2", "proto1"} @@ -1001,11 +1185,10 @@ func TestHandshakClientSCTs(t *testing.T) { t.Fatal(err) } + // Note that this needs OpenSSL 1.0.2 because that is the first + // version that supports the -serverinfo flag. test := &clientTest{ - name: "SCT", - // Note that this needs OpenSSL 1.0.2 because that is the first - // version that supports the -serverinfo flag. - command: []string{"openssl", "s_server"}, + name: "SCT", config: config, extensions: [][]byte{scts}, validate: func(state ConnectionState) error { @@ -1049,11 +1232,7 @@ func TestRenegotiationRejected(t *testing.T) { return nil }, } - runClientTestTLS12(t, test) - - config.Renegotiation = RenegotiateFreelyAsClient - runClientTestTLS13(t, test) } func TestRenegotiateOnce(t *testing.T) { @@ -1114,9 +1293,8 @@ func TestRenegotiateTwiceRejected(t *testing.T) { func TestHandshakeClientExportKeyingMaterial(t *testing.T) { test := &clientTest{ - name: "ExportKeyingMaterial", - command: []string{"openssl", "s_server"}, - config: testConfig.Clone(), + name: "ExportKeyingMaterial", + config: testConfig.Clone(), validate: func(state ConnectionState) error { if km, err := state.ExportKeyingMaterial("test", nil, 42); err != nil { return fmt.Errorf("ExportKeyingMaterial failed: %v", err) @@ -1240,6 +1418,11 @@ func TestServerSelectingUnconfiguredCipherSuite(t *testing.T) { } func TestVerifyPeerCertificate(t *testing.T) { + t.Run("TLSv12", func(t *testing.T) { testVerifyPeerCertificate(t, VersionTLS12) }) + t.Run("TLSv13", func(t *testing.T) { testVerifyPeerCertificate(t, VersionTLS13) }) +} + +func testVerifyPeerCertificate(t *testing.T, version uint16) { issuer, err := x509.ParseCertificate(testRSACertificateIssuer) if err != nil { panic(err) @@ -1373,6 +1556,7 @@ func TestVerifyPeerCertificate(t *testing.T) { config.ClientAuth = RequireAndVerifyClientCert config.ClientCAs = rootCAs config.Time = now + config.MaxVersion = version test.configureServer(config, &serverCalled) err = Server(s, config).Handshake() @@ -1384,6 +1568,7 @@ func TestVerifyPeerCertificate(t *testing.T) { config.ServerName = "example.golang" config.RootCAs = rootCAs config.Time = now + config.MaxVersion = version test.configureClient(config, &clientCalled) clientErr := Client(c, config).Handshake() c.Close() @@ -1582,13 +1767,6 @@ func TestHandshakeRace(t *testing.T) { } } -func TestTLS11SignatureSchemes(t *testing.T) { - expected := tls11SignatureSchemesNumECDSA + tls11SignatureSchemesNumRSA - if expected != len(tls11SignatureSchemes) { - t.Errorf("expected to find %d TLS 1.1 signature schemes, but found %d", expected, len(tls11SignatureSchemes)) - } -} - var getClientCertificateTests = []struct { setup func(*Config, *Config) expectedClientError string @@ -1671,6 +1849,11 @@ var getClientCertificateTests = []struct { } func TestGetClientCertificate(t *testing.T) { + t.Run("TLSv12", func(t *testing.T) { testGetClientCertificate(t, VersionTLS12) }) + t.Run("TLSv13", func(t *testing.T) { testGetClientCertificate(t, VersionTLS13) }) +} + +func testGetClientCertificate(t *testing.T, version uint16) { issuer, err := x509.ParseCertificate(testRSACertificateIssuer) if err != nil { panic(err) @@ -1683,8 +1866,10 @@ func TestGetClientCertificate(t *testing.T) { serverConfig.RootCAs.AddCert(issuer) serverConfig.ClientCAs = serverConfig.RootCAs serverConfig.Time = func() time.Time { return time.Unix(1476984729, 0) } + serverConfig.MaxVersion = version clientConfig := testConfig.Clone() + clientConfig.MaxVersion = version test.setup(clientConfig, serverConfig) diff --git a/handshake_client_tls13.go b/handshake_client_tls13.go index 5f0cb6d..0fb70ba 100644 --- a/handshake_client_tls13.go +++ b/handshake_client_tls13.go @@ -8,24 +8,35 @@ import ( "bytes" "crypto" "crypto/hmac" + "crypto/rsa" "errors" + "fmt" "hash" "sync/atomic" + "time" ) type clientHandshakeStateTLS13 struct { - c *Conn - serverHello *serverHelloMsg - hello *clientHelloMsg + c *Conn + serverHello *serverHelloMsg + hello *clientHelloMsg + ecdheParams ecdheParameters + + session *ClientSessionState + earlySecret []byte + binderKey []byte + certReq *certificateRequestMsgTLS13 - ecdheParams ecdheParameters + usingPSK bool + sentDummyCCS bool suite *cipherSuiteTLS13 transcript hash.Hash masterSecret []byte trafficSecret []byte // client_application_traffic_secret_0 - session *ClientSessionState } +// handshake requires hs.c, hs.hello, hs.serverHello, hs.ecdheParams, and, +// optionally, hs.session, hs.earlySecret and hs.binderKey to be set. func (hs *clientHandshakeStateTLS13) handshake() error { c := hs.c @@ -49,40 +60,35 @@ func (hs *clientHandshakeStateTLS13) handshake() error { hs.transcript.Write(hs.hello.marshal()) if bytes.Equal(hs.serverHello.random, helloRetryRequestRandom) { - // The first ClientHello gets double-hashed into the transcript upon a - // HelloRetryRequest. See RFC 8446, Section 4.4.1. - chHash := hs.transcript.Sum(nil) - hs.transcript.Reset() - hs.transcript.Write([]byte{typeMessageHash, 0, 0, uint8(len(chHash))}) - hs.transcript.Write(chHash) - hs.transcript.Write(hs.serverHello.marshal()) - + if err := hs.sendDummyChangeCipherSpec(); err != nil { + return err + } if err := hs.processHelloRetryRequest(); err != nil { return err } - - hs.transcript.Write(hs.hello.marshal()) } hs.transcript.Write(hs.serverHello.marshal()) + c.buffering = true if err := hs.processServerHello(); err != nil { return err } + if err := hs.sendDummyChangeCipherSpec(); err != nil { + return err + } if err := hs.establishHandshakeKeys(); err != nil { return err } if err := hs.readServerParameters(); err != nil { return err } - if err := hs.doFullHandshake(); err != nil { + if err := hs.readServerCertificate(); err != nil { return err } if err := hs.readServerFinished(); err != nil { return err } - - c.buffering = true if err := hs.sendClientCertificate(); err != nil { return err } @@ -155,11 +161,31 @@ func (hs *clientHandshakeStateTLS13) checkServerHelloOrHRR() error { return nil } +// sendDummyChangeCipherSpec sends a ChangeCipherSpec record for compatibility +// with middleboxes that didn't implement TLS correctly. See RFC 8446, Appendix D.4. +func (hs *clientHandshakeStateTLS13) sendDummyChangeCipherSpec() error { + if hs.sentDummyCCS { + return nil + } + hs.sentDummyCCS = true + + _, err := hs.c.writeRecord(recordTypeChangeCipherSpec, []byte{1}) + return err +} + // processHelloRetryRequest handles the HRR in hs.serverHello, modifies and // resends hs.hello, and reads the new ServerHello into hs.serverHello. func (hs *clientHandshakeStateTLS13) processHelloRetryRequest() error { c := hs.c + // The first ClientHello gets double-hashed into the transcript upon a + // HelloRetryRequest. See RFC 8446, Section 4.4.1. + chHash := hs.transcript.Sum(nil) + hs.transcript.Reset() + hs.transcript.Write([]byte{typeMessageHash, 0, 0, uint8(len(chHash))}) + hs.transcript.Write(chHash) + hs.transcript.Write(hs.serverHello.marshal()) + if hs.serverHello.serverShare.group != 0 { c.sendAlert(alertDecodeError) return errors.New("tls: received malformed key_share extension") @@ -200,6 +226,31 @@ func (hs *clientHandshakeStateTLS13) processHelloRetryRequest() error { hs.hello.cookie = hs.serverHello.cookie hs.hello.raw = nil + if len(hs.hello.pskIdentities) > 0 { + pskSuite := cipherSuiteTLS13ByID(hs.session.cipherSuite) + if pskSuite == nil { + return c.sendAlert(alertInternalError) + } + if pskSuite.hash == hs.suite.hash { + // Update binders and obfuscated_ticket_age. + ticketAge := uint32(c.config.time().Sub(hs.session.receivedAt) / time.Millisecond) + hs.hello.pskIdentities[0].obfuscatedTicketAge = ticketAge + hs.session.ageAdd + + transcript := hs.suite.hash.New() + transcript.Write([]byte{typeMessageHash, 0, 0, uint8(len(chHash))}) + transcript.Write(chHash) + transcript.Write(hs.serverHello.marshal()) + transcript.Write(hs.hello.marshalWithoutBinders()) + pskBinders := [][]byte{hs.suite.finishedHash(hs.binderKey, transcript)} + hs.hello.updateBinders(pskBinders) + } else { + // Server selected a cipher suite incompatible with the PSK. + hs.hello.pskIdentities = nil + hs.hello.pskBinders = nil + } + } + + hs.transcript.Write(hs.hello.marshal()) if _, err := c.writeRecord(recordTypeHandshake, hs.hello.marshal()); err != nil { return err } @@ -241,11 +292,40 @@ func (hs *clientHandshakeStateTLS13) processServerHello() error { return errors.New("tls: malformed key_share extension") } + if hs.serverHello.serverShare.group == 0 { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: server did not send a key share") + } if hs.serverHello.serverShare.group != hs.ecdheParams.CurveID() { c.sendAlert(alertIllegalParameter) return errors.New("tls: server selected unsupported group") } + if !hs.serverHello.selectedIdentityPresent { + return nil + } + + if int(hs.serverHello.selectedIdentity) >= len(hs.hello.pskIdentities) { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: server selected an invalid PSK") + } + + if len(hs.hello.pskIdentities) != 1 || hs.session == nil { + return c.sendAlert(alertInternalError) + } + pskSuite := cipherSuiteTLS13ByID(hs.session.cipherSuite) + if pskSuite == nil { + return c.sendAlert(alertInternalError) + } + if pskSuite.hash != hs.suite.hash { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: server selected an invalid PSK and cipher suite pair") + } + + hs.usingPSK = true + c.didResume = true + c.peerCertificates = hs.session.serverCertificates + c.verifiedChains = hs.session.verifiedChains return nil } @@ -258,7 +338,10 @@ func (hs *clientHandshakeStateTLS13) establishHandshakeKeys() error { return errors.New("tls: invalid server key share") } - earlySecret := hs.suite.extract(nil, nil) + earlySecret := hs.earlySecret + if !hs.usingPSK { + earlySecret = hs.suite.extract(nil, nil) + } handshakeSecret := hs.suite.extract(sharedKey, hs.suite.deriveSecret(earlySecret, "derived", nil)) @@ -269,6 +352,17 @@ func (hs *clientHandshakeStateTLS13) establishHandshakeKeys() error { serverHandshakeTrafficLabel, hs.transcript) c.in.setTrafficSecret(hs.suite, serverSecret) + err := c.config.writeKeyLog(keyLogLabelClientHandshake, hs.hello.random, clientSecret) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + err = c.config.writeKeyLog(keyLogLabelServerHandshake, hs.hello.random, serverSecret) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + hs.masterSecret = hs.suite.extract(nil, hs.suite.deriveSecret(handshakeSecret, "derived", nil)) @@ -299,9 +393,15 @@ func (hs *clientHandshakeStateTLS13) readServerParameters() error { return nil } -func (hs *clientHandshakeStateTLS13) doFullHandshake() error { +func (hs *clientHandshakeStateTLS13) readServerCertificate() error { c := hs.c + // Either a PSK or a certificate is always used, but not both. + // See RFC 8446, Section 4.1.1. + if hs.usingPSK { + return nil + } + msg, err := c.readHandshake() if err != nil { return err @@ -349,7 +449,7 @@ func (hs *clientHandshakeStateTLS13) doFullHandshake() error { } // See RFC 8446, Section 4.4.3. - if !isSupportedSignatureAlgorithm(certVerify.signatureAlgorithm, hs.hello.supportedSignatureAlgorithms) { + if !isSupportedSignatureAlgorithm(certVerify.signatureAlgorithm, supportedSignatureAlgorithms()) { c.sendAlert(alertIllegalParameter) return errors.New("tls: invalid certificate signature algorithm") } @@ -390,13 +490,10 @@ func (hs *clientHandshakeStateTLS13) readServerFinished() error { return unexpectedMessageError(finished, msg) } - // See RFC 8446, sections 4.4.4 and 4.4. - finishedKey := hs.suite.expandLabel(c.in.trafficSecret, "finished", nil, hs.suite.hash.Size()) - expectedMAC := hmac.New(hs.suite.hash.New, finishedKey) - expectedMAC.Write(hs.transcript.Sum(nil)) - if !hmac.Equal(expectedMAC.Sum(nil), finished.verifyData) { + expectedMAC := hs.suite.finishedHash(c.in.trafficSecret, hs.transcript) + if !hmac.Equal(expectedMAC, finished.verifyData) { c.sendAlert(alertDecryptError) - return errors.New("tls: invalid finished hash") + return errors.New("tls: invalid server finished hash") } hs.transcript.Write(finished.marshal()) @@ -409,27 +506,105 @@ func (hs *clientHandshakeStateTLS13) readServerFinished() error { serverApplicationTrafficLabel, hs.transcript) c.in.setTrafficSecret(hs.suite, serverSecret) + err = c.config.writeKeyLog(keyLogLabelClientTraffic, hs.hello.random, hs.trafficSecret) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + err = c.config.writeKeyLog(keyLogLabelServerTraffic, hs.hello.random, serverSecret) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + c.ekm = hs.suite.exportKeyingMaterial(hs.masterSecret, hs.transcript) return nil } func (hs *clientHandshakeStateTLS13) sendClientCertificate() error { + c := hs.c + if hs.certReq == nil { return nil } - return errors.New("tls: TLS 1.3 client authentication unimplemented") // TODO(filippo) + cert, err := c.getClientCertificate(&CertificateRequestInfo{ + AcceptableCAs: hs.certReq.certificateAuthorities, + SignatureSchemes: hs.certReq.supportedSignatureAlgorithms, + }) + if err != nil { + return err + } + + certMsg := new(certificateMsgTLS13) + + certMsg.certificate = *cert + certMsg.scts = hs.certReq.scts && len(cert.SignedCertificateTimestamps) > 0 + certMsg.ocspStapling = hs.certReq.ocspStapling && len(cert.OCSPStaple) > 0 + + hs.transcript.Write(certMsg.marshal()) + if _, err := c.writeRecord(recordTypeHandshake, certMsg.marshal()); err != nil { + return err + } + + // If the client is sending an empty certificate message, skip the CertificateVerify. + if len(cert.Certificate) == 0 { + return nil + } + + certVerifyMsg := new(certificateVerifyMsg) + certVerifyMsg.hasSignatureAlgorithm = true + + supportedAlgs := signatureSchemesForCertificate(cert) + if supportedAlgs == nil { + c.sendAlert(alertInternalError) + return fmt.Errorf("tls: unsupported certificate key (%T)", cert.PrivateKey) + } + // Pick signature scheme in server preference order, as the client + // preference order is not configurable. + for _, preferredAlg := range hs.certReq.supportedSignatureAlgorithms { + if isSupportedSignatureAlgorithm(preferredAlg, supportedAlgs) { + certVerifyMsg.signatureAlgorithm = preferredAlg + break + } + } + + sigType := signatureFromSignatureScheme(certVerifyMsg.signatureAlgorithm) + sigHash, err := hashFromSignatureScheme(certVerifyMsg.signatureAlgorithm) + if sigType == 0 || err != nil { + // getClientCertificate returned a certificate incompatible with the + // CertificateRequestInfo supported signature algorithms. + c.sendAlert(alertInternalError) + return err + } + h := sigHash.New() + writeSignedMessage(h, clientSignatureContext, hs.transcript) + + signOpts := crypto.SignerOpts(sigHash) + if sigType == signatureRSAPSS { + signOpts = &rsa.PSSOptions{SaltLength: rsa.PSSSaltLengthEqualsHash, Hash: sigHash} + } + sig, err := cert.PrivateKey.(crypto.Signer).Sign(c.config.rand(), h.Sum(nil), signOpts) + if err != nil { + c.sendAlert(alertInternalError) + return errors.New("tls: failed to sign handshake: " + err.Error()) + } + certVerifyMsg.signature = sig + + hs.transcript.Write(certVerifyMsg.marshal()) + if _, err := c.writeRecord(recordTypeHandshake, certVerifyMsg.marshal()); err != nil { + return err + } + + return nil } func (hs *clientHandshakeStateTLS13) sendClientFinished() error { c := hs.c - finishedKey := hs.suite.expandLabel(c.out.trafficSecret, "finished", nil, hs.suite.hash.Size()) - verifyData := hmac.New(hs.suite.hash.New, finishedKey) - verifyData.Write(hs.transcript.Sum(nil)) finished := &finishedMsg{ - verifyData: verifyData.Sum(nil), + verifyData: hs.suite.finishedHash(c.out.trafficSecret, hs.transcript), } hs.transcript.Write(finished.marshal()) @@ -439,5 +614,58 @@ func (hs *clientHandshakeStateTLS13) sendClientFinished() error { c.out.setTrafficSecret(hs.suite, hs.trafficSecret) + if !c.config.SessionTicketsDisabled && c.config.ClientSessionCache != nil { + c.resumptionSecret = hs.suite.deriveSecret(hs.masterSecret, + resumptionLabel, hs.transcript) + } + + return nil +} + +func (c *Conn) handleNewSessionTicket(msg *newSessionTicketMsgTLS13) error { + if !c.isClient { + c.sendAlert(alertUnexpectedMessage) + return errors.New("tls: received new session ticket from a client") + } + + if c.config.SessionTicketsDisabled || c.config.ClientSessionCache == nil { + return nil + } + + // See RFC 8446, Section 4.6.1. + if msg.lifetime == 0 { + return nil + } + lifetime := time.Duration(msg.lifetime) * time.Second + if lifetime > maxSessionTicketLifetime { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: received a session ticket with invalid lifetime") + } + + cipherSuite := cipherSuiteTLS13ByID(c.cipherSuite) + if cipherSuite == nil || c.resumptionSecret == nil { + return c.sendAlert(alertInternalError) + } + + // Save the resumption_master_secret and nonce instead of deriving the PSK + // to do the least amount of work on NewSessionTicket messages before we + // know if the ticket will be used. Forward secrecy of resumed connections + // is guaranteed by the requirement for pskModeDHE. + session := &ClientSessionState{ + sessionTicket: msg.label, + vers: c.vers, + cipherSuite: c.cipherSuite, + masterSecret: c.resumptionSecret, + serverCertificates: c.peerCertificates, + verifiedChains: c.verifiedChains, + receivedAt: c.config.time(), + nonce: msg.nonce, + useBy: c.config.time().Add(lifetime), + ageAdd: msg.ageAdd, + } + + cacheKey := clientSessionCacheKey(c.conn.RemoteAddr(), c.config) + c.config.ClientSessionCache.Put(cacheKey, session) + return nil } diff --git a/handshake_messages.go b/handshake_messages.go index c622e08..f86cc4b 100644 --- a/handshake_messages.go +++ b/handshake_messages.go @@ -30,6 +30,23 @@ func addBytesWithLength(b *cryptobyte.Builder, v []byte, n int) { })) } +// addUint64 appends a big-endian, 64-bit value to the cryptobyte.Builder. +func addUint64(b *cryptobyte.Builder, v uint64) { + b.AddUint32(uint32(v >> 32)) + b.AddUint32(uint32(v)) +} + +// readUint64 decodes a big-endian, 64-bit value into out and advances over it. +// It reports whether the read was successful. +func readUint64(s *cryptobyte.String, out *uint64) bool { + var hi, lo uint32 + if !s.ReadUint32(&hi) || !s.ReadUint32(&lo) { + return false + } + *out = uint64(hi)<<32 | uint64(lo) + return true +} + // readUint8LengthPrefixed acts like s.ReadUint8LengthPrefixed, but targets a // []byte instead of a cryptobyte.String. func readUint8LengthPrefixed(s *cryptobyte.String, out *[]byte) bool { @@ -131,7 +148,7 @@ func (m *clientHelloMsg) marshal() []byte { }) } if len(m.supportedCurves) > 0 { - // RFC 4492, Section 5.1.1 and RFC 8446, Section 4.2.7 + // RFC 4492, sections 5.1.1 and RFC 8446, Section 4.2.7 b.AddUint16(extensionSupportedCurves) b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { @@ -288,6 +305,50 @@ func (m *clientHelloMsg) marshal() []byte { return m.raw } +// marshalWithoutBinders returns the ClientHello through the +// PreSharedKeyExtension.identities field, according to RFC 8446, Section +// 4.2.11.2. Note that m.pskBinders must be set to slices of the correct length. +func (m *clientHelloMsg) marshalWithoutBinders() []byte { + bindersLen := 2 // uint16 length prefix + for _, binder := range m.pskBinders { + bindersLen += 1 // uint8 length prefix + bindersLen += len(binder) + } + + fullMessage := m.marshal() + return fullMessage[:len(fullMessage)-bindersLen] +} + +// updateBinders updates the m.pskBinders field, if necessary updating the +// cached marshalled representation. The supplied binders must have the same +// length as the current m.pskBinders. +func (m *clientHelloMsg) updateBinders(pskBinders [][]byte) { + if len(pskBinders) != len(m.pskBinders) { + panic("tls: internal error: pskBinders length mismatch") + } + for i := range m.pskBinders { + if len(pskBinders[i]) != len(m.pskBinders[i]) { + panic("tls: internal error: pskBinders length mismatch") + } + } + m.pskBinders = pskBinders + if m.raw != nil { + lenWithoutBinders := len(m.marshalWithoutBinders()) + // TODO(filippo): replace with NewFixedBuilder once CL 148882 is imported. + b := cryptobyte.NewBuilder(m.raw[:lenWithoutBinders]) + b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { + for _, binder := range m.pskBinders { + b.AddUint8LengthPrefixed(func(b *cryptobyte.Builder) { + b.AddBytes(binder) + }) + } + }) + if len(b.BytesOrPanic()) != len(m.raw) { + panic("tls: internal error: failed to update binders") + } + } +} + func (m *clientHelloMsg) unmarshal(data []byte) bool { *m = clientHelloMsg{raw: data} s := cryptobyte.String(data) @@ -379,7 +440,7 @@ func (m *clientHelloMsg) unmarshal(data []byte) bool { } m.ocspStapling = statusType == statusTypeOCSP case extensionSupportedCurves: - // RFC 4492, Section 5.1.1 and RFC 8446, Section 4.2.7 + // RFC 4492, sections 5.1.1 and RFC 8446, Section 4.2.7 var curves cryptobyte.String if !extData.ReadUint16LengthPrefixed(&curves) || curves.Empty() { return false @@ -1010,6 +1071,7 @@ type certificateRequestMsgTLS13 struct { scts bool supportedSignatureAlgorithms []SignatureScheme supportedSignatureAlgorithmsCert []SignatureScheme + certificateAuthorities [][]byte } func (m *certificateRequestMsgTLS13) marshal() []byte { @@ -1058,6 +1120,18 @@ func (m *certificateRequestMsgTLS13) marshal() []byte { }) }) } + if len(m.certificateAuthorities) > 0 { + b.AddUint16(extensionCertificateAuthorities) + b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { + b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { + for _, ca := range m.certificateAuthorities { + b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { + b.AddBytes(ca) + }) + } + }) + }) + } }) }) @@ -1116,6 +1190,18 @@ func (m *certificateRequestMsgTLS13) unmarshal(data []byte) bool { m.supportedSignatureAlgorithmsCert = append( m.supportedSignatureAlgorithmsCert, SignatureScheme(sigAndAlg)) } + case extensionCertificateAuthorities: + var auths cryptobyte.String + if !extData.ReadUint16LengthPrefixed(&auths) || auths.Empty() { + return false + } + for !auths.Empty() { + var ca []byte + if !readUint16LengthPrefixed(&auths, &ca) || len(ca) == 0 { + return false + } + m.certificateAuthorities = append(m.certificateAuthorities, ca) + } default: // Ignore unknown extensions. continue @@ -1222,58 +1308,81 @@ func (m *certificateMsgTLS13) marshal() []byte { b.AddUint8(typeCertificate) b.AddUint24LengthPrefixed(func(b *cryptobyte.Builder) { b.AddUint8(0) // certificate_request_context - b.AddUint24LengthPrefixed(func(b *cryptobyte.Builder) { - for i, cert := range m.certificate.Certificate { - b.AddUint24LengthPrefixed(func(b *cryptobyte.Builder) { - b.AddBytes(cert) - }) - b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { - if i > 0 { - // This library only supports OCSP and SCT for leaf certificates. - return - } - if m.ocspStapling { - b.AddUint16(extensionStatusRequest) - b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { - b.AddUint8(statusTypeOCSP) - b.AddUint24LengthPrefixed(func(b *cryptobyte.Builder) { - b.AddBytes(m.certificate.OCSPStaple) - }) - }) - } - if m.scts { - b.AddUint16(extensionSCT) - b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { - b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { - for _, sct := range m.certificate.SignedCertificateTimestamps { - b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { - b.AddBytes(sct) - }) - } - }) - }) - } - }) - } - }) + + certificate := m.certificate + if !m.ocspStapling { + certificate.OCSPStaple = nil + } + if !m.scts { + certificate.SignedCertificateTimestamps = nil + } + marshalCertificate(b, certificate) }) m.raw = b.BytesOrPanic() return m.raw } +func marshalCertificate(b *cryptobyte.Builder, certificate Certificate) { + b.AddUint24LengthPrefixed(func(b *cryptobyte.Builder) { + for i, cert := range certificate.Certificate { + b.AddUint24LengthPrefixed(func(b *cryptobyte.Builder) { + b.AddBytes(cert) + }) + b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { + if i > 0 { + // This library only supports OCSP and SCT for leaf certificates. + return + } + if certificate.OCSPStaple != nil { + b.AddUint16(extensionStatusRequest) + b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { + b.AddUint8(statusTypeOCSP) + b.AddUint24LengthPrefixed(func(b *cryptobyte.Builder) { + b.AddBytes(certificate.OCSPStaple) + }) + }) + } + if certificate.SignedCertificateTimestamps != nil { + b.AddUint16(extensionSCT) + b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { + b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { + for _, sct := range certificate.SignedCertificateTimestamps { + b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { + b.AddBytes(sct) + }) + } + }) + }) + } + }) + } + }) +} + func (m *certificateMsgTLS13) unmarshal(data []byte) bool { *m = certificateMsgTLS13{raw: data} s := cryptobyte.String(data) - var context, certList cryptobyte.String + var context cryptobyte.String if !s.Skip(4) || // message type and uint24 length field !s.ReadUint8LengthPrefixed(&context) || !context.Empty() || - !s.ReadUint24LengthPrefixed(&certList) || + !unmarshalCertificate(&s, &m.certificate) || !s.Empty() { return false } + m.scts = m.certificate.SignedCertificateTimestamps != nil + m.ocspStapling = m.certificate.OCSPStaple != nil + + return true +} + +func unmarshalCertificate(s *cryptobyte.String, certificate *Certificate) bool { + var certList cryptobyte.String + if !s.ReadUint24LengthPrefixed(&certList) { + return false + } for !certList.Empty() { var cert []byte var extensions cryptobyte.String @@ -1281,7 +1390,7 @@ func (m *certificateMsgTLS13) unmarshal(data []byte) bool { !certList.ReadUint16LengthPrefixed(&extensions) { return false } - m.certificate.Certificate = append(m.certificate.Certificate, cert) + certificate.Certificate = append(certificate.Certificate, cert) for !extensions.Empty() { var extension uint16 var extData cryptobyte.String @@ -1289,22 +1398,20 @@ func (m *certificateMsgTLS13) unmarshal(data []byte) bool { !extensions.ReadUint16LengthPrefixed(&extData) { return false } - if len(m.certificate.Certificate) > 1 { + if len(certificate.Certificate) > 1 { // This library only supports OCSP and SCT for leaf certificates. continue } switch extension { case extensionStatusRequest: - m.ocspStapling = true var statusType uint8 if !extData.ReadUint8(&statusType) || statusType != statusTypeOCSP || - !readUint24LengthPrefixed(&extData, &m.certificate.OCSPStaple) || - len(m.certificate.OCSPStaple) == 0 { + !readUint24LengthPrefixed(&extData, &certificate.OCSPStaple) || + len(certificate.OCSPStaple) == 0 { return false } case extensionSCT: - m.scts = true var sctList cryptobyte.String if !extData.ReadUint16LengthPrefixed(&sctList) || sctList.Empty() { return false @@ -1315,8 +1422,8 @@ func (m *certificateMsgTLS13) unmarshal(data []byte) bool { len(sct) == 0 { return false } - m.certificate.SignedCertificateTimestamps = append( - m.certificate.SignedCertificateTimestamps, sct) + certificate.SignedCertificateTimestamps = append( + certificate.SignedCertificateTimestamps, sct) } default: // Ignore unknown extensions. diff --git a/handshake_messages_test.go b/handshake_messages_test.go index ce2b043..1f08f6a 100644 --- a/handshake_messages_test.go +++ b/handshake_messages_test.go @@ -29,6 +29,7 @@ var tests = []interface{}{ &nextProtoMsg{}, &newSessionTicketMsg{}, &sessionState{}, + &sessionStateTLS13{}, &encryptedExtensionsMsg{}, &endOfEarlyDataMsg{}, &keyUpdateMsg{}, @@ -332,6 +333,27 @@ func (*sessionState) Generate(rand *rand.Rand, size int) reflect.Value { return reflect.ValueOf(s) } +func (*sessionStateTLS13) Generate(rand *rand.Rand, size int) reflect.Value { + s := &sessionStateTLS13{} + s.cipherSuite = uint16(rand.Intn(10000)) + s.resumptionSecret = randomBytes(rand.Intn(100)+1, rand) + s.createdAt = uint64(rand.Int63()) + for i := 0; i < rand.Intn(2)+1; i++ { + s.certificate.Certificate = append( + s.certificate.Certificate, randomBytes(rand.Intn(500)+1, rand)) + } + if rand.Intn(10) > 5 { + s.certificate.OCSPStaple = randomBytes(rand.Intn(100)+1, rand) + } + if rand.Intn(10) > 5 { + for i := 0; i < rand.Intn(2)+1; i++ { + s.certificate.SignedCertificateTimestamps = append( + s.certificate.SignedCertificateTimestamps, randomBytes(rand.Intn(500)+1, rand)) + } + } + return reflect.ValueOf(s) +} + func (*endOfEarlyDataMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &endOfEarlyDataMsg{} return reflect.ValueOf(m) @@ -369,6 +391,12 @@ func (*certificateRequestMsgTLS13) Generate(rand *rand.Rand, size int) reflect.V if rand.Intn(10) > 5 { m.supportedSignatureAlgorithmsCert = supportedSignatureAlgorithms() } + if rand.Intn(10) > 5 { + m.certificateAuthorities = make([][]byte, 3) + for i := 0; i < 3; i++ { + m.certificateAuthorities[i] = randomBytes(rand.Intn(10)+1, rand) + } + } return reflect.ValueOf(m) } diff --git a/handshake_server.go b/handshake_server.go index 00ce49f..d5a3287 100644 --- a/handshake_server.go +++ b/handshake_server.go @@ -19,20 +19,18 @@ import ( // serverHandshakeState contains details of a server handshake in progress. // It's discarded once the handshake has completed. type serverHandshakeState struct { - c *Conn - clientHello *clientHelloMsg - hello *serverHelloMsg - suite *cipherSuite - ellipticOk bool - ecdsaOk bool - rsaDecryptOk bool - rsaSignOk bool - sessionState *sessionState - finishedHash finishedHash - masterSecret []byte - certsFromClient [][]byte - cert *Certificate - cachedClientHelloInfo *ClientHelloInfo + c *Conn + clientHello *clientHelloMsg + hello *serverHelloMsg + suite *cipherSuite + ellipticOk bool + ecdsaOk bool + rsaDecryptOk bool + rsaSignOk bool + sessionState *sessionState + finishedHash finishedHash + masterSecret []byte + cert *Certificate } // serverHandshake performs a TLS handshake as a server. @@ -41,17 +39,36 @@ func (c *Conn) serverHandshake() error { // encrypt the tickets with. c.config.serverInitOnce.Do(func() { c.config.serverInit(nil) }) - hs := serverHandshakeState{ - c: c, - } - isResume, err := hs.readClientHello() + clientHello, err := c.readClientHello() if err != nil { return err } + if c.vers == VersionTLS13 { + hs := serverHandshakeStateTLS13{ + c: c, + clientHello: clientHello, + } + return hs.handshake() + } + + hs := serverHandshakeState{ + c: c, + clientHello: clientHello, + } + return hs.handshake() +} + +func (hs *serverHandshakeState) handshake() error { + c := hs.c + + if err := hs.processClientHello(); err != nil { + return err + } + // For an overview of TLS handshaking, see RFC 5246, Section 7.3. c.buffering = true - if isResume { + if hs.checkForResumption() { // The client has included a session ticket and so we do an abbreviated handshake. if err := hs.doResumeHandshake(); err != nil { return err @@ -81,6 +98,9 @@ func (c *Conn) serverHandshake() error { } else { // The client didn't include a session ticket, or it wasn't // valid so we do a full handshake. + if err := hs.pickCipherSuite(); err != nil { + return err + } if err := hs.doFullHandshake(); err != nil { return err } @@ -109,42 +129,47 @@ func (c *Conn) serverHandshake() error { return nil } -// readClientHello reads a ClientHello message from the client and decides -// whether we will perform session resumption. -func (hs *serverHandshakeState) readClientHello() (isResume bool, err error) { - c := hs.c - +// readClientHello reads a ClientHello message and selects the protocol version. +func (c *Conn) readClientHello() (*clientHelloMsg, error) { msg, err := c.readHandshake() if err != nil { - return false, err + return nil, err } - var ok bool - hs.clientHello, ok = msg.(*clientHelloMsg) + clientHello, ok := msg.(*clientHelloMsg) if !ok { c.sendAlert(alertUnexpectedMessage) - return false, unexpectedMessageError(hs.clientHello, msg) + return nil, unexpectedMessageError(clientHello, msg) } if c.config.GetConfigForClient != nil { - if newConfig, err := c.config.GetConfigForClient(hs.clientHelloInfo()); err != nil { + chi := clientHelloInfo(c, clientHello) + if newConfig, err := c.config.GetConfigForClient(chi); err != nil { c.sendAlert(alertInternalError) - return false, err + return nil, err } else if newConfig != nil { newConfig.serverInitOnce.Do(func() { newConfig.serverInit(c.config) }) c.config = newConfig } } - clientVersions := hs.clientHello.supportedVersions - if len(hs.clientHello.supportedVersions) == 0 { - clientVersions = supportedVersionsFromMax(hs.clientHello.vers) + clientVersions := clientHello.supportedVersions + if len(clientHello.supportedVersions) == 0 { + clientVersions = supportedVersionsFromMax(clientHello.vers) } c.vers, ok = c.config.mutualVersion(false, clientVersions) if !ok { c.sendAlert(alertProtocolVersion) - return false, fmt.Errorf("tls: client offered only unsupported versions: %x", clientVersions) + return nil, fmt.Errorf("tls: client offered only unsupported versions: %x", clientVersions) } c.haveVers = true + c.in.version = c.vers + c.out.version = c.vers + + return clientHello, nil +} + +func (hs *serverHandshakeState) processClientHello() error { + c := hs.c hs.hello = new(serverHelloMsg) hs.hello.vers = c.vers @@ -181,19 +206,19 @@ Curves: if !foundCompression { c.sendAlert(alertHandshakeFailure) - return false, errors.New("tls: client does not support uncompressed connections") + return errors.New("tls: client does not support uncompressed connections") } hs.hello.random = make([]byte, 32) - _, err = io.ReadFull(c.config.rand(), hs.hello.random) + _, err := io.ReadFull(c.config.rand(), hs.hello.random) if err != nil { c.sendAlert(alertInternalError) - return false, err + return err } if len(hs.clientHello.secureRenegotiation) != 0 { c.sendAlert(alertHandshakeFailure) - return false, errors.New("tls: initial handshake had non-empty renegotiation extension") + return errors.New("tls: initial handshake had non-empty renegotiation extension") } hs.hello.secureRenegotiationSupported = hs.clientHello.secureRenegotiationSupported @@ -218,10 +243,10 @@ Curves: } } - hs.cert, err = c.config.getCertificate(hs.clientHelloInfo()) + hs.cert, err = c.config.getCertificate(clientHelloInfo(c, hs.clientHello)) if err != nil { c.sendAlert(alertInternalError) - return false, err + return err } if hs.clientHello.scts { hs.hello.scts = hs.cert.SignedCertificateTimestamps @@ -235,7 +260,7 @@ Curves: hs.rsaSignOk = true default: c.sendAlert(alertInternalError) - return false, fmt.Errorf("tls: unsupported signing key type (%T)", priv.Public()) + return fmt.Errorf("tls: unsupported signing key type (%T)", priv.Public()) } } if priv, ok := hs.cert.PrivateKey.(crypto.Decrypter); ok { @@ -244,13 +269,15 @@ Curves: hs.rsaDecryptOk = true default: c.sendAlert(alertInternalError) - return false, fmt.Errorf("tls: unsupported decryption key type (%T)", priv.Public()) + return fmt.Errorf("tls: unsupported decryption key type (%T)", priv.Public()) } } - if hs.checkForResumption() { - return true, nil - } + return nil +} + +func (hs *serverHandshakeState) pickCipherSuite() error { + c := hs.c var preferenceList, supportedList []uint16 if c.config.PreferServerCipherSuites { @@ -269,7 +296,7 @@ Curves: if hs.suite == nil { c.sendAlert(alertHandshakeFailure) - return false, errors.New("tls: no cipher suite supported by both client and server") + return errors.New("tls: no cipher suite supported by both client and server") } // See RFC 7507. @@ -278,13 +305,13 @@ Curves: // The client is doing a fallback connection. if hs.clientHello.vers < c.config.supportedVersions(false)[0] { c.sendAlert(alertInappropriateFallback) - return false, errors.New("tls: client using inappropriate protocol fallback") + return errors.New("tls: client using inappropriate protocol fallback") } break } } - return false, nil + return nil } // checkForResumption reports whether we should perform resumption on this connection. @@ -295,9 +322,13 @@ func (hs *serverHandshakeState) checkForResumption() bool { return false } - var ok bool - var sessionTicket = append([]uint8{}, hs.clientHello.sessionTicket...) - if hs.sessionState, ok = c.decryptTicket(sessionTicket); !ok { + plaintext, usedOldKey := c.decryptTicket(hs.clientHello.sessionTicket) + if plaintext == nil { + return false + } + hs.sessionState = &sessionState{usedOldKey: usedOldKey} + ok := hs.sessionState.unmarshal(plaintext) + if !ok { return false } @@ -324,7 +355,7 @@ func (hs *serverHandshakeState) checkForResumption() bool { } sessionHasClientCerts := len(hs.sessionState.certificates) != 0 - needClientCerts := c.config.ClientAuth == RequireAnyClientCert || c.config.ClientAuth == RequireAndVerifyClientCert + needClientCerts := requiresClientCert(c.config.ClientAuth) if needClientCerts && !sessionHasClientCerts { return false } @@ -351,10 +382,10 @@ func (hs *serverHandshakeState) doResumeHandshake() error { return err } - if len(hs.sessionState.certificates) > 0 { - if _, err := hs.processCertsFromClient(hs.sessionState.certificates); err != nil { - return err - } + if err := c.processCertsFromClient(Certificate{ + Certificate: hs.sessionState.certificates, + }); err != nil { + return err } hs.masterSecret = hs.sessionState.masterSecret @@ -456,29 +487,24 @@ func (hs *serverHandshakeState) doFullHandshake() error { return err } - var ok bool // If we requested a client certificate, then the client must send a // certificate message, even if it's empty. if c.config.ClientAuth >= RequestClientCert { - if certMsg, ok = msg.(*certificateMsg); !ok { + certMsg, ok := msg.(*certificateMsg) + if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(certMsg, msg) } hs.finishedHash.Write(certMsg.marshal()) - if len(certMsg.certificates) == 0 { - // The client didn't actually send a certificate - switch c.config.ClientAuth { - case RequireAnyClientCert, RequireAndVerifyClientCert: - c.sendAlert(alertBadCertificate) - return errors.New("tls: client didn't provide a certificate") - } - } - - pub, err = hs.processCertsFromClient(certMsg.certificates) - if err != nil { + if err := c.processCertsFromClient(Certificate{ + Certificate: certMsg.certificates, + }); err != nil { return err } + if len(certMsg.certificates) != 0 { + pub = c.peerCertificates[0].PublicKey + } msg, err = c.readHandshake() if err != nil { @@ -500,7 +526,7 @@ func (hs *serverHandshakeState) doFullHandshake() error { return err } hs.masterSecret = masterFromPreMasterSecret(c.vers, hs.suite, preMasterSecret, hs.clientHello.random, hs.hello.random) - if err := c.config.writeKeyLog(hs.clientHello.random, hs.masterSecret); err != nil { + if err := c.config.writeKeyLog(keyLogLabelTLS12, hs.clientHello.random, hs.masterSecret); err != nil { c.sendAlert(alertInternalError) return err } @@ -574,9 +600,8 @@ func (hs *serverHandshakeState) establishKeys() error { func (hs *serverHandshakeState) readFinished(out []byte) error { c := hs.c - c.readRecord(recordTypeChangeCipherSpec) - if c.in.err != nil { - return c.in.err + if err := c.readChangeCipherSpec(); err != nil { + return err } if hs.hello.nextProtoNeg { @@ -623,14 +648,18 @@ func (hs *serverHandshakeState) sendSessionTicket() error { c := hs.c m := new(newSessionTicketMsg) - var err error + var certsFromClient [][]byte + for _, cert := range c.peerCertificates { + certsFromClient = append(certsFromClient, cert.Raw) + } state := sessionState{ vers: c.vers, cipherSuite: hs.suite.id, masterSecret: hs.masterSecret, - certificates: hs.certsFromClient, + certificates: certsFromClient, } - m.ticket, err = c.encryptTicket(&state) + var err error + m.ticket, err = c.encryptTicket(state.marshal()) if err != nil { return err } @@ -666,19 +695,22 @@ func (hs *serverHandshakeState) sendFinished(out []byte) error { // processCertsFromClient takes a chain of client certificates either from a // Certificates message or from a sessionState and verifies them. It returns // the public key of the leaf certificate. -func (hs *serverHandshakeState) processCertsFromClient(certificates [][]byte) (crypto.PublicKey, error) { - c := hs.c - - hs.certsFromClient = certificates +func (c *Conn) processCertsFromClient(certificate Certificate) error { + certificates := certificate.Certificate certs := make([]*x509.Certificate, len(certificates)) var err error for i, asn1Data := range certificates { if certs[i], err = x509.ParseCertificate(asn1Data); err != nil { c.sendAlert(alertBadCertificate) - return nil, errors.New("tls: failed to parse client certificate: " + err.Error()) + return errors.New("tls: failed to parse client certificate: " + err.Error()) } } + if len(certs) == 0 && requiresClientCert(c.config.ClientAuth) { + c.sendAlert(alertBadCertificate) + return errors.New("tls: client didn't provide a certificate") + } + if c.config.ClientAuth >= VerifyClientCertIfGiven && len(certs) > 0 { opts := x509.VerifyOptions{ IsBoring: isBoringCertificate, @@ -696,7 +728,7 @@ func (hs *serverHandshakeState) processCertsFromClient(certificates [][]byte) (c chains, err := certs[0].Verify(opts) if err != nil { c.sendAlert(alertBadCertificate) - return nil, errors.New("tls: failed to verify client's certificate: " + err.Error()) + return errors.New("tls: failed to verify client's certificate: " + err.Error()) } c.verifiedChains = chains @@ -705,24 +737,25 @@ func (hs *serverHandshakeState) processCertsFromClient(certificates [][]byte) (c if c.config.VerifyPeerCertificate != nil { if err := c.config.VerifyPeerCertificate(certificates, c.verifiedChains); err != nil { c.sendAlert(alertBadCertificate) - return nil, err + return err } } if len(certs) == 0 { - return nil, nil + return nil } - var pub crypto.PublicKey - switch key := certs[0].PublicKey.(type) { + switch certs[0].PublicKey.(type) { case *ecdsa.PublicKey, *rsa.PublicKey: - pub = key default: c.sendAlert(alertUnsupportedCertificate) - return nil, fmt.Errorf("tls: client's certificate contains an unsupported public key of type %T", certs[0].PublicKey) + return fmt.Errorf("tls: client's certificate contains an unsupported public key of type %T", certs[0].PublicKey) } + c.peerCertificates = certs - return pub, nil + c.ocspResponse = certificate.OCSPStaple + c.scts = certificate.SignedCertificateTimestamps + return nil } // setCipherSuite sets a cipherSuite with the given id as the serverHandshakeState @@ -731,14 +764,7 @@ func (hs *serverHandshakeState) processCertsFromClient(certificates [][]byte) (c func (hs *serverHandshakeState) setCipherSuite(id uint16, supportedCipherSuites []uint16, version uint16) bool { for _, supported := range supportedCipherSuites { if id == supported { - var candidate *cipherSuite - - for _, s := range cipherSuites { - if s.id == id { - candidate = s - break - } - } + candidate := cipherSuiteByID(id) if candidate == nil { continue } @@ -768,26 +794,20 @@ func (hs *serverHandshakeState) setCipherSuite(id uint16, supportedCipherSuites return false } -func (hs *serverHandshakeState) clientHelloInfo() *ClientHelloInfo { - if hs.cachedClientHelloInfo != nil { - return hs.cachedClientHelloInfo +func clientHelloInfo(c *Conn, clientHello *clientHelloMsg) *ClientHelloInfo { + supportedVersions := clientHello.supportedVersions + if len(clientHello.supportedVersions) == 0 { + supportedVersions = supportedVersionsFromMax(clientHello.vers) } - supportedVersions := hs.clientHello.supportedVersions - if len(hs.clientHello.supportedVersions) == 0 { - supportedVersions = supportedVersionsFromMax(hs.clientHello.vers) - } - - hs.cachedClientHelloInfo = &ClientHelloInfo{ - CipherSuites: hs.clientHello.cipherSuites, - ServerName: hs.clientHello.serverName, - SupportedCurves: hs.clientHello.supportedCurves, - SupportedPoints: hs.clientHello.supportedPoints, - SignatureSchemes: hs.clientHello.supportedSignatureAlgorithms, - SupportedProtos: hs.clientHello.alpnProtocols, + return &ClientHelloInfo{ + CipherSuites: clientHello.cipherSuites, + ServerName: clientHello.serverName, + SupportedCurves: clientHello.supportedCurves, + SupportedPoints: clientHello.supportedPoints, + SignatureSchemes: clientHello.supportedSignatureAlgorithms, + SupportedProtos: clientHello.alpnProtocols, SupportedVersions: supportedVersions, - Conn: hs.c.conn, + Conn: c.conn, } - - return hs.cachedClientHelloInfo } diff --git a/handshake_server_test.go b/handshake_server_test.go index f7785ec..ef7f30d 100644 --- a/handshake_server_test.go +++ b/handshake_server_test.go @@ -16,6 +16,7 @@ import ( "errors" "fmt" "io" + "io/ioutil" "math/big" "net" "os" @@ -63,6 +64,13 @@ func init() { testConfig.Certificates[1].Certificate = [][]byte{testSNICertificate} testConfig.Certificates[1].PrivateKey = testRSAPrivateKey testConfig.BuildNameToCertificate() + if keyFile := os.Getenv("SSLKEYLOGFILE"); keyFile != "" { + f, err := os.OpenFile(keyFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + panic("failed to open SSLKEYLOGFILE: " + err.Error()) + } + testConfig.KeyLogWriter = f + } } func testClientHello(t *testing.T, serverConfig *Config, m handshakeMessage) { @@ -79,17 +87,25 @@ func testClientHelloFailure(t *testing.T, serverConfig *Config, m handshakeMessa cli.writeRecord(recordTypeHandshake, m.marshal()) c.Close() }() + conn := Server(s, serverConfig) + ch, err := conn.readClientHello() hs := serverHandshakeState{ - c: Server(s, serverConfig), + c: conn, + clientHello: ch, + } + if err == nil { + err = hs.processClientHello() + } + if err == nil { + err = hs.pickCipherSuite() } - _, err := hs.readClientHello() s.Close() if len(expectedSubStr) == 0 { if err != nil && err != io.EOF { t.Errorf("Got error: %s; expected to succeed", err) } } else if err == nil || !strings.Contains(err.Error(), expectedSubStr) { - t.Errorf("Got error: %s; expected to match substring '%s'", err, expectedSubStr) + t.Errorf("Got error: %v; expected to match substring '%s'", err, expectedSubStr) } } @@ -333,21 +349,41 @@ func TestClose(t *testing.T) { func testHandshake(t *testing.T, clientConfig, serverConfig *Config) (serverState, clientState ConnectionState, err error) { c, s := localPipe(t) - done := make(chan bool) + errChan := make(chan error) go func() { cli := Client(c, clientConfig) - cli.Handshake() + err := cli.Handshake() + if err != nil { + errChan <- fmt.Errorf("client: %v", err) + c.Close() + return + } + defer cli.Close() clientState = cli.ConnectionState() - c.Close() - done <- true + buf, err := ioutil.ReadAll(cli) + if err != nil { + t.Errorf("failed to call cli.Read: %v", err) + } + if got := string(buf); got != opensslSentinel { + t.Errorf("read %q from TLS connection, but expected %q", got, opensslSentinel) + } + errChan <- nil }() server := Server(s, serverConfig) err = server.Handshake() if err == nil { serverState = server.ConnectionState() + if _, err := io.WriteString(server, opensslSentinel); err != nil { + t.Errorf("failed to call server.Write: %v", err) + } + if err := server.Close(); err != nil { + t.Errorf("failed to call server.Close: %v", err) + } + err = <-errChan + } else { + s.Close() + <-errChan } - s.Close() - <-done return } @@ -727,6 +763,16 @@ func runServerTestTLS12(t *testing.T, template *serverTest) { runServerTestForVersion(t, template, "TLSv12", "-tls1_2") } +func runServerTestTLS13(t *testing.T, template *serverTest) { + // TODO(filippo): set MaxVersion to VersionTLS13 instead in testConfig + // while regenerating server tests. + if template.config == nil { + template.config = testConfig.Clone() + } + template.config.MaxVersion = VersionTLS13 + runServerTestForVersion(t, template, "TLSv13", "-tls1_3") +} + func TestHandshakeServerRSARC4(t *testing.T) { test := &serverTest{ name: "RSA-RC4", @@ -774,6 +820,28 @@ func TestHandshakeServerAES256GCMSHA384(t *testing.T) { runServerTestTLS12(t, test) } +func TestHandshakeServerAES128SHA256(t *testing.T) { + test := &serverTest{ + name: "AES128-SHA256", + command: []string{"openssl", "s_client", "-no_ticket", "-ciphersuites", "TLS_AES_128_GCM_SHA256"}, + } + runServerTestTLS13(t, test) +} +func TestHandshakeServerAES256SHA384(t *testing.T) { + test := &serverTest{ + name: "AES256-SHA384", + command: []string{"openssl", "s_client", "-no_ticket", "-ciphersuites", "TLS_AES_256_GCM_SHA384"}, + } + runServerTestTLS13(t, test) +} +func TestHandshakeServerCHACHA20SHA256(t *testing.T) { + test := &serverTest{ + name: "CHACHA20-SHA256", + command: []string{"openssl", "s_client", "-no_ticket", "-ciphersuites", "TLS_CHACHA20_POLY1305_SHA256"}, + } + runServerTestTLS13(t, test) +} + func TestHandshakeServerECDHEECDSAAES(t *testing.T) { config := testConfig.Clone() config.Certificates = make([]Certificate, 1) @@ -783,11 +851,12 @@ func TestHandshakeServerECDHEECDSAAES(t *testing.T) { test := &serverTest{ name: "ECDHE-ECDSA-AES", - command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "ECDHE-ECDSA-AES256-SHA"}, + command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "ECDHE-ECDSA-AES256-SHA", "-ciphersuites", "TLS_AES_128_GCM_SHA256"}, config: config, } runServerTestTLS10(t, test) runServerTestTLS12(t, test) + runServerTestTLS13(t, test) } func TestHandshakeServerX25519(t *testing.T) { @@ -795,11 +864,37 @@ func TestHandshakeServerX25519(t *testing.T) { config.CurvePreferences = []CurveID{X25519} test := &serverTest{ - name: "X25519-ECDHE-RSA-AES-GCM", - command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "ECDHE-RSA-AES128-GCM-SHA256"}, + name: "X25519", + command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "ECDHE-RSA-AES128-GCM-SHA256", "-curves", "X25519"}, config: config, } runServerTestTLS12(t, test) + runServerTestTLS13(t, test) +} + +func TestHandshakeServerP256(t *testing.T) { + config := testConfig.Clone() + config.CurvePreferences = []CurveID{CurveP256} + + test := &serverTest{ + name: "P256", + command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "ECDHE-RSA-AES128-GCM-SHA256", "-curves", "P-256"}, + config: config, + } + runServerTestTLS12(t, test) + runServerTestTLS13(t, test) +} + +func TestHandshakeServerHelloRetryRequest(t *testing.T) { + config := testConfig.Clone() + config.CurvePreferences = []CurveID{CurveP256} + + test := &serverTest{ + name: "HelloRetryRequest", + command: []string{"openssl", "s_client", "-no_ticket", "-curves", "X25519:P-256"}, + config: config, + } + runServerTestTLS13(t, test) } func TestHandshakeServerALPN(t *testing.T) { @@ -821,6 +916,7 @@ func TestHandshakeServerALPN(t *testing.T) { }, } runServerTestTLS12(t, test) + runServerTestTLS13(t, test) } func TestHandshakeServerALPNNoMatch(t *testing.T) { @@ -843,6 +939,7 @@ func TestHandshakeServerALPNNoMatch(t *testing.T) { }, } runServerTestTLS12(t, test) + runServerTestTLS13(t, test) } // TestHandshakeServerSNI involves a client sending an SNI extension of @@ -977,49 +1074,83 @@ func TestCipherSuiteCertPreferenceECDSA(t *testing.T) { runServerTestTLS12(t, test) } -func TestResumption(t *testing.T) { +func TestServerResumption(t *testing.T) { sessionFilePath := tempFile("") defer os.Remove(sessionFilePath) - test := &serverTest{ + testIssue := &serverTest{ name: "IssueTicket", command: []string{"openssl", "s_client", "-cipher", "AES128-SHA", "-sess_out", sessionFilePath}, wait: true, } - runServerTestTLS12(t, test) - - test = &serverTest{ + testResume := &serverTest{ name: "Resume", command: []string{"openssl", "s_client", "-cipher", "AES128-SHA", "-sess_in", sessionFilePath}, + validate: func(state ConnectionState) error { + if !state.DidResume { + return errors.New("did not resume") + } + return nil + }, } - runServerTestTLS12(t, test) + + runServerTestTLS12(t, testIssue) + runServerTestTLS12(t, testResume) + + runServerTestTLS13(t, testIssue) + runServerTestTLS13(t, testResume) + + config := testConfig.Clone() + config.CurvePreferences = []CurveID{CurveP256} + + testResumeHRR := &serverTest{ + name: "Resume-HelloRetryRequest", + command: []string{"openssl", "s_client", "-curves", "X25519:P-256", "-sess_in", sessionFilePath}, + config: config, + validate: func(state ConnectionState) error { + if !state.DidResume { + return errors.New("did not resume") + } + return nil + }, + } + + runServerTestTLS13(t, testResumeHRR) } -func TestResumptionDisabled(t *testing.T) { +func TestServerResumptionDisabled(t *testing.T) { sessionFilePath := tempFile("") defer os.Remove(sessionFilePath) config := testConfig.Clone() - test := &serverTest{ + testIssue := &serverTest{ name: "IssueTicketPreDisable", command: []string{"openssl", "s_client", "-cipher", "AES128-SHA", "-sess_out", sessionFilePath}, config: config, wait: true, } - runServerTestTLS12(t, test) - - config.SessionTicketsDisabled = true - - test = &serverTest{ + testResume := &serverTest{ name: "ResumeDisabled", command: []string{"openssl", "s_client", "-cipher", "AES128-SHA", "-sess_in", sessionFilePath}, config: config, + validate: func(state ConnectionState) error { + if state.DidResume { + return errors.New("resumed with SessionTicketsDisabled") + } + return nil + }, } - runServerTestTLS12(t, test) - // One needs to manually confirm that the handshake in the golden data - // file for ResumeDisabled does not include a resumption handshake. + config.SessionTicketsDisabled = false + runServerTestTLS12(t, testIssue) + config.SessionTicketsDisabled = true + runServerTestTLS12(t, testResume) + + config.SessionTicketsDisabled = false + runServerTestTLS13(t, testIssue) + config.SessionTicketsDisabled = true + runServerTestTLS13(t, testResume) } func TestFallbackSCSV(t *testing.T) { @@ -1052,6 +1183,7 @@ func TestHandshakeServerExportKeyingMaterial(t *testing.T) { } runServerTestTLS10(t, test) runServerTestTLS12(t, test) + runServerTestTLS13(t, test) } func TestHandshakeServerRSAPKCS1v15(t *testing.T) { @@ -1068,6 +1200,7 @@ func TestHandshakeServerRSAPSS(t *testing.T) { command: []string{"openssl", "s_client", "-no_ticket", "-sigalgs", "rsa_pss_rsae_sha256"}, } runServerTestTLS12(t, test) + runServerTestTLS13(t, test) } func benchmarkHandshakeServer(b *testing.B, cipherSuite uint16, curve CurveID, cert []byte, key crypto.PrivateKey) { @@ -1235,6 +1368,7 @@ func TestClientAuth(t *testing.T) { config: config, } runServerTestTLS12(t, test) + runServerTestTLS13(t, test) test = &serverTest{ name: "ClientAuthRequestedAndGiven", @@ -1244,6 +1378,7 @@ func TestClientAuth(t *testing.T) { expectedPeerCerts: []string{clientCertificatePEM}, } runServerTestTLS12(t, test) + runServerTestTLS13(t, test) test = &serverTest{ name: "ClientAuthRequestedAndECDSAGiven", @@ -1253,6 +1388,7 @@ func TestClientAuth(t *testing.T) { expectedPeerCerts: []string{clientECDSACertificatePEM}, } runServerTestTLS12(t, test) + runServerTestTLS13(t, test) test = &serverTest{ name: "ClientAuthRequestedAndPKCS1v15Given", @@ -1286,10 +1422,18 @@ func TestSNIGivenOnFailure(t *testing.T) { cli.writeRecord(recordTypeHandshake, clientHello.marshal()) c.Close() }() + conn := Server(s, serverConfig) + ch, err := conn.readClientHello() hs := serverHandshakeState{ - c: Server(s, serverConfig), + c: conn, + clientHello: ch, + } + if err == nil { + err = hs.processClientHello() + } + if err == nil { + err = hs.pickCipherSuite() } - _, err := hs.readClientHello() defer s.Close() if err == nil { @@ -1507,3 +1651,14 @@ func TestCloseServerConnectionOnIdleClient(t *testing.T) { t.Errorf("Error expected, but no error returned") } } + +func TestCloneHash(t *testing.T) { + h1 := crypto.SHA256.New() + h1.Write([]byte("test")) + s1 := h1.Sum(nil) + h2 := cloneHash(h1, crypto.SHA256) + s2 := h2.Sum(nil) + if !bytes.Equal(s1, s2) { + t.Error("cloned hash generated a different sum") + } +} diff --git a/handshake_server_tls13.go b/handshake_server_tls13.go new file mode 100644 index 0000000..ccbe045 --- /dev/null +++ b/handshake_server_tls13.go @@ -0,0 +1,827 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package tls + +import ( + "bytes" + "crypto" + "crypto/hmac" + "crypto/rsa" + "errors" + "fmt" + "hash" + "io" + "sync/atomic" + "time" +) + +// maxClientPSKIdentities is the number of client PSK identities the server will +// attempt to validate. It will ignore the rest not to let cheap ClientHello +// messages cause too much work in session ticket decryption attempts. +const maxClientPSKIdentities = 5 + +type serverHandshakeStateTLS13 struct { + c *Conn + clientHello *clientHelloMsg + hello *serverHelloMsg + sentDummyCCS bool + usingPSK bool + suite *cipherSuiteTLS13 + cert *Certificate + sigAlg SignatureScheme + earlySecret []byte + sharedKey []byte + handshakeSecret []byte + masterSecret []byte + trafficSecret []byte // client_application_traffic_secret_0 + transcript hash.Hash + clientFinished []byte +} + +func (hs *serverHandshakeStateTLS13) handshake() error { + c := hs.c + + // For an overview of the TLS 1.3 handshake, see RFC 8446, Section 2. + if err := hs.processClientHello(); err != nil { + return err + } + if err := hs.checkForResumption(); err != nil { + return err + } + if err := hs.pickCertificate(); err != nil { + return err + } + c.buffering = true + if err := hs.sendServerParameters(); err != nil { + return err + } + if err := hs.sendServerCertificate(); err != nil { + return err + } + if err := hs.sendServerFinished(); err != nil { + return err + } + // Note that at this point we could start sending application data without + // waiting for the client's second flight, but the application might not + // expect the lack of replay protection of the ClientHello parameters. + if _, err := c.flush(); err != nil { + return err + } + if err := hs.readClientCertificate(); err != nil { + return err + } + if err := hs.readClientFinished(); err != nil { + return err + } + + atomic.StoreUint32(&c.handshakeStatus, 1) + + return nil +} + +func (hs *serverHandshakeStateTLS13) processClientHello() error { + c := hs.c + + hs.hello = new(serverHelloMsg) + + // TLS 1.3 froze the ServerHello.legacy_version field, and uses + // supported_versions instead. See RFC 8446, sections 4.1.3 and 4.2.1. + hs.hello.vers = VersionTLS12 + hs.hello.supportedVersion = c.vers + + if len(hs.clientHello.supportedVersions) == 0 { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: client used the legacy version field to negotiate TLS 1.3") + } + + if len(hs.clientHello.compressionMethods) != 1 || + hs.clientHello.compressionMethods[0] != compressionNone { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: TLS 1.3 client supports illegal compression methods") + } + + hs.hello.random = make([]byte, 32) + if _, err := io.ReadFull(c.config.rand(), hs.hello.random); err != nil { + c.sendAlert(alertInternalError) + return err + } + + if len(hs.clientHello.secureRenegotiation) != 0 { + c.sendAlert(alertHandshakeFailure) + return errors.New("tls: initial handshake had non-empty renegotiation extension") + } + + if hs.clientHello.earlyData { + return errors.New("tls: early data skipping not implemented") // TODO(filippo) + } + + hs.hello.sessionId = hs.clientHello.sessionId + hs.hello.compressionMethod = compressionNone + + var preferenceList, supportedList []uint16 + if c.config.PreferServerCipherSuites { + preferenceList = defaultCipherSuitesTLS13() + supportedList = hs.clientHello.cipherSuites + } else { + preferenceList = hs.clientHello.cipherSuites + supportedList = defaultCipherSuitesTLS13() + } + for _, suiteID := range preferenceList { + hs.suite = mutualCipherSuiteTLS13(supportedList, suiteID) + if hs.suite != nil { + break + } + } + if hs.suite == nil { + c.sendAlert(alertHandshakeFailure) + return errors.New("tls: no cipher suite supported by both client and server") + } + c.cipherSuite = hs.suite.id + hs.hello.cipherSuite = hs.suite.id + hs.transcript = hs.suite.hash.New() + + // Pick the ECDHE group in server preference order, but give priority to + // groups with a key share, to avoid a HelloRetryRequest round-trip. + var selectedGroup CurveID + var clientKeyShare *keyShare +GroupSelection: + for _, preferredGroup := range c.config.curvePreferences() { + for _, ks := range hs.clientHello.keyShares { + if ks.group == preferredGroup { + selectedGroup = ks.group + clientKeyShare = &ks + break GroupSelection + } + } + if selectedGroup != 0 { + continue + } + for _, group := range hs.clientHello.supportedCurves { + if group == preferredGroup { + selectedGroup = group + break + } + } + } + if selectedGroup == 0 { + c.sendAlert(alertHandshakeFailure) + return errors.New("tls: no ECDHE curve supported by both client and server") + } + if clientKeyShare == nil { + if err := hs.doHelloRetryRequest(selectedGroup); err != nil { + return err + } + clientKeyShare = &hs.clientHello.keyShares[0] + } + + if _, ok := curveForCurveID(selectedGroup); selectedGroup != X25519 && !ok { + c.sendAlert(alertInternalError) + return errors.New("tls: CurvePreferences includes unsupported curve") + } + params, err := generateECDHEParameters(c.config.rand(), selectedGroup) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + hs.hello.serverShare = keyShare{group: selectedGroup, data: params.PublicKey()} + hs.sharedKey = params.SharedKey(clientKeyShare.data) + if hs.sharedKey == nil { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: invalid client key share") + } + + return nil +} + +func (hs *serverHandshakeStateTLS13) checkForResumption() error { + c := hs.c + + if c.config.SessionTicketsDisabled { + return nil + } + + modeOK := false + for _, mode := range hs.clientHello.pskModes { + if mode == pskModeDHE { + modeOK = true + break + } + } + if !modeOK { + return nil + } + + if len(hs.clientHello.pskIdentities) != len(hs.clientHello.pskBinders) { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: invalid or missing PSK binders") + } + if len(hs.clientHello.pskIdentities) == 0 { + return nil + } + + for i, identity := range hs.clientHello.pskIdentities { + if i >= maxClientPSKIdentities { + break + } + + plaintext, _ := c.decryptTicket(identity.label) + if plaintext == nil { + continue + } + sessionState := new(sessionStateTLS13) + if ok := sessionState.unmarshal(plaintext); !ok { + continue + } + + createdAt := time.Unix(int64(sessionState.createdAt), 0) + if c.config.time().Sub(createdAt) > maxSessionTicketLifetime { + continue + } + + // We don't check the obfuscated ticket age because it's affected by + // clock skew and it's only a freshness signal useful for shrinking the + // window for replay attacks, which don't affect us as we don't do 0-RTT. + + pskSuite := cipherSuiteTLS13ByID(sessionState.cipherSuite) + if pskSuite == nil || pskSuite.hash != hs.suite.hash { + continue + } + + // PSK connections don't re-establish client certificates, but carry + // them over in the session ticket. Ensure the presence of client certs + // in the ticket is consistent with the configured requirements. + sessionHasClientCerts := len(sessionState.certificate.Certificate) != 0 + needClientCerts := requiresClientCert(c.config.ClientAuth) + if needClientCerts && !sessionHasClientCerts { + continue + } + if sessionHasClientCerts && c.config.ClientAuth == NoClientCert { + continue + } + + psk := hs.suite.expandLabel(sessionState.resumptionSecret, "resumption", + nil, hs.suite.hash.Size()) + hs.earlySecret = hs.suite.extract(psk, nil) + binderKey := hs.suite.deriveSecret(hs.earlySecret, resumptionBinderLabel, nil) + // Clone the transcript in case a HelloRetryRequest was recorded. + transcript := cloneHash(hs.transcript, hs.suite.hash) + if transcript == nil { + c.sendAlert(alertInternalError) + return errors.New("tls: internal error: failed to clone hash") + } + transcript.Write(hs.clientHello.marshalWithoutBinders()) + pskBinder := hs.suite.finishedHash(binderKey, transcript) + if !hmac.Equal(hs.clientHello.pskBinders[i], pskBinder) { + c.sendAlert(alertDecryptError) + return errors.New("tls: invalid PSK binder") + } + + if err := c.processCertsFromClient(sessionState.certificate); err != nil { + return err + } + + hs.hello.selectedIdentityPresent = true + hs.hello.selectedIdentity = uint16(i) + hs.usingPSK = true + c.didResume = true + return nil + } + + return nil +} + +// cloneHash uses the encoding.BinaryMarshaler and encoding.BinaryUnmarshaler +// interfaces implemented by standard library hashes to clone the state of in +// to a new instance of h. It returns nil if the operation fails. +func cloneHash(in hash.Hash, h crypto.Hash) hash.Hash { + // Recreate the interface to avoid importing encoding. + type binaryMarshaler interface { + MarshalBinary() (data []byte, err error) + UnmarshalBinary(data []byte) error + } + marshaler, ok := in.(binaryMarshaler) + if !ok { + return nil + } + state, err := marshaler.MarshalBinary() + if err != nil { + return nil + } + out := h.New() + unmarshaler, ok := out.(binaryMarshaler) + if !ok { + return nil + } + if err := unmarshaler.UnmarshalBinary(state); err != nil { + return nil + } + return out +} + +func (hs *serverHandshakeStateTLS13) pickCertificate() error { + c := hs.c + + // Only one of PSK and certificates are used at a time. + if hs.usingPSK { + return nil + } + + // This implements a very simplistic certificate selection strategy for now: + // getCertificate delegates to the application Config.GetCertificate, or + // selects based on the server_name only. If the selected certificate's + // public key does not match the client signature_algorithms, the handshake + // is aborted. No attention is given to signature_algorithms_cert, and it is + // not passed to the application Config.GetCertificate. This will need to + // improve according to RFC 8446, sections 4.4.2.2 and 4.2.3. + certificate, err := c.config.getCertificate(clientHelloInfo(c, hs.clientHello)) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + supportedAlgs := signatureSchemesForCertificate(certificate) + if supportedAlgs == nil { + c.sendAlert(alertInternalError) + return fmt.Errorf("tls: unsupported certificate key (%T)", certificate.PrivateKey) + } + // Pick signature scheme in client preference order, as the server + // preference order is not configurable. + for _, preferredAlg := range hs.clientHello.supportedSignatureAlgorithms { + if isSupportedSignatureAlgorithm(preferredAlg, supportedAlgs) { + hs.sigAlg = preferredAlg + break + } + } + if hs.sigAlg == 0 { + c.sendAlert(alertHandshakeFailure) + return errors.New("tls: client doesn't support selected certificate") + } + hs.cert = certificate + + return nil +} + +// sendDummyChangeCipherSpec sends a ChangeCipherSpec record for compatibility +// with middleboxes that didn't implement TLS correctly. See RFC 8446, Appendix D.4. +func (hs *serverHandshakeStateTLS13) sendDummyChangeCipherSpec() error { + if hs.sentDummyCCS { + return nil + } + hs.sentDummyCCS = true + + _, err := hs.c.writeRecord(recordTypeChangeCipherSpec, []byte{1}) + return err +} + +func (hs *serverHandshakeStateTLS13) doHelloRetryRequest(selectedGroup CurveID) error { + c := hs.c + + // The first ClientHello gets double-hashed into the transcript upon a + // HelloRetryRequest. See RFC 8446, Section 4.4.1. + hs.transcript.Write(hs.clientHello.marshal()) + chHash := hs.transcript.Sum(nil) + hs.transcript.Reset() + hs.transcript.Write([]byte{typeMessageHash, 0, 0, uint8(len(chHash))}) + hs.transcript.Write(chHash) + + helloRetryRequest := &serverHelloMsg{ + vers: hs.hello.vers, + random: helloRetryRequestRandom, + sessionId: hs.hello.sessionId, + cipherSuite: hs.hello.cipherSuite, + compressionMethod: hs.hello.compressionMethod, + supportedVersion: hs.hello.supportedVersion, + selectedGroup: selectedGroup, + } + + hs.transcript.Write(helloRetryRequest.marshal()) + if _, err := c.writeRecord(recordTypeHandshake, helloRetryRequest.marshal()); err != nil { + return err + } + + if err := hs.sendDummyChangeCipherSpec(); err != nil { + return err + } + + msg, err := c.readHandshake() + if err != nil { + return err + } + + clientHello, ok := msg.(*clientHelloMsg) + if !ok { + c.sendAlert(alertUnexpectedMessage) + return unexpectedMessageError(clientHello, msg) + } + + if len(clientHello.keyShares) != 1 || clientHello.keyShares[0].group != selectedGroup { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: client sent invalid key share in second ClientHello") + } + + if clientHello.earlyData { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: client indicated early data in second ClientHello") + } + + if illegalClientHelloChange(clientHello, hs.clientHello) { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: client illegally modified second ClientHello") + } + + hs.clientHello = clientHello + return nil +} + +// illegalClientHelloChange returns whether the two ClientHello messages are +// different, with the exception of the changes allowed before and after a +// HelloRetryRequest. See RFC 8446, Section 4.1.2. +func illegalClientHelloChange(ch, ch1 *clientHelloMsg) bool { + if len(ch.supportedVersions) != len(ch1.supportedVersions) || + len(ch.cipherSuites) != len(ch1.cipherSuites) || + len(ch.supportedCurves) != len(ch1.supportedCurves) || + len(ch.supportedSignatureAlgorithms) != len(ch1.supportedSignatureAlgorithms) || + len(ch.supportedSignatureAlgorithmsCert) != len(ch1.supportedSignatureAlgorithmsCert) || + len(ch.alpnProtocols) != len(ch1.alpnProtocols) { + return true + } + for i := range ch.supportedVersions { + if ch.supportedVersions[i] != ch1.supportedVersions[i] { + return true + } + } + for i := range ch.cipherSuites { + if ch.cipherSuites[i] != ch1.cipherSuites[i] { + return true + } + } + for i := range ch.supportedCurves { + if ch.supportedCurves[i] != ch1.supportedCurves[i] { + return true + } + } + for i := range ch.supportedSignatureAlgorithms { + if ch.supportedSignatureAlgorithms[i] != ch1.supportedSignatureAlgorithms[i] { + return true + } + } + for i := range ch.supportedSignatureAlgorithmsCert { + if ch.supportedSignatureAlgorithmsCert[i] != ch1.supportedSignatureAlgorithmsCert[i] { + return true + } + } + for i := range ch.alpnProtocols { + if ch.alpnProtocols[i] != ch1.alpnProtocols[i] { + return true + } + } + return ch.vers != ch1.vers || + !bytes.Equal(ch.random, ch1.random) || + !bytes.Equal(ch.sessionId, ch1.sessionId) || + !bytes.Equal(ch.compressionMethods, ch1.compressionMethods) || + ch.nextProtoNeg != ch1.nextProtoNeg || + ch.serverName != ch1.serverName || + ch.ocspStapling != ch1.ocspStapling || + !bytes.Equal(ch.supportedPoints, ch1.supportedPoints) || + ch.ticketSupported != ch1.ticketSupported || + !bytes.Equal(ch.sessionTicket, ch1.sessionTicket) || + ch.secureRenegotiationSupported != ch1.secureRenegotiationSupported || + !bytes.Equal(ch.secureRenegotiation, ch1.secureRenegotiation) || + ch.scts != ch1.scts || + !bytes.Equal(ch.cookie, ch1.cookie) || + !bytes.Equal(ch.pskModes, ch1.pskModes) +} + +func (hs *serverHandshakeStateTLS13) sendServerParameters() error { + c := hs.c + + hs.transcript.Write(hs.clientHello.marshal()) + hs.transcript.Write(hs.hello.marshal()) + if _, err := c.writeRecord(recordTypeHandshake, hs.hello.marshal()); err != nil { + return err + } + + if err := hs.sendDummyChangeCipherSpec(); err != nil { + return err + } + + earlySecret := hs.earlySecret + if earlySecret == nil { + earlySecret = hs.suite.extract(nil, nil) + } + hs.handshakeSecret = hs.suite.extract(hs.sharedKey, + hs.suite.deriveSecret(earlySecret, "derived", nil)) + + clientSecret := hs.suite.deriveSecret(hs.handshakeSecret, + clientHandshakeTrafficLabel, hs.transcript) + c.in.setTrafficSecret(hs.suite, clientSecret) + serverSecret := hs.suite.deriveSecret(hs.handshakeSecret, + serverHandshakeTrafficLabel, hs.transcript) + c.out.setTrafficSecret(hs.suite, serverSecret) + + err := c.config.writeKeyLog(keyLogLabelClientHandshake, hs.clientHello.random, clientSecret) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + err = c.config.writeKeyLog(keyLogLabelServerHandshake, hs.clientHello.random, serverSecret) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + + encryptedExtensions := new(encryptedExtensionsMsg) + + if len(hs.clientHello.alpnProtocols) > 0 { + if selectedProto, fallback := mutualProtocol(hs.clientHello.alpnProtocols, c.config.NextProtos); !fallback { + encryptedExtensions.alpnProtocol = selectedProto + c.clientProtocol = selectedProto + } + } + + hs.transcript.Write(encryptedExtensions.marshal()) + if _, err := c.writeRecord(recordTypeHandshake, encryptedExtensions.marshal()); err != nil { + return err + } + + return nil +} + +func (hs *serverHandshakeStateTLS13) requestClientCert() bool { + return hs.c.config.ClientAuth >= RequestClientCert && !hs.usingPSK +} + +func (hs *serverHandshakeStateTLS13) sendServerCertificate() error { + c := hs.c + + // Only one of PSK and certificates are used at a time. + if hs.usingPSK { + return nil + } + + if hs.requestClientCert() { + // Request a client certificate + certReq := new(certificateRequestMsgTLS13) + certReq.ocspStapling = true + certReq.scts = true + certReq.supportedSignatureAlgorithms = supportedSignatureAlgorithms() + if c.config.ClientCAs != nil { + certReq.certificateAuthorities = c.config.ClientCAs.Subjects() + } + + hs.transcript.Write(certReq.marshal()) + if _, err := c.writeRecord(recordTypeHandshake, certReq.marshal()); err != nil { + return err + } + } + + certMsg := new(certificateMsgTLS13) + + certMsg.certificate = *hs.cert + certMsg.scts = hs.clientHello.scts && len(hs.cert.SignedCertificateTimestamps) > 0 + certMsg.ocspStapling = hs.clientHello.ocspStapling && len(hs.cert.OCSPStaple) > 0 + + hs.transcript.Write(certMsg.marshal()) + if _, err := c.writeRecord(recordTypeHandshake, certMsg.marshal()); err != nil { + return err + } + + certVerifyMsg := new(certificateVerifyMsg) + certVerifyMsg.hasSignatureAlgorithm = true + certVerifyMsg.signatureAlgorithm = hs.sigAlg + + sigType := signatureFromSignatureScheme(hs.sigAlg) + sigHash, err := hashFromSignatureScheme(hs.sigAlg) + if sigType == 0 || err != nil { + // getCertificate returned a certificate incompatible with the + // ClientHello supported signature algorithms. + c.sendAlert(alertInternalError) + return err + } + h := sigHash.New() + writeSignedMessage(h, serverSignatureContext, hs.transcript) + + signOpts := crypto.SignerOpts(sigHash) + if sigType == signatureRSAPSS { + signOpts = &rsa.PSSOptions{SaltLength: rsa.PSSSaltLengthEqualsHash, Hash: sigHash} + } + sig, err := hs.cert.PrivateKey.(crypto.Signer).Sign(c.config.rand(), h.Sum(nil), signOpts) + if err != nil { + c.sendAlert(alertInternalError) + return errors.New("tls: failed to sign handshake: " + err.Error()) + } + certVerifyMsg.signature = sig + + hs.transcript.Write(certVerifyMsg.marshal()) + if _, err := c.writeRecord(recordTypeHandshake, certVerifyMsg.marshal()); err != nil { + return err + } + + return nil +} + +func (hs *serverHandshakeStateTLS13) sendServerFinished() error { + c := hs.c + + finished := &finishedMsg{ + verifyData: hs.suite.finishedHash(c.out.trafficSecret, hs.transcript), + } + + hs.transcript.Write(finished.marshal()) + if _, err := c.writeRecord(recordTypeHandshake, finished.marshal()); err != nil { + return err + } + + // Derive secrets that take context through the server Finished. + + hs.masterSecret = hs.suite.extract(nil, + hs.suite.deriveSecret(hs.handshakeSecret, "derived", nil)) + + hs.trafficSecret = hs.suite.deriveSecret(hs.masterSecret, + clientApplicationTrafficLabel, hs.transcript) + serverSecret := hs.suite.deriveSecret(hs.masterSecret, + serverApplicationTrafficLabel, hs.transcript) + c.out.setTrafficSecret(hs.suite, serverSecret) + + err := c.config.writeKeyLog(keyLogLabelClientTraffic, hs.clientHello.random, hs.trafficSecret) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + err = c.config.writeKeyLog(keyLogLabelServerTraffic, hs.clientHello.random, serverSecret) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + + c.ekm = hs.suite.exportKeyingMaterial(hs.masterSecret, hs.transcript) + + // If we did not request client certificates, at this point we can + // precompute the client finished and roll the transcript forward to send + // session tickets in our first flight. + if !hs.requestClientCert() { + if err := hs.sendSessionTickets(); err != nil { + return err + } + } + + return nil +} + +func (hs *serverHandshakeStateTLS13) shouldSendSessionTickets() bool { + if hs.c.config.SessionTicketsDisabled { + return false + } + + // Don't send tickets the client wouldn't use. See RFC 8446, Section 4.2.9. + for _, pskMode := range hs.clientHello.pskModes { + if pskMode == pskModeDHE { + return true + } + } + return false +} + +func (hs *serverHandshakeStateTLS13) sendSessionTickets() error { + c := hs.c + + hs.clientFinished = hs.suite.finishedHash(c.in.trafficSecret, hs.transcript) + finishedMsg := &finishedMsg{ + verifyData: hs.clientFinished, + } + hs.transcript.Write(finishedMsg.marshal()) + + if !hs.shouldSendSessionTickets() { + return nil + } + + resumptionSecret := hs.suite.deriveSecret(hs.masterSecret, + resumptionLabel, hs.transcript) + + m := new(newSessionTicketMsgTLS13) + + var certsFromClient [][]byte + for _, cert := range c.peerCertificates { + certsFromClient = append(certsFromClient, cert.Raw) + } + state := sessionStateTLS13{ + cipherSuite: hs.suite.id, + createdAt: uint64(c.config.time().Unix()), + resumptionSecret: resumptionSecret, + certificate: Certificate{ + Certificate: certsFromClient, + OCSPStaple: c.ocspResponse, + SignedCertificateTimestamps: c.scts, + }, + } + var err error + m.label, err = c.encryptTicket(state.marshal()) + if err != nil { + return err + } + m.lifetime = uint32(maxSessionTicketLifetime / time.Second) + + if _, err := c.writeRecord(recordTypeHandshake, m.marshal()); err != nil { + return err + } + + return nil +} + +func (hs *serverHandshakeStateTLS13) readClientCertificate() error { + c := hs.c + + if !hs.requestClientCert() { + return nil + } + + // If we requested a client certificate, then the client must send a + // certificate message. If it's empty, no CertificateVerify is sent. + + msg, err := c.readHandshake() + if err != nil { + return err + } + + certMsg, ok := msg.(*certificateMsgTLS13) + if !ok { + c.sendAlert(alertUnexpectedMessage) + return unexpectedMessageError(certMsg, msg) + } + hs.transcript.Write(certMsg.marshal()) + + if err := c.processCertsFromClient(certMsg.certificate); err != nil { + return err + } + + if len(certMsg.certificate.Certificate) != 0 { + msg, err = c.readHandshake() + if err != nil { + return err + } + + certVerify, ok := msg.(*certificateVerifyMsg) + if !ok { + c.sendAlert(alertUnexpectedMessage) + return unexpectedMessageError(certVerify, msg) + } + + // See RFC 8446, Section 4.4.3. + if !isSupportedSignatureAlgorithm(certVerify.signatureAlgorithm, supportedSignatureAlgorithms()) { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: invalid certificate signature algorithm") + } + sigType := signatureFromSignatureScheme(certVerify.signatureAlgorithm) + sigHash, err := hashFromSignatureScheme(certVerify.signatureAlgorithm) + if sigType == 0 || err != nil { + c.sendAlert(alertInternalError) + return err + } + if sigType == signaturePKCS1v15 || sigHash == crypto.SHA1 { + c.sendAlert(alertIllegalParameter) + return errors.New("tls: invalid certificate signature algorithm") + } + h := sigHash.New() + writeSignedMessage(h, clientSignatureContext, hs.transcript) + if err := verifyHandshakeSignature(sigType, c.peerCertificates[0].PublicKey, + sigHash, h.Sum(nil), certVerify.signature); err != nil { + c.sendAlert(alertDecryptError) + return errors.New("tls: invalid certificate signature") + } + + hs.transcript.Write(certVerify.marshal()) + } + + // If we waited until the client certificates to send session tickets, we + // are ready to do it now. + if err := hs.sendSessionTickets(); err != nil { + return err + } + + return nil +} + +func (hs *serverHandshakeStateTLS13) readClientFinished() error { + c := hs.c + + msg, err := c.readHandshake() + if err != nil { + return err + } + + finished, ok := msg.(*finishedMsg) + if !ok { + c.sendAlert(alertUnexpectedMessage) + return unexpectedMessageError(finished, msg) + } + + if !hmac.Equal(hs.clientFinished, finished.verifyData) { + c.sendAlert(alertDecryptError) + return errors.New("tls: invalid client finished hash") + } + + c.in.setTrafficSecret(hs.suite, hs.trafficSecret) + + return nil +} diff --git a/key_schedule.go b/key_schedule.go index 0a88c96..310d92e 100644 --- a/key_schedule.go +++ b/key_schedule.go @@ -6,6 +6,7 @@ package tls import ( "crypto/elliptic" + "crypto/hmac" "errors" "golang_org/x/crypto/cryptobyte" "golang_org/x/crypto/curve25519" @@ -77,6 +78,16 @@ func (c *cipherSuiteTLS13) trafficKey(trafficSecret []byte) (key, iv []byte) { return } +// finishedHash generates the Finished verify_data or PskBinderEntry according +// to RFC 8446, Section 4.4.4. See sections 4.4 and 4.2.11.2 for the baseKey +// selection. +func (c *cipherSuiteTLS13) finishedHash(baseKey []byte, transcript hash.Hash) []byte { + finishedKey := c.expandLabel(baseKey, "finished", nil, c.hash.Size()) + verifyData := hmac.New(c.hash.New, finishedKey) + verifyData.Write(transcript.Sum(nil)) + return verifyData.Sum(nil) +} + // exportKeyingMaterial implements RFC5705 exporters for TLS 1.3 according to // RFC 8446, Section 7.5. func (c *cipherSuiteTLS13) exportKeyingMaterial(masterSecret []byte, transcript hash.Hash) func(string, []byte, int) ([]byte, error) { diff --git a/prf_test.go b/prf_test.go index f201253..ec54aac 100644 --- a/prf_test.go +++ b/prf_test.go @@ -87,20 +87,11 @@ func TestKeysFromPreMasterSecret(t *testing.T) { } } -func cipherSuiteById(id uint16) *cipherSuite { - for _, cipherSuite := range cipherSuites { - if cipherSuite.id == id { - return cipherSuite - } - } - panic("ciphersuite not found") -} - // These test vectors were generated from GnuTLS using `gnutls-cli --insecure -d 9 ` var testKeysFromTests = []testKeysFromTest{ { VersionTLS10, - cipherSuiteById(TLS_RSA_WITH_RC4_128_SHA), + cipherSuiteByID(TLS_RSA_WITH_RC4_128_SHA), "0302cac83ad4b1db3b9ab49ad05957de2a504a634a386fc600889321e1a971f57479466830ac3e6f468e87f5385fa0c5", "4ae66303755184a3917fcb44880605fcc53baa01912b22ed94473fc69cebd558", "4ae663020ec16e6bb5130be918cfcafd4d765979a3136a5d50c593446e4e44db", @@ -116,7 +107,7 @@ var testKeysFromTests = []testKeysFromTest{ }, { VersionTLS10, - cipherSuiteById(TLS_RSA_WITH_RC4_128_SHA), + cipherSuiteByID(TLS_RSA_WITH_RC4_128_SHA), "03023f7527316bc12cbcd69e4b9e8275d62c028f27e65c745cfcddc7ce01bd3570a111378b63848127f1c36e5f9e4890", "4ae66364b5ea56b20ce4e25555aed2d7e67f42788dd03f3fee4adae0459ab106", "4ae66363ab815cbf6a248b87d6b556184e945e9b97fbdf247858b0bdafacfa1c", @@ -132,7 +123,7 @@ var testKeysFromTests = []testKeysFromTest{ }, { VersionTLS10, - cipherSuiteById(TLS_RSA_WITH_RC4_128_SHA), + cipherSuiteByID(TLS_RSA_WITH_RC4_128_SHA), "832d515f1d61eebb2be56ba0ef79879efb9b527504abb386fb4310ed5d0e3b1f220d3bb6b455033a2773e6d8bdf951d278a187482b400d45deb88a5d5a6bb7d6a7a1decc04eb9ef0642876cd4a82d374d3b6ff35f0351dc5d411104de431375355addc39bfb1f6329fb163b0bc298d658338930d07d313cd980a7e3d9196cac1", "4ae663b2ee389c0de147c509d8f18f5052afc4aaf9699efe8cb05ece883d3a5e", "4ae664d503fd4cff50cfc1fb8fc606580f87b0fcdac9554ba0e01d785bdf278e", @@ -148,7 +139,7 @@ var testKeysFromTests = []testKeysFromTest{ }, { VersionSSL30, - cipherSuiteById(TLS_RSA_WITH_RC4_128_SHA), + cipherSuiteByID(TLS_RSA_WITH_RC4_128_SHA), "832d515f1d61eebb2be56ba0ef79879efb9b527504abb386fb4310ed5d0e3b1f220d3bb6b455033a2773e6d8bdf951d278a187482b400d45deb88a5d5a6bb7d6a7a1decc04eb9ef0642876cd4a82d374d3b6ff35f0351dc5d411104de431375355addc39bfb1f6329fb163b0bc298d658338930d07d313cd980a7e3d9196cac1", "4ae663b2ee389c0de147c509d8f18f5052afc4aaf9699efe8cb05ece883d3a5e", "4ae664d503fd4cff50cfc1fb8fc606580f87b0fcdac9554ba0e01d785bdf278e", diff --git a/testdata/Client-TLSv13-AES128-SHA256 b/testdata/Client-TLSv13-AES128-SHA256 index c471e88..da51f26 100644 --- a/testdata/Client-TLSv13-AES128-SHA256 +++ b/testdata/Client-TLSv13-AES128-SHA256 @@ -16,74 +16,107 @@ 000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| 000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 f0 8a 7b f4 40 |....z...v....{.@| -00000010 4d 58 1d e4 6a 58 d2 e9 dc 28 6b aa bc 2f 60 37 |MX..jX...(k../`7| -00000020 1c a3 3c ce 7d f2 97 8d ff 14 55 20 00 00 00 00 |..<.}.....U ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 cb 6b 3c f1 71 |....z...v...k<.q| +00000010 7d fb a1 03 ad d3 35 fb fa 9f f5 1b 58 62 c3 83 |}.....5.....Xb..| +00000020 18 d1 63 9f 14 57 e6 2d 82 f2 37 20 00 00 00 00 |..c..W.-..7 ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 a4 |..+.....3.$... .| -00000060 23 1b 72 8e 09 ba fa 75 6c f5 cc c2 2a aa 3d 0f |#.r....ul...*.=.| -00000070 2e c1 f4 70 40 28 9b df 1e 92 2e cb a2 d5 41 14 |...p@(........A.| -00000080 03 03 00 01 01 17 03 03 00 17 1f f5 f9 57 54 6a |.............WTj| -00000090 02 3f 12 97 48 cb e1 df 85 00 58 8d ab 1d 95 55 |.?..H.....X....U| -000000a0 3f 17 03 03 02 6d 22 f9 23 08 b9 f2 5d 4a f5 9b |?....m".#...]J..| -000000b0 41 b5 16 33 dc e9 45 34 a8 15 19 0b b0 1e a4 57 |A..3..E4.......W| -000000c0 46 52 d9 53 ec 3c 7c 5c 6c e0 f4 2e 90 55 cc 74 |FR.S.<|\l....U.t| -000000d0 65 92 a3 1e f0 75 f0 13 c5 65 42 fb 0a 9d f3 bb |e....u...eB.....| -000000e0 d5 61 b7 70 74 4d d1 e4 28 f3 8d 0b f5 de 04 fa |.a.ptM..(.......| -000000f0 46 28 11 b9 d3 50 82 00 97 32 ac ff 19 ce 27 6b |F(...P...2....'k| -00000100 e9 a9 ae ec c2 49 5a 61 bf a0 c0 57 71 c1 00 76 |.....IZa...Wq..v| -00000110 e4 81 40 c0 96 81 0a 38 d4 6c b7 7f e3 52 7c 3d |..@....8.l...R|=| -00000120 bb e1 c8 e0 ef c4 f5 85 8e bc fc d5 5a 00 50 ea |............Z.P.| -00000130 54 a1 1b da 8c 31 0f 9f bc 13 a2 d1 89 93 8a 08 |T....1..........| -00000140 47 c5 5e 78 be 09 b5 34 e3 33 d3 38 16 9e 71 ca |G.^x...4.3.8..q.| -00000150 25 5b 7c 35 08 e6 2c 07 c3 0b 37 60 4a 7b 32 49 |%[|5..,...7`J{2I| -00000160 9b c4 24 28 6d 76 3e 04 8e 14 22 e9 f9 0d 58 25 |..$(mv>..."...X%| -00000170 ad 0a 31 8b 1f 0c 2e 50 65 3f 77 fc f9 ab a7 60 |..1....Pe?w....`| -00000180 6a 52 b0 a9 e5 47 f6 91 b6 72 7a 52 b7 fb c5 93 |jR...G...rzR....| -00000190 0a 4f 3e 0c 0c 12 5e 30 94 10 5f ee af 4a 40 d0 |.O>...^0.._..J@.| -000001a0 ba 2c 5b 88 18 86 f1 96 8b cd 28 41 44 59 5e 69 |.,[.......(ADY^i| -000001b0 be 24 bb 97 99 7e 70 9f 9b d7 bb 54 0b 32 73 bf |.$...~p....T.2s.| -000001c0 af 71 82 6b b5 21 b6 a0 85 f2 73 56 98 83 60 c0 |.q.k.!....sV..`.| -000001d0 70 34 c6 1b 7b 40 ee 5d 8e 79 7d bc ac 6b 3c c9 |p4..{@.].y}..k<.| -000001e0 9c 47 13 d9 08 a9 05 d6 43 38 19 a0 d6 37 e0 48 |.G......C8...7.H| -000001f0 dd f5 b5 2b e2 d8 25 07 35 5b 20 2f 0e 01 4a 93 |...+..%.5[ /..J.| -00000200 63 5c 07 b6 3b 7f 62 9a 85 f8 57 0a 69 db 2c 9b |c\..;.b...W.i.,.| -00000210 11 60 6d f3 2b 31 cc 4e 7d 93 bb 13 39 fd 85 da |.`m.+1.N}...9...| -00000220 cb 52 84 7e 36 89 28 ef 8f b5 04 c2 37 c3 33 04 |.R.~6.(.....7.3.| -00000230 ba cb 1b 45 23 2f 2a 49 5d 95 6e 95 d4 32 07 ba |...E#/*I].n..2..| -00000240 0e 2f 57 0b b2 a5 d9 6b 3e a5 ab f2 97 89 b9 23 |./W....k>......#| -00000250 5a 3f 11 8d 45 68 3e bc 8a 59 14 36 bc cc 33 b3 |Z?..Eh>..Y.6..3.| -00000260 50 e3 15 b3 ec 03 ba 52 2f dc 70 5b c0 2a 45 28 |P......R/.p[.*E(| -00000270 49 2f d0 c7 a1 5c e4 24 35 b0 78 04 fe 87 54 69 |I/...\.$5.x...Ti| -00000280 c5 6e 56 a7 f5 7f d1 cb 23 af 4a 52 5f 7c 0e 1d |.nV.....#.JR_|..| -00000290 5a 83 6a 69 f5 bc 99 74 30 ee 3c 05 2b 12 52 09 |Z.ji...t0.<.+.R.| -000002a0 b0 a2 36 86 14 70 44 dd ec 37 44 4b 8f bf e0 76 |..6..pD..7DK...v| -000002b0 99 c5 84 90 37 59 a3 e3 f7 57 fa ac bb 6b 04 6a |....7Y...W...k.j| -000002c0 1e 0f 9f 1d 63 b7 3a 47 48 dc 3b bc ff 4d 47 94 |....c.:GH.;..MG.| -000002d0 43 38 cb d5 c5 74 bc 6d 0a f3 ea fa 23 ac e5 0b |C8...t.m....#...| -000002e0 fa b9 61 b1 d9 20 5c c6 c8 32 2e fa 11 f0 99 90 |..a.. \..2......| -000002f0 d4 96 42 3a b6 09 f3 11 c9 e1 d8 2d ae 80 6a b0 |..B:.......-..j.| -00000300 21 7a b6 2d d7 37 93 bf 53 ad 82 eb fc f1 8f 21 |!z.-.7..S......!| -00000310 f0 bc fd 17 03 03 00 99 47 59 11 95 5b 84 48 92 |........GY..[.H.| -00000320 22 b1 4b b0 70 57 5c b4 67 41 53 ed a7 5b 38 eb |".K.pW\.gAS..[8.| -00000330 bf 10 65 4a f9 21 c4 63 72 a1 d9 06 f2 21 55 df |..eJ.!.cr....!U.| -00000340 ff 7e ee ea a3 37 00 f1 14 41 2f 71 b1 8e f1 c0 |.~...7...A/q....| -00000350 5d 5b 72 4b a5 99 1d 80 c1 e6 94 5d 78 17 46 81 |][rK.......]x.F.| -00000360 50 1c 6d dc a7 79 60 67 60 ae af fe 6f 84 67 81 |P.m..y`g`...o.g.| -00000370 bd b5 20 8e 3f 33 28 e4 6a 94 82 37 9d ea 26 71 |.. .?3(.j..7..&q| -00000380 65 9d 7d a3 c7 32 be ec 3c d0 c6 b5 a6 55 e6 d7 |e.}..2..<....U..| -00000390 72 49 14 3b 08 41 cb d8 cc d4 52 b5 c8 35 71 79 |rI.;.A....R..5qy| -000003a0 7d 90 d2 21 0c 61 cb f6 1c 73 0a b0 7d ff 7b 3e |}..!.a...s..}.{>| -000003b0 44 17 03 03 00 35 c1 39 ac b9 1b 43 33 1e 43 35 |D....5.9...C3.C5| -000003c0 50 d0 2f b9 f9 cf f9 c3 dd 1c 4c 1e 52 46 bd dc |P./.......L.RF..| -000003d0 48 93 4f e3 f3 46 27 81 0b 80 34 b4 5b a5 06 c9 |H.O..F'...4.[...| -000003e0 3c 3a 12 e3 33 45 9d d5 0c 1e 98 |<:..3E.....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 50 |..+.....3.$... P| +00000060 5a 0c d6 69 92 a1 c7 2f 57 41 f3 29 b4 d3 a3 d3 |Z..i.../WA.)....| +00000070 b5 62 85 2a 1d 12 dc 46 d1 ac 96 b6 16 a5 39 14 |.b.*...F......9.| +00000080 03 03 00 01 01 17 03 03 00 17 1d a4 67 9f ac 28 |............g..(| +00000090 dc fe 5c 58 be c0 d0 72 9d 77 05 96 1a 9c ac 54 |..\X...r.w.....T| +000000a0 a2 17 03 03 02 6d 99 b0 fc 88 2d c2 fe 5b 84 1d |.....m....-..[..| +000000b0 38 f4 b9 70 87 b7 45 94 a5 09 e4 a3 2f 93 9a 9b |8..p..E...../...| +000000c0 ef 1f 80 a5 69 1d 81 47 d5 3e e0 f3 8e cd 1e 11 |....i..G.>......| +000000d0 ab 2d a1 1d a7 06 9c fd b4 dd aa 66 3e 8c e0 2f |.-.........f>../| +000000e0 cd e3 9a df 30 b4 c1 70 b0 be 2a 62 ba 3f f6 79 |....0..p..*b.?.y| +000000f0 aa 74 8b f4 4f 3e bc 5c 32 25 29 69 32 d4 90 6a |.t..O>.\2%)i2..j| +00000100 45 45 c5 93 94 4f 90 02 9c 23 45 e0 88 14 ae 6c |EE...O...#E....l| +00000110 e7 be 20 4e 47 ea 50 8e a0 c9 74 67 d2 97 d7 31 |.. NG.P...tg...1| +00000120 52 7e f7 5a a0 55 51 c8 8f 91 12 12 d7 0e 2b a5 |R~.Z.UQ.......+.| +00000130 ff 6c 5e 46 0d 2f d7 55 b6 c0 24 e1 5f e2 66 a0 |.l^F./.U..$._.f.| +00000140 32 c6 cf 88 d2 35 ec fd 17 1a ec 06 19 21 5b 6c |2....5.......![l| +00000150 eb ac 71 0a e6 3b d3 ea 51 05 33 45 28 ef 0b 25 |..q..;..Q.3E(..%| +00000160 7d 77 f1 76 6e fe f8 ef 74 21 ff 3b 7d 69 20 f2 |}w.vn...t!.;}i .| +00000170 7f 99 58 cd 8a 1a ab 87 c7 b0 9c a5 77 d7 b6 54 |..X.........w..T| +00000180 27 e5 5d ac 25 b7 7a 4a 4e 8a 74 cd 17 bf 86 4b |'.].%.zJN.t....K| +00000190 d4 fd a7 74 3f 03 68 d6 67 cf 05 3d 13 95 81 62 |...t?.h.g..=...b| +000001a0 80 1a f7 d3 3c 39 3d 8b 8c 68 20 4a c4 ee 16 06 |....<9=..h J....| +000001b0 5d 2f 3c cf 0d 26 0b 14 1a 4f 64 e4 25 c3 b5 63 |]/<..&...Od.%..c| +000001c0 86 32 82 78 ad 3e 79 c8 c8 e5 29 78 4a a5 98 81 |.2.x.>y...)xJ...| +000001d0 57 61 e9 3c dc f1 88 ba a9 5b 8d e1 c1 08 a8 ed |Wa.<.....[......| +000001e0 c8 06 3b f7 7a 60 c7 f2 cd ea 2f 7e 0c 30 1d 2b |..;.z`..../~.0.+| +000001f0 e4 d6 e3 46 2d 2f d5 26 4f 63 a4 b7 7a ff 8b 29 |...F-/.&Oc..z..)| +00000200 21 06 53 8d 99 57 f7 63 c6 72 96 cc 47 9a 80 cc |!.S..W.c.r..G...| +00000210 03 d5 96 3b bc ad 05 7e 49 f5 6f e6 f7 8c ae 55 |...;...~I.o....U| +00000220 b9 59 98 a6 93 22 43 9d 62 d9 ae ba 80 c6 82 e4 |.Y..."C.b.......| +00000230 d9 44 36 de ec dc 89 f3 45 ee bd 58 ff f5 fa de |.D6.....E..X....| +00000240 85 9b 0f fe 48 a1 0f 36 a4 ff f8 43 7b 18 74 49 |....H..6...C{.tI| +00000250 87 d6 bd f0 2b b3 fd 00 8a 86 8c d1 c1 7d 66 38 |....+........}f8| +00000260 f7 f9 72 36 77 17 7d 18 1c e6 4b 23 30 0c a4 e7 |..r6w.}...K#0...| +00000270 34 a9 39 83 3c 25 d1 de 0d f4 61 85 7b 01 92 9f |4.9.<%....a.{...| +00000280 e7 47 08 e2 fa 84 59 97 8c c5 55 47 27 4f 00 da |.G....Y...UG'O..| +00000290 ab 88 bf b8 fe 84 36 5f b4 f1 f1 28 75 55 29 af |......6_...(uU).| +000002a0 b8 a9 1b 46 dc 65 c7 97 27 4c 9a dc 00 59 3a 02 |...F.e..'L...Y:.| +000002b0 05 2e ed b0 f1 30 74 14 dd 51 08 44 b2 9f 38 1c |.....0t..Q.D..8.| +000002c0 03 3c 8f 00 ad 28 e9 27 bd 75 c3 4a f6 70 5e 79 |.<...(.'.u.J.p^y| +000002d0 7e 38 b3 df 5a 4f 69 11 f2 37 2f 52 cd cc f9 35 |~8..ZOi..7/R...5| +000002e0 16 49 01 24 32 8a e6 da 6b 4e a8 92 a0 d7 73 7b |.I.$2...kN....s{| +000002f0 fb 4c 0f 00 0e 82 d7 27 d3 22 f9 82 de 41 0b 1a |.L.....'."...A..| +00000300 2e d3 6c 97 cb 53 b0 6c 25 b5 65 86 8e 50 87 e0 |..l..S.l%.e..P..| +00000310 4b e6 6d 17 03 03 00 99 e1 28 35 0e 69 35 4a 55 |K.m......(5.i5JU| +00000320 12 ab 1c 8d 43 b4 a4 44 2b 56 3c 5d c6 1b 3a a8 |....C..D+V<]..:.| +00000330 df 0a e8 5d c2 a6 4f 83 c0 dc 07 87 53 0c 1f 63 |...]..O.....S..c| +00000340 e2 db f0 f7 16 e9 e8 f5 5f 5a f9 b1 f1 8d 36 1d |........_Z....6.| +00000350 53 47 60 3f ea 22 f7 6c 7c e7 e6 79 b1 85 f2 27 |SG`?.".l|..y...'| +00000360 5c ef 1e 99 52 5f 06 67 b3 8b 6d 13 83 06 c0 06 |\...R_.g..m.....| +00000370 ef fa 1b 9f 92 ec 5b e5 b3 25 64 79 6c 90 11 e1 |......[..%dyl...| +00000380 13 61 5b bf e9 4f 08 35 81 80 86 b7 77 ae 52 29 |.a[..O.5....w.R)| +00000390 9b 24 1e b0 55 23 ca 69 2f be d1 01 38 e8 79 a8 |.$..U#.i/...8.y.| +000003a0 e2 f7 61 0f 32 ca ff 09 44 84 84 79 19 22 54 1e |..a.2...D..y."T.| +000003b0 22 17 03 03 00 35 00 a1 ea bc bd 87 41 67 cc 5e |"....5......Ag.^| +000003c0 2f 4b 1c 52 c2 56 2c 69 7e 69 9b a3 06 69 b5 0b |/K.R.V,i~i...i..| +000003d0 6c 2e 1f de 53 9d 82 22 b7 36 9f ac 0e 7a 83 e5 |l...S..".6...z..| +000003e0 18 30 5b a9 b7 15 5a 16 87 97 1b |.0[...Z....| >>> Flow 3 (client to server) -00000000 17 03 03 00 35 da 94 f3 ee 16 d5 21 2c be 50 e4 |....5......!,.P.| -00000010 08 a2 44 90 27 9a 22 44 9f 04 c8 1f 6c 97 57 54 |..D.'."D....l.WT| -00000020 da 4b 84 f2 f5 7e be 86 2a 19 f3 ed b6 05 e8 30 |.K...~..*......0| -00000030 a2 ca ee a0 71 bb 75 8d ed fe 17 03 03 00 17 db |....q.u.........| -00000040 f3 61 60 d9 d2 80 c8 87 17 66 37 b6 e3 a3 27 37 |.a`......f7...'7| -00000050 c1 91 69 35 60 f6 17 03 03 00 13 e9 c3 a2 1e a4 |..i5`...........| -00000060 84 65 d3 bb 97 7a 14 1d 4e ae 8b 3f 42 ac |.e...z..N..?B.| +00000000 14 03 03 00 01 01 17 03 03 00 35 23 b7 8d d5 9b |..........5#....| +00000010 e4 f6 21 27 94 5b 11 76 5c 1f ff f3 19 f8 43 a2 |..!'.[.v\.....C.| +00000020 4d 07 68 00 a1 de 53 c9 80 f9 e7 fa 56 2c 6b b8 |M.h...S.....V,k.| +00000030 bc 09 5e 61 ea 0c da c8 89 1c 41 95 55 0d ef 94 |..^a......A.U...| +00000040 17 03 03 00 17 9a 18 9a 29 27 19 1b 06 da 82 78 |........)'.....x| +00000050 da 9a 91 77 36 47 ce 25 72 dc b9 26 |...w6G.%r..&| +>>> Flow 4 (server to client) +00000000 17 03 03 00 ea d6 5f a3 a5 14 87 cc 16 54 4c a0 |......_......TL.| +00000010 57 34 92 34 4d 37 fb 27 2b 71 f7 cf ac 93 96 87 |W4.4M7.'+q......| +00000020 9a 1f 8d 58 cf 3a 0d 8c 00 e2 03 b1 6e e1 9f d3 |...X.:......n...| +00000030 f4 dc 17 73 70 59 52 03 a7 fc 99 cb d2 2d 0e c8 |...spYR......-..| +00000040 91 5c 18 42 a3 20 9b 1c 20 86 bc 15 71 5b b4 7d |.\.B. .. ...q[.}| +00000050 80 8d cf 1d 15 33 b8 aa 66 9d f0 f9 08 dc 7c 78 |.....3..f.....|x| +00000060 b7 12 48 11 e1 00 1c e7 3e b3 8b fe bf 07 6d 6d |..H.....>.....mm| +00000070 4c 7b 16 90 cb 8c da 03 a8 81 94 5c 76 09 c4 bf |L{.........\v...| +00000080 26 b4 2b fd 9c 44 b5 c0 49 4b 83 58 70 80 8f 7f |&.+..D..IK.Xp...| +00000090 1e f8 d0 b4 5d 6e a2 78 f0 8c 9d 0b e8 1a 0b b4 |....]n.x........| +000000a0 66 7e 74 88 35 a4 d0 a3 ab 6c b5 2a 90 3c ba 09 |f~t.5....l.*.<..| +000000b0 9c 4e 72 b7 9a ba f9 1f bb a9 bf 03 94 43 7a d2 |.Nr..........Cz.| +000000c0 25 2f c5 e8 83 89 37 1f ac 7b 22 7c 01 7e dc 97 |%/....7..{"|.~..| +000000d0 b3 05 5c 60 5b 22 2f be 8c 05 e8 1a a6 51 45 13 |..\`["/......QE.| +000000e0 7f 20 b9 24 f0 a6 7c 1d 21 37 b8 6c 47 9e e8 17 |. .$..|.!7.lG...| +000000f0 03 03 00 ea c1 05 ef 9c bf 4c 1a d9 36 0d d4 d0 |.........L..6...| +00000100 68 47 ac 8b c6 13 71 17 94 e7 74 8e 21 78 91 79 |hG....q...t.!x.y| +00000110 50 19 4e 43 0d f7 e9 a9 62 e5 25 17 67 3e 38 27 |P.NC....b.%.g>8'| +00000120 dd 3b 5d e9 ec cb 0f b7 1f aa bd 75 76 f7 88 b8 |.;]........uv...| +00000130 c6 60 2f b7 ad 89 17 bb bd d2 86 55 72 bd 52 10 |.`/........Ur.R.| +00000140 21 4d 92 2d c1 a8 24 18 63 ca 0a 38 90 6b 39 5c |!M.-..$.c..8.k9\| +00000150 76 58 ad 62 e5 57 e0 b5 d5 af c9 9b 64 84 76 48 |vX.b.W......d.vH| +00000160 4d 7f a7 32 09 50 f7 9e 92 ad ed 8e b5 0f 10 27 |M..2.P.........'| +00000170 45 bc 58 fd be 91 35 97 ec 71 af d5 6a e1 04 26 |E.X...5..q..j..&| +00000180 00 b3 91 4f a2 be ba b8 06 f1 2f 43 21 a6 0b ba |...O....../C!...| +00000190 43 b5 dd a6 cd a6 b1 1c 37 28 90 26 c4 af 71 56 |C.......7(.&..qV| +000001a0 26 4d 39 39 60 88 8d ae d1 3e 6e 7e 15 cb 60 1c |&M99`....>n~..`.| +000001b0 d2 00 c3 02 b6 2b 81 ea 60 1b 3a a8 a4 dc 29 c0 |.....+..`.:...).| +000001c0 df 86 41 b8 27 89 3a ca bc 31 19 ca 18 08 9e 96 |..A.'.:..1......| +000001d0 e7 b4 6b 78 8d d4 9a 75 1a 48 fb 49 6a 29 |..kx...u.H.Ij)| +>>> Flow 5 (client to server) +00000000 17 03 03 00 13 d5 5b 3c bb 8b 4d f2 c2 d8 dc 0b |......[<..M.....| +00000010 5a 94 49 38 ed 11 91 8a |Z.I8....| diff --git a/testdata/Client-TLSv13-AES256-SHA384 b/testdata/Client-TLSv13-AES256-SHA384 index be6eea0..306d6c8 100644 --- a/testdata/Client-TLSv13-AES256-SHA384 +++ b/testdata/Client-TLSv13-AES256-SHA384 @@ -16,76 +16,109 @@ 000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| 000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 14 19 73 05 2c |....z...v....s.,| -00000010 b8 2b 70 cd 16 84 60 f5 61 03 95 f1 ac 51 2b eb |.+p...`.a....Q+.| -00000020 d5 6a e9 65 c9 35 ed 88 c2 aa bd 20 00 00 00 00 |.j.e.5..... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 d0 99 92 ec 66 |....z...v......f| +00000010 25 e2 c4 9f 90 fa 7c 03 49 b9 19 3e 75 1b 37 42 |%.....|.I..>u.7B| +00000020 2b cf b4 b7 93 81 29 ef 5a e7 c2 20 00 00 00 00 |+.....).Z.. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 02 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 0a |..+.....3.$... .| -00000060 ab 07 ce b5 0b 2d 94 fa 8b 55 ff 09 7a 69 35 a5 |.....-...U..zi5.| -00000070 01 d8 5c c5 84 92 ef e5 f5 45 09 48 78 48 28 14 |..\......E.HxH(.| -00000080 03 03 00 01 01 17 03 03 00 17 77 e1 72 79 f2 fc |..........w.ry..| -00000090 a1 c2 e5 04 92 0a 63 0b d3 a3 b8 15 6c e7 2a c2 |......c.....l.*.| -000000a0 3d 17 03 03 02 6d 6d a1 64 08 b2 95 9f 65 d8 bc |=....mm.d....e..| -000000b0 fc 1c 6e 4d 75 20 e6 08 ea 58 cc db b2 6f d5 58 |..nMu ...X...o.X| -000000c0 97 e8 8f 62 b0 a2 c0 84 20 4b 2d 43 a2 eb a1 98 |...b.... K-C....| -000000d0 93 c0 04 12 b4 9e 17 9b 45 f2 59 f0 9d ed 27 53 |........E.Y...'S| -000000e0 14 a5 c3 e0 46 5b 22 e4 76 b6 71 7e f6 cb 35 6a |....F[".v.q~..5j| -000000f0 ab 34 f9 da 93 b2 21 41 6b 72 73 5e 0c 5f 4e 70 |.4....!Akrs^._Np| -00000100 ff fe d3 50 48 de c8 e1 16 f7 c4 f3 24 ef 7f 0a |...PH.......$...| -00000110 0d bc 24 86 13 93 6e e3 8c d5 a2 a9 97 ee cd 40 |..$...n........@| -00000120 d6 6b 5a ef 88 62 b0 a0 f3 aa ac f1 7f 7c 0a ad |.kZ..b.......|..| -00000130 b7 98 57 aa 7d 89 bb 1e 88 3b 66 9c 34 98 1a 8e |..W.}....;f.4...| -00000140 5a a1 2a 3e 10 be 1b bd 86 43 b4 3f cc a4 0b d1 |Z.*>.....C.?....| -00000150 0c 36 a3 a5 f2 e3 40 a6 c3 5c ed aa 43 57 3e 22 |.6....@..\..CW>"| -00000160 4f eb 5c d6 e4 4e 8e 83 2a f8 25 db 63 49 d0 cc |O.\..N..*.%.cI..| -00000170 b2 6b 29 3a bc b4 f0 04 58 60 be 9d ab 8c 9e 06 |.k):....X`......| -00000180 df 1c 9b cf 49 a9 d2 cd 42 d3 5c 5a d6 2f b8 91 |....I...B.\Z./..| -00000190 76 a6 df 3a a2 6e 24 1c de 1f 63 7e c1 bc 1f 2a |v..:.n$...c~...*| -000001a0 20 4c af 9e 47 02 6f fd 8b ed 66 69 d6 76 cc d8 | L..G.o...fi.v..| -000001b0 f2 b4 ec 71 79 2d 1f 46 22 cb 28 6b be 8e 77 d8 |...qy-.F".(k..w.| -000001c0 24 34 9b 00 c8 e3 8d d6 5d 2a 58 a9 dc ae 21 0f |$4......]*X...!.| -000001d0 92 94 33 b9 cb 1a 89 79 2a eb e8 11 c9 d3 5a af |..3....y*.....Z.| -000001e0 f8 f4 1b ce 34 c8 79 24 ed 08 bd 80 a5 4a cc cd |....4.y$.....J..| -000001f0 21 b0 8b 89 b5 ff f4 03 ee cc 88 16 d9 cf 5f 38 |!............._8| -00000200 8b 67 ac c4 51 b9 f4 44 0c e4 47 83 ba 24 60 8a |.g..Q..D..G..$`.| -00000210 75 0d c2 3d 77 38 46 b1 db 37 57 af 78 aa 06 97 |u..=w8F..7W.x...| -00000220 ab 83 42 f1 96 8c 00 3f 6c 7f b8 ae 1d fb e1 10 |..B....?l.......| -00000230 4d fd 73 bb 37 a6 7d 5a 26 79 5d 7b e4 98 84 9c |M.s.7.}Z&y]{....| -00000240 a2 c4 12 5a b3 a4 bc 6e 35 bd a1 2d 58 e8 27 77 |...Z...n5..-X.'w| -00000250 e1 d6 c4 d5 fb 5a cb 64 6f 6e 4e e0 77 11 ca ba |.....Z.donN.w...| -00000260 30 f4 96 dd fd 95 36 d7 23 4d 87 17 b9 66 9e 23 |0.....6.#M...f.#| -00000270 54 d7 b2 0a 18 f3 11 6e 61 d1 b6 86 94 fb 5c 63 |T......na.....\c| -00000280 ed 6e 5b 60 80 01 51 47 7a d9 2e c1 8f ff 23 ba |.n[`..QGz.....#.| -00000290 75 8d 59 a6 5e 93 c5 10 44 6e 8f a5 59 ab 06 5b |u.Y.^...Dn..Y..[| -000002a0 e9 b6 85 8d 11 6c f8 9a 45 ac 57 b4 04 52 cd fd |.....l..E.W..R..| -000002b0 29 dc 50 ba 9f ec 5a 67 33 35 6b a8 88 2f 86 1b |).P...Zg35k../..| -000002c0 eb 44 54 5b 1d 7e 8a 3b 01 b6 9f d1 99 58 6a bb |.DT[.~.;.....Xj.| -000002d0 9e ab 03 ff 18 00 16 7c 3b 16 a4 d7 4e 1a 63 4f |.......|;...N.cO| -000002e0 69 2b ea 88 54 ed fe 21 45 7a 6e 3a ef aa 89 e7 |i+..T..!Ezn:....| -000002f0 b0 87 93 d8 99 12 6e 1c fd 81 f4 92 4f a3 17 c2 |......n.....O...| -00000300 78 e2 ef a6 eb be 01 6a 1b 4d 49 f7 1a 8f 0f 01 |x......j.MI.....| -00000310 72 bd 9e 17 03 03 00 99 01 71 8b a7 7e 19 d2 27 |r........q..~..'| -00000320 e5 dc 92 fd 6f 90 69 5a b7 7e 64 bd 82 5d 92 06 |....o.iZ.~d..]..| -00000330 6d 0c 65 67 a0 af 23 06 68 15 49 3e 02 65 45 dd |m.eg..#.h.I>.eE.| -00000340 6d 21 04 3e b8 26 de 4b b4 d0 14 77 26 43 79 16 |m!.>.&.K...w&Cy.| -00000350 70 7d f7 97 38 52 5c fd 6f f0 89 df 4e d7 56 4b |p}..8R\.o...N.VK| -00000360 03 10 b3 75 e8 55 8e bb b3 8d 7b 4e 8e a3 81 20 |...u.U....{N... | -00000370 08 1e ce db ee 31 9b 50 49 00 75 0f 96 97 63 98 |.....1.PI.u...c.| -00000380 6e 5e ae fe 8b 33 c5 6e ad 0c 7c 33 e6 ad e9 ba |n^...3.n..|3....| -00000390 74 ef b3 29 8c cc 7e 92 9c 36 4a ad 7e bf c8 09 |t..)..~..6J.~...| -000003a0 e7 1d 70 9a db 8c e6 78 56 70 31 41 2c f1 b1 54 |..p....xVp1A,..T| -000003b0 0b 17 03 03 00 45 0c b9 ad a0 58 fe 16 91 07 e5 |.....E....X.....| -000003c0 c3 e1 76 ee 5e 8a 42 02 80 fc e2 89 cd 6c 2d 7f |..v.^.B......l-.| -000003d0 f1 dc 41 44 e5 d2 d2 86 8b 51 f3 d4 cc 3b 8d 11 |..AD.....Q...;..| -000003e0 3e a9 ae 34 38 8b 5f 15 c5 fd 34 55 e8 47 58 9e |>..48._...4U.GX.| -000003f0 80 02 de 43 b8 42 e3 63 6b 3f c1 |...C.B.ck?.| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 7a |..+.....3.$... z| +00000060 cc 5a 50 25 51 9c 6f 4d 5a d4 dc a0 fa 55 00 33 |.ZP%Q.oMZ....U.3| +00000070 26 0e f7 12 14 9b c2 e0 77 8e ff d3 95 3f 0c 14 |&.......w....?..| +00000080 03 03 00 01 01 17 03 03 00 17 b1 10 59 e2 0b 67 |............Y..g| +00000090 69 df ef 28 e4 f3 9c fc df 48 25 d2 b6 86 68 48 |i..(.....H%...hH| +000000a0 a2 17 03 03 02 6d 91 c1 dd 49 92 5c 77 c1 3f 38 |.....m...I.\w.?8| +000000b0 7d 78 80 21 d1 cc 15 d4 30 ba 77 fb 64 2c ca 05 |}x.!....0.w.d,..| +000000c0 ea bc 88 46 51 47 fd bb 39 08 a8 a8 db 3d 22 86 |...FQG..9....=".| +000000d0 fd b0 78 17 ac 19 18 b4 bb 00 df bf 02 47 75 fb |..x..........Gu.| +000000e0 34 06 ea 66 1b ae 06 5c 03 2d 5a 8e a5 55 20 3a |4..f...\.-Z..U :| +000000f0 ca 1f e9 53 58 6f 7b e7 c4 fa fd 22 7a 7a 45 df |...SXo{...."zzE.| +00000100 7c a7 53 58 92 a4 f9 75 c6 17 b1 bb 68 7b 4e 59 ||.SX...u....h{NY| +00000110 26 af 4d 1d 18 6c 6a f9 9d 14 52 89 7a 1a dd 97 |&.M..lj...R.z...| +00000120 67 4c 4d cd 1c 3f 66 95 d0 9b 4f 77 cf 22 bf 80 |gLM..?f...Ow."..| +00000130 49 17 45 a9 8e 8c 88 3b 21 ce d7 b9 43 e4 ff ac |I.E....;!...C...| +00000140 44 c2 6a 48 60 77 a1 39 8a 92 0c 9b ca f7 da 66 |D.jH`w.9.......f| +00000150 36 9a 86 9f 6e 2d 9b 49 2a 25 30 72 4f 09 41 e5 |6...n-.I*%0rO.A.| +00000160 37 34 30 a4 f9 f9 59 14 22 89 e7 10 2e 71 ee ac |740...Y."....q..| +00000170 82 e9 30 f0 1a 09 2d b5 51 26 ba 71 6b 06 dd fb |..0...-.Q&.qk...| +00000180 e4 e3 be 96 60 04 1c c9 45 7c 1c 58 9f b1 ae d7 |....`...E|.X....| +00000190 6a b2 41 ce 2c b8 fb 07 0a 2d 47 92 53 95 c2 65 |j.A.,....-G.S..e| +000001a0 3c a2 b5 84 58 c2 ae 67 46 9d 79 1e f6 52 59 36 |<...X..gF.y..RY6| +000001b0 1b 72 fb 2a b7 6f 74 38 d7 c6 35 9d f5 ce 12 89 |.r.*.ot8..5.....| +000001c0 25 c5 3e 0e 40 f2 75 30 2b ee 02 61 54 c6 d5 8a |%.>.@.u0+..aT...| +000001d0 19 b0 be 03 83 cf c7 0b bc 56 88 62 3b 7f 80 4e |.........V.b;..N| +000001e0 e7 8b bd 7f 99 c4 63 76 3e da d7 51 96 c4 52 2d |......cv>..Q..R-| +000001f0 49 7a 8d 8e fe d0 01 bb 29 84 2e 55 70 69 fb ba |Iz......)..Upi..| +00000200 f8 6a 8e f4 7d e3 98 46 1b 52 f5 0f 9c 9d 73 29 |.j..}..F.R....s)| +00000210 4d a6 f4 32 ee 2e 67 5c f2 03 a4 12 5e 16 2b 1b |M..2..g\....^.+.| +00000220 98 b2 d3 6c ee f4 10 db 3d b1 7d 75 6e c0 6a bd |...l....=.}un.j.| +00000230 56 56 c1 7f ef f5 c5 fe f9 48 6e 8f 93 1f 5d c2 |VV.......Hn...].| +00000240 35 ee 2f 15 f5 bf d1 10 14 dd c8 69 08 f0 be a2 |5./........i....| +00000250 45 4b 96 9e 12 0a 7f fa 4b 41 78 9c 54 9f 10 97 |EK......KAx.T...| +00000260 4f a7 4b 06 af b3 ab 1a b9 b0 b3 02 11 08 c4 f4 |O.K.............| +00000270 21 fb 86 c5 e9 d9 87 37 d3 79 14 0a 09 c2 4f 7a |!......7.y....Oz| +00000280 1c c2 8e ee 00 b1 0a 78 4f ac f1 78 95 5e 93 95 |.......xO..x.^..| +00000290 a7 ad 44 87 a1 30 d9 5b 1b 13 c5 d8 93 77 2d 2c |..D..0.[.....w-,| +000002a0 68 02 ff c5 91 78 8b 1f 19 eb 53 ae 5c b7 8a e9 |h....x....S.\...| +000002b0 76 ad 62 6a 03 1f f1 ad 01 32 3f 9a 07 36 6b 0a |v.bj.....2?..6k.| +000002c0 80 df 8a 87 f3 76 60 53 1f a7 a9 87 92 87 0a 3f |.....v`S.......?| +000002d0 7d 6e f3 94 23 b6 6e ae cd 32 4f 1c e4 06 42 cc |}n..#.n..2O...B.| +000002e0 33 50 81 dc e3 7b 2b 7a e4 b9 40 63 b7 13 a9 1c |3P...{+z..@c....| +000002f0 6f 30 53 17 4a 6f 18 d7 98 e5 bd 2d ef c3 90 04 |o0S.Jo.....-....| +00000300 da 3b eb 3d 79 4f 34 fb af b1 1b b0 99 6a 7b 11 |.;.=yO4......j{.| +00000310 e0 34 b9 17 03 03 00 99 43 66 96 ed b4 0d 38 fa |.4......Cf....8.| +00000320 e5 41 89 50 30 42 59 f2 35 1e 55 7f ba 7e c8 d2 |.A.P0BY.5.U..~..| +00000330 c8 34 d1 68 56 22 99 09 76 44 51 e2 5d ba 54 d1 |.4.hV"..vDQ.].T.| +00000340 7d ea a7 15 37 0a c9 b0 3b b5 42 97 34 4e 47 21 |}...7...;.B.4NG!| +00000350 f8 4e 94 38 3a 29 c6 6a e6 c7 f8 fe ef 9a 7f 42 |.N.8:).j.......B| +00000360 d3 08 33 b2 c4 fb 63 a0 76 2d ff e9 e2 83 66 35 |..3...c.v-....f5| +00000370 b4 1c 7e 10 4a 1d 02 ea b3 ab 77 b2 05 08 ae d3 |..~.J.....w.....| +00000380 33 5b f0 68 dd 4f 7e 05 99 82 b2 86 a3 49 55 b2 |3[.h.O~......IU.| +00000390 71 52 8b d5 fe a7 ee 75 8c b9 6d 3b 24 eb 1b 0a |qR.....u..m;$...| +000003a0 70 f2 89 19 2e ed ff 66 06 bd 28 ee df 4f 53 60 |p......f..(..OS`| +000003b0 66 17 03 03 00 45 6a 8f 40 5a f8 80 ff a6 e4 aa |f....Ej.@Z......| +000003c0 bc 7f 25 8d 99 4c 4a 87 31 39 1a 11 88 ca f5 c6 |..%..LJ.19......| +000003d0 55 fb 6c 53 27 f8 c9 83 cd fc 91 dc cd ce 5d 9b |U.lS'.........].| +000003e0 70 9f 8d ca 17 82 7c d4 3a 57 87 22 4c 50 f6 ce |p.....|.:W."LP..| +000003f0 73 74 64 2d 83 3b 78 d2 29 d6 a3 |std-.;x.)..| >>> Flow 3 (client to server) -00000000 17 03 03 00 45 3b b4 6d 08 6d 86 92 01 79 ac 23 |....E;.m.m...y.#| -00000010 49 ba 86 5a cc 31 5b 50 6c f2 49 51 17 9a 63 ad |I..Z.1[Pl.IQ..c.| -00000020 11 ba a2 84 8c d4 25 c1 02 63 f8 23 9f a8 8e 6e |......%..c.#...n| -00000030 5e 6f ba 97 10 16 84 cf 3f 97 0f cc 5a 11 6c 79 |^o......?...Z.ly| -00000040 54 eb 2c 81 6c da 61 60 6a ed 17 03 03 00 17 66 |T.,.l.a`j......f| -00000050 41 78 50 23 cc b7 43 2b b9 6e 4c 8c 8c 68 3a 1a |AxP#..C+.nL..h:.| -00000060 ca 35 c8 79 62 dc 17 03 03 00 13 96 1f 8f 80 2c |.5.yb..........,| -00000070 4c a8 fa 30 1b 19 e7 34 a9 55 56 06 00 5a |L..0...4.UV..Z| +00000000 14 03 03 00 01 01 17 03 03 00 45 8b d1 99 f6 dd |..........E.....| +00000010 80 21 59 2a 8a 12 a2 e3 1b 57 50 bd 49 90 95 c0 |.!Y*.....WP.I...| +00000020 17 59 0a c1 55 ff 14 f1 3d 95 e6 c9 ce 60 c7 94 |.Y..U...=....`..| +00000030 24 a3 a2 45 69 7a b0 0d 9f 1e f4 79 2c a7 73 f3 |$..Eiz.....y,.s.| +00000040 d1 2a f5 cb f6 86 79 3f 84 77 58 66 6d 96 0e eb |.*....y?.wXfm...| +00000050 17 03 03 00 17 26 45 2f 9c 9d 50 44 2d e4 a0 ce |.....&E/..PD-...| +00000060 fa b5 0b 37 a4 52 bb f6 ec 86 80 64 |...7.R.....d| +>>> Flow 4 (server to client) +00000000 17 03 03 00 ea 66 4c 54 52 a3 b4 4a 24 0b 2f 8b |.....fLTR..J$./.| +00000010 03 f7 61 70 3b 2a 69 cf 93 95 57 88 b6 1b 6d 2f |..ap;*i...W...m/| +00000020 81 88 7f a9 fd 47 ee 88 00 1d 94 96 1e 37 09 d4 |.....G.......7..| +00000030 e0 fe 47 fe 7f 33 5a 5a 74 b8 ae 63 b8 12 b2 07 |..G..3ZZt..c....| +00000040 a6 7c 8c cd 15 6e 88 c1 41 f9 c5 c6 b6 62 08 9a |.|...n..A....b..| +00000050 f2 30 e5 cd 2b a8 be f1 b6 73 2d 97 21 b3 ac 42 |.0..+....s-.!..B| +00000060 2c 35 cb 3b 9f 4a f6 3d 82 b1 91 a5 15 0a 43 e5 |,5.;.J.=......C.| +00000070 3d 0b 86 db bf bb cf 5a ab 67 0a 32 4b e1 ec 7b |=......Z.g.2K..{| +00000080 9a ea ee 8f 82 f2 0d 27 58 3d d5 85 ea 13 2c ed |.......'X=....,.| +00000090 87 77 95 65 55 1f ca 55 83 01 6f ee 56 74 1f 97 |.w.eU..U..o.Vt..| +000000a0 f7 e5 aa b8 7a 76 24 51 fd 14 71 0f 34 58 99 0b |....zv$Q..q.4X..| +000000b0 da cf 99 38 a5 27 83 37 a8 73 6f 84 11 9c 67 d5 |...8.'.7.so...g.| +000000c0 bc ce aa 07 73 30 2d 13 d0 6a f4 d0 51 92 89 b4 |....s0-..j..Q...| +000000d0 d1 86 ed 50 a4 bf 95 63 77 d6 dc bc 40 75 f8 00 |...P...cw...@u..| +000000e0 f6 b2 16 30 65 1b 46 25 8e 2d c6 f7 f4 5b 70 17 |...0e.F%.-...[p.| +000000f0 03 03 00 ea 8e 55 c9 38 ba 01 57 ff 88 1b c0 b0 |.....U.8..W.....| +00000100 d5 de 46 e9 17 43 2d 38 e3 c9 c2 ea 07 67 d7 8d |..F..C-8.....g..| +00000110 ab 36 e0 86 06 b4 ba d7 0d 93 9c da 10 fe b9 8c |.6..............| +00000120 7f 2e aa 8f a8 67 fd 72 fa 7e 8c 17 79 69 b7 3e |.....g.r.~..yi.>| +00000130 02 15 4d 72 02 80 1f f1 c6 d2 55 a8 67 07 63 db |..Mr......U.g.c.| +00000140 c8 92 1e fb e4 73 cd f9 48 5e aa 9b 76 c4 3e 85 |.....s..H^..v.>.| +00000150 b7 2a 68 52 4d d9 4d be ba 74 f5 e0 5e 4b 3d d3 |.*hRM.M..t..^K=.| +00000160 78 24 bc ba 89 c4 6e ac 54 04 7d fd 6b ee 71 f9 |x$....n.T.}.k.q.| +00000170 19 02 77 3a a3 d4 27 ab c4 95 38 f4 16 b6 18 77 |..w:..'...8....w| +00000180 8d 2a 7e d7 45 64 64 39 6f 4d 87 be 99 53 a8 ac |.*~.Edd9oM...S..| +00000190 f9 5e a6 e0 3d 1f 64 26 c6 f5 27 34 c8 8d 2b 1b |.^..=.d&..'4..+.| +000001a0 ad 12 0c 95 59 5c 07 5e 44 bf aa b0 0f b3 8c 13 |....Y\.^D.......| +000001b0 a4 6f ed 6a af 58 dc 87 32 70 e4 6b 64 f8 44 37 |.o.j.X..2p.kd.D7| +000001c0 cf 4a b0 3f 57 34 05 1c b8 47 5e ba f2 93 cc b2 |.J.?W4...G^.....| +000001d0 8e 86 ef b0 3c ea 4f 75 cf 85 ba 6e 9d 22 |....<.Ou...n."| +>>> Flow 5 (client to server) +00000000 17 03 03 00 13 9b cd 58 dd 0c e0 fa bd 3b 5e 25 |.......X.....;^%| +00000010 e4 9a 24 33 39 f0 b7 bf |..$39...| diff --git a/testdata/Client-TLSv13-ALPN b/testdata/Client-TLSv13-ALPN index 291f49a..f46efbf 100644 --- a/testdata/Client-TLSv13-ALPN +++ b/testdata/Client-TLSv13-ALPN @@ -18,75 +18,108 @@ 00000100 ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 |._.).0..........| 00000110 5f 58 cb 3b 74 |_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 0a 4d aa 31 08 |....z...v...M.1.| -00000010 a9 02 77 7b 6e 39 6d cd dc 26 a1 21 15 64 b4 a8 |..w{n9m..&.!.d..| -00000020 c5 61 98 3c 41 c0 20 1a 58 0e 15 20 00 00 00 00 |.a..Q.(.| -000001c0 62 81 2d 8e 4c 86 2f e2 8a 87 79 bc 43 89 ce af |b.-.L./...y.C...| -000001d0 f5 08 4e 36 4f 0b 17 cf a3 05 a7 27 7c 21 2c 18 |..N6O......'|!,.| -000001e0 a0 51 f8 ef 38 de 80 99 54 bb 16 2d d2 65 76 95 |.Q..8...T..-.ev.| -000001f0 91 7b 81 36 ed 43 5e 44 f5 d5 6d 74 37 37 56 cb |.{.6.C^D..mt77V.| -00000200 7d 79 7b 7c 96 42 ba 74 8f 5c 6c aa 3d e4 57 90 |}y{|.B.t.\l.=.W.| -00000210 07 a7 d1 50 7e 16 54 ec 92 a6 e4 e2 6f cf 10 c7 |...P~.T.....o...| -00000220 1e 6f 24 4c 1a 5d 44 72 0f 10 22 2f 04 aa ca 55 |.o$L.]Dr.."/...U| -00000230 c6 d0 54 45 80 6d 87 ed 85 44 64 07 c5 71 ff 68 |..TE.m...Dd..q.h| -00000240 ae c5 f1 5c 8d 8a 4d 85 3b 68 65 b2 97 c7 2b bf |...\..M.;he...+.| -00000250 49 d8 76 ac 58 de ba 31 7f 10 92 85 4c cd f5 d7 |I.v.X..1....L...| -00000260 bc db aa f4 c8 81 95 fd 77 e8 9f 03 74 0e 15 a7 |........w...t...| -00000270 73 0c 6d 07 27 ce c3 23 cc 68 f0 82 ce 2b 8d 25 |s.m.'..#.h...+.%| -00000280 4e b3 e8 31 b6 e4 2b 4e bf b8 09 f7 ef 6e 64 89 |N..1..+N.....nd.| -00000290 23 03 03 bf 93 dd 3a 89 e1 cf d1 7b b8 72 8d 40 |#.....:....{.r.@| -000002a0 30 d4 06 be c4 78 a7 70 66 a5 90 36 86 e4 a1 53 |0....x.pf..6...S| -000002b0 59 81 68 04 bc 1b 5b b8 28 ff d0 78 75 2a 46 a7 |Y.h...[.(..xu*F.| -000002c0 3b 11 08 e3 cc fd 39 a4 d0 fa d0 ed cf 34 ce 6e |;.....9......4.n| -000002d0 02 a6 6c 1c 04 c3 a7 53 08 6c dc 8c 71 51 7c 9c |..l....S.l..qQ|.| -000002e0 f0 da 86 91 a0 f1 0d 04 fb 18 c3 89 1a b8 58 f7 |..............X.| -000002f0 50 9c cb 62 a6 d4 64 6b cd 7b 5c 33 1e d8 45 43 |P..b..dk.{\3..EC| -00000300 f6 72 cd 04 1a 7f e4 48 b2 16 17 9d 79 97 5c bc |.r.....H....y.\.| -00000310 fa 0a 06 b1 92 f1 b3 db 98 83 04 01 6a 2b 51 38 |............j+Q8| -00000320 17 03 03 00 99 82 ea 5b 85 f2 b1 05 63 fa 98 d3 |.......[....c...| -00000330 ad 0d ac ab 0a a2 95 81 1a 04 52 c0 9e 18 da 3d |..........R....=| -00000340 b6 36 a6 6f 35 1d c2 e0 e6 82 d6 0d ec b4 e1 02 |.6.o5...........| -00000350 95 43 e0 1e 3c 2b 96 8f 39 d0 49 33 ef 30 4f 05 |.C..<+..9.I3.0O.| -00000360 7a 2e 1b 04 39 d7 b3 4a 1a 24 20 11 1e d7 fb ea |z...9..J.$ .....| -00000370 28 57 68 79 53 7d f8 08 35 c4 c2 7a f5 73 19 76 |(WhyS}..5..z.s.v| -00000380 dc 56 fb 35 aa 6a b7 73 7b da 41 f3 9f 71 14 14 |.V.5.j.s{.A..q..| -00000390 b8 61 8e ab 82 5e 57 e8 af d2 31 95 ec 4f a7 01 |.a...^W...1..O..| -000003a0 f2 2b cc 75 1b b1 cd c6 25 c0 69 32 4d 02 53 73 |.+.u....%.i2M.Ss| -000003b0 80 ef c3 af 62 68 a7 82 15 dc e5 f2 8e 0f 17 03 |....bh..........| -000003c0 03 00 35 ca d4 d7 83 55 19 de 32 ec b2 9c 79 13 |..5....U..2...y.| -000003d0 e2 99 3b ae 9d 90 d1 ec 76 e9 89 be b0 59 9b e1 |..;.....v....Y..| -000003e0 fc 37 a7 84 5c 3c 03 e2 92 72 f9 ee d6 85 fc 42 |.7..\<...r.....B| -000003f0 f2 2f f6 ac bb 2b 25 a0 |./...+%.| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 fe |..+.....3.$... .| +00000060 4b d7 8f 01 60 9e 75 40 11 72 06 64 f7 66 62 a7 |K...`.u@.r.d.fb.| +00000070 49 81 d2 f6 65 59 10 4f 2c 68 d8 4c f0 f0 60 14 |I...eY.O,h.L..`.| +00000080 03 03 00 01 01 17 03 03 00 24 e3 64 26 bd f9 1c |.........$.d&...| +00000090 ce 83 56 88 a0 a5 eb e7 a5 c5 13 53 2d 61 69 8a |..V........S-ai.| +000000a0 74 32 46 dc fa b2 63 58 f2 31 6a 21 8f 18 17 03 |t2F...cX.1j!....| +000000b0 03 02 6d 5f 4f bf d0 9d 00 9d 2e c6 86 0b d5 37 |..m_O..........7| +000000c0 01 0b a5 ac d5 ee 9c 91 87 98 89 c9 bd 2f b3 b4 |............./..| +000000d0 10 7e 40 eb bb 6b 9e d6 cc 0b 1d 3a 18 06 a2 a5 |.~@..k.....:....| +000000e0 1d d4 53 82 a7 3b 28 3f 3f d5 0e 23 5a f7 ff e4 |..S..;(??..#Z...| +000000f0 3d a4 66 95 a8 d0 18 52 2c 94 c4 84 89 0f d1 05 |=.f....R,.......| +00000100 a2 34 95 da 7b 65 e2 9c 62 b1 11 cc 15 78 58 8f |.4..{e..b....xX.| +00000110 43 d8 d0 04 9b db bf 06 34 d6 33 3d 55 0b 53 39 |C.......4.3=U.S9| +00000120 9f 96 8f 67 34 6a f6 13 09 9b ae 61 b8 c5 cf 65 |...g4j.....a...e| +00000130 f1 b5 43 bb ee fb 9c d4 2d b1 7e 3a 59 4b 56 45 |..C.....-.~:YKVE| +00000140 d4 1f 75 b7 07 35 18 e7 bd ad b7 36 2f 63 0f 67 |..u..5.....6/c.g| +00000150 68 3f 42 4c 53 22 bc b9 41 2c e0 a3 95 54 6b 4d |h?BLS"..A,...TkM| +00000160 b9 e4 00 3f 89 11 53 7e cc 4d 8c 72 d7 d0 fe bf |...?..S~.M.r....| +00000170 20 81 20 d3 d3 a1 e6 c8 ba 5b 49 d7 96 9e 8f fb | . ......[I.....| +00000180 f8 30 d6 7e e5 4a 3b e6 a6 0d 0a 42 80 68 cf 06 |.0.~.J;....B.h..| +00000190 19 d7 86 63 8e 23 c0 37 71 f6 bc 8b bd ab 62 a5 |...c.#.7q.....b.| +000001a0 45 f4 37 ea 50 cc 82 c9 f4 28 11 1c 1b 90 9d f7 |E.7.P....(......| +000001b0 67 dc 58 d2 10 59 49 26 17 68 50 a9 6c d9 e6 46 |g.X..YI&.hP.l..F| +000001c0 c5 e8 b3 ba 01 a9 ff 33 5e 2c 7c d3 eb d2 35 56 |.......3^,|...5V| +000001d0 b2 21 37 94 40 c7 15 d6 6f 29 ee 02 c9 98 e7 04 |.!7.@...o)......| +000001e0 0c 56 e9 f9 21 91 e7 75 7c 8d a1 50 28 b3 da 76 |.V..!..u|..P(..v| +000001f0 45 af 22 80 77 17 2e 96 d8 5e 05 0f 63 21 c9 32 |E.".w....^..c!.2| +00000200 2b c0 69 e9 8a 07 40 0c 21 73 1f 7d e8 b1 11 45 |+.i...@.!s.}...E| +00000210 37 40 c8 26 66 98 e9 0a 95 ed 08 26 12 f3 79 17 |7@.&f......&..y.| +00000220 6d d8 92 11 4f c7 ee db 5d 77 98 1a 31 cd cc db |m...O...]w..1...| +00000230 1d 96 e8 b5 a1 ba be 0f b1 84 4a a0 55 c5 41 78 |..........J.U.Ax| +00000240 8d 96 ca a0 4e 4d 1e ed 34 54 2b 95 08 1f 00 a6 |....NM..4T+.....| +00000250 a8 d7 35 66 0a ad 2a ac c4 4b 5d 60 b8 89 1f af |..5f..*..K]`....| +00000260 65 c3 a6 10 4b 4c c1 d6 07 1b 3a dc 7c 00 3e a1 |e...KL....:.|.>.| +00000270 06 8e ac f6 4c 4f d4 88 31 3e df 5b 6b 95 19 ed |....LO..1>.[k...| +00000280 6e b5 d1 0a 5e bc 5e 69 3f 5a fc ed 71 14 66 c4 |n...^.^i?Z..q.f.| +00000290 a3 ef 82 d4 2b bc 7c 5a 34 20 33 77 e4 48 4b 82 |....+.|Z4 3w.HK.| +000002a0 66 51 12 ac cf 9b e5 5f 17 34 2f a5 47 fd ab 53 |fQ....._.4/.G..S| +000002b0 85 8e d2 d5 c7 b2 58 a5 d2 fa eb d8 59 f6 2a bd |......X.....Y.*.| +000002c0 37 fc 68 65 75 e4 5f be a7 d8 6a da 41 36 6a 33 |7.heu._...j.A6j3| +000002d0 f1 8d 6a 9d f0 23 73 6a 33 42 52 6f 41 80 a3 40 |..j..#sj3BRoA..@| +000002e0 48 65 16 d9 23 dd 66 93 eb c5 d3 84 10 8b 0b ec |He..#.f.........| +000002f0 d8 c1 c3 3f 08 07 18 ed d9 8e 1d a3 85 d1 70 ef |...?..........p.| +00000300 cd c1 90 e1 80 70 94 9d 05 41 3d 4e 8f 6b 91 d7 |.....p...A=N.k..| +00000310 5d b4 9c 72 c0 de 2d bb f0 d7 dd 29 c4 4e 82 56 |]..r..-....).N.V| +00000320 17 03 03 00 99 ed 9c 42 76 9b 6c 6d 4f db 8d ca |.......Bv.lmO...| +00000330 4f a9 6b de 10 6e 5e 9a 1b b8 5a bd 35 0f a6 0a |O.k..n^...Z.5...| +00000340 cd bd 9d 60 ac 4b c9 35 4e 2a 70 5f 13 07 3f 4a |...`.K.5N*p_..?J| +00000350 bd 3c 9e 85 ef 6d cd 4e 91 c0 83 3e bc ac c7 03 |.<...m.N...>....| +00000360 fa 9d 3b 11 28 de d1 8e de c5 d3 3f cf cc ff 7b |..;.(......?...{| +00000370 63 27 51 4c ea 11 24 43 c5 24 20 69 f3 71 9f 1c |c'QL..$C.$ i.q..| +00000380 c5 a8 6f 4a 10 1b 4f 20 6c fa bc ab 79 b3 c7 15 |..oJ..O l...y...| +00000390 de 47 4d 74 19 65 49 38 31 15 cd c8 51 68 fa 74 |.GMt.eI81...Qh.t| +000003a0 c8 2f cf 34 17 35 0a 29 0c 45 c7 8a 99 1e 3e 18 |./.4.5.).E....>.| +000003b0 29 74 b6 be 9d ea b1 ab f4 0c d7 7f f3 16 17 03 |)t..............| +000003c0 03 00 35 e6 eb 90 3b 27 87 1b d4 7b a6 77 95 4a |..5...;'...{.w.J| +000003d0 2f b7 52 59 c7 4c 44 75 80 ca a3 04 ea 1a ba df |/.RY.LDu........| +000003e0 69 4c 42 97 a5 ad a8 67 4d c3 7d a7 83 33 8a c5 |iLB....gM.}..3..| +000003f0 ec af 2b c9 bc 32 91 8b |..+..2..| >>> Flow 3 (client to server) -00000000 17 03 03 00 35 cc 3b 0d 48 9a 16 49 7c 30 93 a1 |....5.;.H..I|0..| -00000010 ad ad f3 1d 8c ba 5b 16 af bd 40 36 31 0c aa 64 |......[...@61..d| -00000020 0c b0 2b bd d2 24 6e e8 07 30 94 e2 22 c8 c4 b8 |..+..$n..0.."...| -00000030 3c 7a 36 f6 dd 4c be 4c ef 68 17 03 03 00 17 f6 |4B,.3......| -00000050 b5 32 fd a4 5c f1 17 03 03 00 13 d6 00 df 9b 19 |.2..\...........| -00000060 38 a4 5e 5a 95 53 b6 10 80 79 1a 31 6b 4d |8.^Z.S...y.1kM| +00000000 14 03 03 00 01 01 17 03 03 00 35 0c 04 d4 20 a9 |..........5... .| +00000010 67 8e 45 d1 59 75 b8 1d 89 da a3 97 ae 3f f7 a4 |g.E.Yu.......?..| +00000020 64 3f d4 e2 05 45 da 2e e7 a0 c3 32 a4 19 40 b6 |d?...E.....2..@.| +00000030 af 8f cf 2c fe d2 14 88 18 cf 65 06 e3 91 a5 de |...,......e.....| +00000040 17 03 03 00 17 f9 61 2b d5 c3 68 88 6f d8 86 23 |......a+..h.o..#| +00000050 f1 7d 58 5c 75 8c 70 24 5b 4f de 74 |.}X\u.p$[O.t| +>>> Flow 4 (server to client) +00000000 17 03 03 00 ea 33 85 9d 72 d6 99 11 8b 5d b1 a2 |.....3..r....]..| +00000010 e8 b6 7c 00 b6 0b 4f cd 08 89 51 a5 86 4e db 28 |..|...O...Q..N.(| +00000020 67 50 03 f7 a6 6e 02 0a 3a 3b 7c 35 74 cc 87 d8 |gP...n..:;|5t...| +00000030 eb da 9a 07 9a 66 ce 1d 4d eb 62 51 fb 59 6f 45 |.....f..M.bQ.YoE| +00000040 14 18 40 5b 8d e6 35 17 fe dd 8d d3 56 3d 81 18 |..@[..5.....V=..| +00000050 83 a8 af 95 90 0a cf 6a 76 d0 a6 07 7e 1c 71 1c |.......jv...~.q.| +00000060 e6 c5 2f ce 47 b7 73 6d 8b 06 3a fd e8 ce 7e 34 |../.G.sm..:...~4| +00000070 7e 6c 5c ae d3 8d 3a c0 61 b6 f9 73 07 7b 4a 3f |~l\...:.a..s.{J?| +00000080 0d b9 fc f2 5e 70 13 09 c1 a6 16 04 2e 13 db 12 |....^p..........| +00000090 ab 1a 10 df c5 53 00 f8 58 46 63 86 e1 47 8a 25 |.....S..XFc..G.%| +000000a0 88 95 d4 53 dd 8c df ae 38 15 86 70 ad 8f c0 c7 |...S....8..p....| +000000b0 a6 ba 2a ac 4b c3 54 aa 00 41 43 1c 2e 30 47 a5 |..*.K.T..AC..0G.| +000000c0 bf 6c e5 c2 78 67 b4 07 3e fb 11 b5 87 8d 51 92 |.l..xg..>.....Q.| +000000d0 47 81 6b 8e 2f f9 5d 4e 66 25 5a b5 3b 92 9a d0 |G.k./.]Nf%Z.;...| +000000e0 e0 b6 63 28 d2 80 ba c7 97 95 1a ef d9 1c c8 17 |..c(............| +000000f0 03 03 00 ea 6a 98 5d 82 1c f0 42 0a 87 39 0c 0c |....j.]...B..9..| +00000100 cd e7 0b 16 1b 93 0f 1f ce 03 1a 1c c1 64 89 a2 |.............d..| +00000110 bb b3 73 33 0e 1b b5 7f 6f 53 73 86 cb 37 57 1a |..s3....oSs..7W.| +00000120 8e 1d 59 c8 5c 81 29 19 1b ca 8e 42 31 34 06 e7 |..Y.\.)....B14..| +00000130 43 a9 4c cd 91 45 4d 1e 48 31 57 50 10 fd 9e aa |C.L..EM.H1WP....| +00000140 b6 f4 14 a3 ff b2 c3 47 3e f2 3e 5a b9 5c 7a c6 |.......G>.>Z.\z.| +00000150 26 1a 91 7e c3 3a e3 7e a4 38 cd 83 89 85 8f f2 |&..~.:.~.8......| +00000160 fa c1 e3 1e 53 3d bd 54 ed 21 74 fb ff f0 d9 e9 |....S=.T.!t.....| +00000170 d5 b7 46 1c 6e 1d 9c 79 5e a7 32 97 79 8f 69 70 |..F.n..y^.2.y.ip| +00000180 e7 5c ad 7f 58 1a 0b af 16 dc fe 35 01 e3 bf 42 |.\..X......5...B| +00000190 be 78 6f 39 d0 a9 c8 6c 48 bd b0 c8 fb 5c f7 1d |.xo9...lH....\..| +000001a0 1a 3f 79 7a d9 7c 07 ab 11 1b 0b bb 30 88 bf 59 |.?yz.|......0..Y| +000001b0 36 79 5e 0b 23 2e 70 4e 84 f5 ab 6d b3 5d f6 ff |6y^.#.pN...m.]..| +000001c0 40 09 66 f2 89 af 58 fb 0c 29 fb 7d f6 be 97 b6 |@.f...X..).}....| +000001d0 1b 84 53 b5 a2 f2 2b a6 d5 f4 c9 16 70 b8 |..S...+.....p.| +>>> Flow 5 (client to server) +00000000 17 03 03 00 13 3c 30 88 da 6f 10 92 66 99 de 69 |.....<0..o..f..i| +00000010 ea 74 e4 a2 7a d3 b8 d4 |.t..z...| diff --git a/testdata/Client-TLSv13-CHACHA20-SHA256 b/testdata/Client-TLSv13-CHACHA20-SHA256 index 1cc7a4f..8f606cd 100644 --- a/testdata/Client-TLSv13-CHACHA20-SHA256 +++ b/testdata/Client-TLSv13-CHACHA20-SHA256 @@ -16,74 +16,107 @@ 000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| 000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 7b 81 36 84 98 |....z...v..{.6..| -00000010 a3 9c d6 2d a5 38 91 94 a3 df 3a d2 ad 4b b6 60 |...-.8....:..K.`| -00000020 12 f2 fa 04 f4 1c a1 e4 55 43 f3 20 00 00 00 00 |........UC. ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 8d 7b 1d 2a 66 |....z...v...{.*f| +00000010 8f 54 f0 d0 59 a6 ef ba aa 1a ba 98 bf 02 45 f5 |.T..Y.........E.| +00000020 56 69 80 67 e4 72 f4 d7 56 a1 ec 20 00 00 00 00 |Vi.g.r..V.. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 eb |..+.....3.$... .| -00000060 45 9d e3 42 6c 04 45 5c 46 28 7d 88 60 44 32 74 |E..Bl.E\F(}.`D2t| -00000070 e8 8c ca 9d f6 71 ec c4 11 d5 11 1d 04 aa 47 14 |.....q........G.| -00000080 03 03 00 01 01 17 03 03 00 17 db ed 81 c0 66 7b |..............f{| -00000090 80 d4 91 4c 78 75 7f af d2 60 c8 bd 35 45 7e 36 |...Lxu...`..5E~6| -000000a0 5a 17 03 03 02 6d a5 9c 0f 75 69 8d 43 05 50 35 |Z....m...ui.C.P5| -000000b0 39 ec 82 e2 ba 01 09 c7 f0 47 1f ab 50 f3 6b aa |9........G..P.k.| -000000c0 83 8c eb db 0d 5c 86 ba fd 8f 63 30 1a 48 3e 62 |.....\....c0.H>b| -000000d0 ed 6a bc 9c 71 2c 33 e4 55 43 bb 67 86 c2 45 06 |.j..q,3.UC.g..E.| -000000e0 fd 9c 50 3e a8 5e 94 14 58 65 27 cc 12 0d 98 c3 |..P>.^..Xe'.....| -000000f0 68 79 8a 20 b5 a5 0d 0a d6 93 d8 a2 ee 79 64 2e |hy. .........yd.| -00000100 be f3 20 ff d4 2e 6b b0 4e 76 3c 0f 28 85 bc e6 |.. ...k.Nv<.(...| -00000110 91 bd f3 cb 60 75 41 4c d0 23 b4 df c2 c9 4b 8b |....`uAL.#....K.| -00000120 6d 3b fd 7c 93 90 a5 f8 5f d0 70 42 aa a6 c1 02 |m;.|...._.pB....| -00000130 10 ae 24 71 33 43 98 4a 96 d1 de de 6c 8e a1 98 |..$q3C.J....l...| -00000140 bf 08 bb 0c 08 ad 31 bf 25 19 cd c2 54 93 15 e6 |......1.%...T...| -00000150 e4 da c3 da 98 67 fc 1f 7a ce 57 d6 6a 53 82 67 |.....g..z.W.jS.g| -00000160 50 f5 c8 9d b5 92 46 4f 84 a4 e7 14 e0 03 4f 40 |P.....FO......O@| -00000170 a9 df 76 c3 14 06 36 4f be 03 8f e9 cd a6 57 9c |..v...6O......W.| -00000180 da 98 61 a0 2e ba 74 fc 9f f2 c8 87 9d ed fb 87 |..a...t.........| -00000190 de db 9c 15 a0 5c 7b 5a ab af c7 fa 5a ab d1 c0 |.....\{Z....Z...| -000001a0 13 64 12 c0 5d 36 b5 fd 4d 80 df 26 cd ef c0 ca |.d..]6..M..&....| -000001b0 83 e5 3a 55 58 2a 63 5c 38 e7 e0 9c 15 cb 76 14 |..:UX*c\8.....v.| -000001c0 5f 7a 9a 8f 9f 03 83 3e 7d 9e 61 17 2a 6b c8 ff |_z.....>}.a.*k..| -000001d0 dc f9 01 aa 5f e1 44 ea 2c 09 60 ac 0b 25 e4 52 |...._.D.,.`..%.R| -000001e0 0e 21 86 6f d4 92 2d eb 95 0a 87 6d 91 ee 27 05 |.!.o..-....m..'.| -000001f0 e2 e2 88 13 eb ac 8b f8 45 c4 88 eb 76 43 10 d8 |........E...vC..| -00000200 26 de de b0 9b 4c 14 1b 2c db 93 8e de 46 a9 9e |&....L..,....F..| -00000210 df 87 df 88 69 a8 15 ae cf 3c a7 3d ae 70 3d 2a |....i....<.=.p=*| -00000220 22 eb 01 2e e1 29 23 2f 8a ad cf 54 25 fb 8b 0a |"....)#/...T%...| -00000230 1c 70 b8 0c 34 e5 49 9e c1 cd 98 02 85 42 22 56 |.p..4.I......B"V| -00000240 b8 da 9b 48 cc 87 84 f9 f1 94 e1 bc 5a 01 a1 3f |...H........Z..?| -00000250 de 7c ac 03 d3 75 88 8d 22 6e f8 6e e1 f8 4b 9c |.|...u.."n.n..K.| -00000260 0b 13 7e f6 1b 0e 22 ce 62 69 3d 66 55 87 a2 a1 |..~...".bi=fU...| -00000270 01 9e 2b 3c 60 80 b3 c6 d9 fc 9a 4c 0e 89 83 44 |..+<`......L...D| -00000280 8c 02 64 70 e7 71 b5 e0 6c f1 44 cc bf 3e 03 95 |..dp.q..l.D..>..| -00000290 a9 46 6a f3 f6 1e ea 19 bb 8c 62 92 17 bc cf 2d |.Fj.......b....-| -000002a0 e5 af ca 2d 66 6d ed c1 13 f6 89 55 fc 5c 51 12 |...-fm.....U.\Q.| -000002b0 30 02 78 58 96 7c 8b 28 68 56 7b f7 c4 48 03 5b |0.xX.|.(hV{..H.[| -000002c0 5f 46 ef 9c 1d 7e 4c 0a b9 de 37 df 90 86 7c 1d |_F...~L...7...|.| -000002d0 e6 af dc 85 c5 03 6f a2 38 d2 2a f3 33 5c 27 06 |......o.8.*.3\'.| -000002e0 c4 1e 44 61 1b 7b 28 3c 3d ca 32 d2 9b 8b 59 9a |..Da.{(<=.2...Y.| -000002f0 42 7c b8 23 4d 81 ca ce 02 f1 bc 87 f2 dd 42 2f |B|.#M.........B/| -00000300 f0 c4 97 32 b9 a5 44 c2 12 96 ca cf fd 95 14 c8 |...2..D.........| -00000310 12 47 0a 17 03 03 00 99 ff 36 e6 aa 19 66 0f 3d |.G.......6...f.=| -00000320 c1 cd b3 8b b3 51 78 a1 bb d6 c7 dc 1a ee ae 82 |.....Qx.........| -00000330 35 b5 b9 71 a9 0e a2 d0 d2 0f d7 cf c9 29 a3 2e |5..q.........)..| -00000340 57 21 ac 8e 37 01 47 1c 26 83 f7 15 69 44 c6 27 |W!..7.G.&...iD.'| -00000350 f9 4c e3 b2 5e 2f 7a 57 55 05 ef c6 89 1c f0 23 |.L..^/zWU......#| -00000360 ce 46 44 26 5b d8 2b ff 8a 8b 8b dc 94 73 1a a3 |.FD&[.+......s..| -00000370 46 15 57 d3 8b 03 2b d3 83 7b 45 d9 28 b0 2b 96 |F.W...+..{E.(.+.| -00000380 6a de 74 2a dd ca 12 ab 55 1e 8a b7 a2 6a b6 8e |j.t*....U....j..| -00000390 42 fe c0 35 16 d8 3f f7 f5 58 5d 7a 6c 3c 8d 71 |B..5..?..X]zl<.q| -000003a0 a3 8e 88 91 97 69 1d 35 e0 47 5d 3d 99 48 96 29 |.....i.5.G]=.H.)| -000003b0 1b 17 03 03 00 35 da 2c 98 c0 1b 27 40 d0 89 d0 |.....5.,...'@...| -000003c0 90 76 97 c1 0a 76 33 17 0e a0 cb 15 5a eb ce 78 |.v...v3.....Z..x| -000003d0 6f ba db da 20 38 94 75 dc 1a 42 c6 2e ef f4 46 |o... 8.u..B....F| -000003e0 12 ac 0e 56 56 32 e6 1c 2e 29 31 |...VV2...)1| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 c8 |..+.....3.$... .| +00000060 b8 1d 9b 00 85 3c 1c 1d 1f 5e 88 e8 ea 38 1d 63 |.....<...^...8.c| +00000070 f4 99 b0 89 a5 c4 4e 7d 15 49 ca 27 05 26 10 14 |......N}.I.'.&..| +00000080 03 03 00 01 01 17 03 03 00 17 07 34 7c 5e 3f 52 |...........4|^?R| +00000090 c4 42 ed d9 50 e2 a6 cc 6e 0e 93 27 bf c1 97 d6 |.B..P...n..'....| +000000a0 78 17 03 03 02 6d 1c 60 91 f4 1b fd 8f 9b 89 8b |x....m.`........| +000000b0 65 50 19 c9 41 25 9e 35 8d 75 aa ec 5f 88 bf 6c |eP..A%.5.u.._..l| +000000c0 85 33 02 c3 01 6d 3c 5c 86 aa 12 22 35 49 e0 81 |.3...m<\..."5I..| +000000d0 4b e3 f2 ec 75 12 95 ed b4 aa f3 0e 7d bf e6 a8 |K...u.......}...| +000000e0 5d a3 6c 82 f7 f0 1e f7 e7 e8 73 af 14 77 24 ea |].l.......s..w$.| +000000f0 5f bc 25 88 95 93 bb 61 84 f9 36 95 b9 12 31 ff |_.%....a..6...1.| +00000100 f8 19 f0 76 d7 4a 1f a6 77 33 75 82 70 a7 98 71 |...v.J..w3u.p..q| +00000110 5b dc c0 d6 9c 85 c2 41 e3 d0 32 b1 e5 c0 42 8c |[......A..2...B.| +00000120 e8 32 38 ad 03 3a db 46 66 0c 63 0f 65 f6 ed 66 |.28..:.Ff.c.e..f| +00000130 34 ec c6 23 db e3 25 3e ec eb 44 21 76 7c 35 0f |4..#..%>..D!v|5.| +00000140 f2 2c 0f 92 9c db 8f 3e de 46 e8 af f8 6e c4 82 |.,.....>.F...n..| +00000150 91 5e a3 c2 de f7 73 3c 1c e2 84 42 02 a8 bf fb |.^....s<...B....| +00000160 04 96 a4 a7 f4 4c c2 d7 1e 1e 6a e2 82 68 58 07 |.....L....j..hX.| +00000170 a0 f4 e9 91 c1 bc f7 d6 d7 d7 63 6a e7 a3 9c fa |..........cj....| +00000180 69 57 28 e9 db 4e d1 4d 65 9a 05 41 a9 71 47 97 |iW(..N.Me..A.qG.| +00000190 17 0b 95 79 8e 60 90 ee 4c 75 e0 c4 10 c8 21 e7 |...y.`..Lu....!.| +000001a0 ab 62 ab a9 e7 25 86 80 93 76 f7 a2 2a c4 d2 9f |.b...%...v..*...| +000001b0 59 2a 15 7a 88 c0 8d 57 01 ab f2 8e 40 5d b5 49 |Y*.z...W....@].I| +000001c0 7f d4 1e 7f 4e ae ad bd 8c bc 2d 5f 91 3f a7 6c |....N.....-_.?.l| +000001d0 ce 0a 8c c7 53 66 4e 28 31 16 ab 05 dc 78 f6 f4 |....SfN(1....x..| +000001e0 5d b3 eb 38 e1 c1 53 11 11 97 69 4a 86 14 fa 34 |]..8..S...iJ...4| +000001f0 c7 ab 6d 2d 31 17 bf a7 d8 1a 9f bf 2f 4c c9 50 |..m-1......./L.P| +00000200 5e 21 30 b1 98 ac f3 46 a2 d9 4b 67 e7 44 cd 0c |^!0....F..Kg.D..| +00000210 77 2b 72 1c 6d e6 65 1b 28 6d d1 05 bb a6 15 54 |w+r.m.e.(m.....T| +00000220 5d 93 22 e0 e4 e8 3e 99 8c 18 18 27 a7 18 c2 0c |]."...>....'....| +00000230 6c fb 16 b6 ab f1 91 f1 ad 84 b3 53 30 27 b8 29 |l..........S0'.)| +00000240 82 c8 28 06 19 c8 44 3f 45 10 67 92 6a ff 94 47 |..(...D?E.g.j..G| +00000250 49 b2 fd 08 03 15 bd f7 c9 34 cc ad 84 9c 6d 08 |I........4....m.| +00000260 15 e8 df 10 3c 7d 28 5f 9d 77 07 49 47 2f ae 61 |....<}(_.w.IG/.a| +00000270 af 3b 8f 19 63 f7 b3 29 3c 45 4e 0d 9d 03 97 74 |.;..c..).7...E).V..._VG| +00000300 c2 4f cb ca 7c 86 8e ed 72 3d 3f e9 bc 38 a7 c1 |.O..|...r=?..8..| +00000310 59 8b a2 17 03 03 00 99 dc 71 24 a3 c4 ab 62 4c |Y........q$...bL| +00000320 26 c3 7c 73 d3 e9 fd 4b 82 95 30 b8 3f 87 7e bf |&.|s...K..0.?.~.| +00000330 c1 60 40 5f 6c 7f 8d db 0e 4e 91 d4 b4 02 66 ef |.`@_l....N....f.| +00000340 b8 b1 a8 af 42 a3 7d 5c 6a 97 81 f6 cb c8 d2 8b |....B.}\j.......| +00000350 7e 1d 09 e5 f1 a4 aa 5e c9 b6 f4 b7 43 2f 21 ba |~......^....C/!.| +00000360 90 d6 74 ab 8e 03 8b 54 79 57 b6 ae 77 a0 87 96 |..t....TyW..w...| +00000370 42 0f 95 66 74 6c 1b 0d ea 66 5c 62 57 32 b7 dd |B..ftl...f\bW2..| +00000380 03 65 b6 ad af 15 20 52 39 af 33 e6 08 5c 38 dd |.e.... R9.3..\8.| +00000390 40 42 c1 4c f6 48 0b 59 96 a0 04 c3 09 b6 bf ac |@B.L.H.Y........| +000003a0 7a 9d 96 8a ce 3f 7f 68 00 9e 1c 9a db e3 25 56 |z....?.h......%V| +000003b0 54 17 03 03 00 35 55 48 0b d0 5c c0 8c a4 5e 1e |T....5UH..\...^.| +000003c0 30 64 b7 b5 f7 d0 0d 50 64 a8 f1 79 36 9a 0f 00 |0d.....Pd..y6...| +000003d0 ac cb 25 c7 62 5f c1 05 e9 c2 ee 7a 87 00 19 fc |..%.b_.....z....| +000003e0 5b fd 4c 0a 73 ec dc f4 51 66 bd |[.L.s...Qf.| >>> Flow 3 (client to server) -00000000 17 03 03 00 35 23 ee 53 57 90 ba 6c b8 81 73 49 |....5#.SW..l..sI| -00000010 50 0b a2 6f 9c bc b4 84 c5 31 e7 1d 57 ef fe c2 |P..o.....1..W...| -00000020 00 0b 1b 67 f7 2c 7d d3 e1 24 fa 4c 7a 90 5a 52 |...g.,}..$.Lz.ZR| -00000030 c4 78 2c 4a a4 81 3a ca 70 3e 17 03 03 00 17 d1 |.x,J..:.p>......| -00000040 04 00 5a 55 c2 9d ed 7d 32 a0 94 80 f7 2a f1 ee |..ZU...}2....*..| -00000050 e7 28 20 f8 27 3b 17 03 03 00 13 99 71 80 30 28 |.( .';......q.0(| -00000060 79 f2 88 36 2d a4 b5 b8 f0 1a e8 4e 26 ec |y..6-......N&.| +00000000 14 03 03 00 01 01 17 03 03 00 35 36 71 be 3a 8d |..........56q.:.| +00000010 ee 01 10 3e 7b a9 7a 5a 81 2f 2a 65 bd 56 8f b9 |...>{.zZ./*e.V..| +00000020 0f a2 e9 80 eb ae 63 b0 60 69 ea f3 f7 66 d4 2c |......c.`i...f.,| +00000030 fd 13 2c 00 22 55 85 58 4e cf 4f 45 45 a1 ba 89 |..,."U.XN.OEE...| +00000040 17 03 03 00 17 bc cf b6 f9 13 87 04 83 9e 1d dd |................| +00000050 ff 33 77 cb a1 71 bb df 23 97 2c b6 |.3w..q..#.,.| +>>> Flow 4 (server to client) +00000000 17 03 03 00 ea 6c b0 c3 6b ed 51 ec 1e 57 a4 3e |.....l..k.Q..W.>| +00000010 f6 d0 e8 10 b6 b4 cd e6 0b 12 50 8f a2 26 b9 87 |..........P..&..| +00000020 19 ad a5 25 33 ab 5e 2e 58 d4 68 c5 85 42 6c 1d |...%3.^.X.h..Bl.| +00000030 34 02 b0 47 59 f0 cd c2 d5 a5 bb 27 3f 60 9d 07 |4..GY......'?`..| +00000040 22 3c 9a 25 d0 a6 2a b4 e4 52 20 18 07 f3 f8 b4 |"<.%..*..R .....| +00000050 ad 4f 2c ec 8d 41 5f dd b9 e1 bb 90 88 94 5e 73 |.O,..A_.......^s| +00000060 75 a1 ed 88 cf 97 a6 67 02 02 78 be a4 20 29 ad |u......g..x.. ).| +00000070 91 63 a6 39 e8 42 1a 65 76 c7 17 f0 39 7a c4 62 |.c.9.B.ev...9z.b| +00000080 d2 3e f4 12 eb ab da 7b 1f e6 94 b5 a1 b0 40 5c |.>.....{......@\| +00000090 e3 66 a3 7b 40 53 ce 74 10 77 d7 17 9f d0 b3 b2 |.f.{@S.t.w......| +000000a0 a2 97 fd 42 08 5f af 79 a3 c0 c0 98 fa 71 58 8b |...B._.y.....qX.| +000000b0 a5 81 50 8a fc 51 d5 82 19 fb a7 6f 9f b3 6a 96 |..P..Q.....o..j.| +000000c0 c3 d4 90 88 88 c2 96 df 70 ec 60 ca 71 9c 53 ef |........p.`.q.S.| +000000d0 fc a1 92 11 c9 a3 f8 b7 bc a2 6b f5 c5 dc dd b8 |..........k.....| +000000e0 cb 7b 1b af 60 0f 16 8f a8 d4 85 34 76 3c 35 17 |.{..`......4v<5.| +000000f0 03 03 00 ea 7a 0f ef f0 87 83 1d 23 30 ed 14 d4 |....z......#0...| +00000100 dc 97 19 38 71 e2 94 b1 54 e5 86 61 20 21 cd 57 |...8q...T..a !.W| +00000110 29 e6 b3 01 8a 69 7f 06 f2 a0 3e 87 38 3c 7c 9d |)....i....>.8<|.| +00000120 d5 83 e3 58 26 0d 16 13 b8 af 13 a9 c3 21 27 ae |...X&........!'.| +00000130 32 df fb 3d fa 2c cd 7c 4e af d3 e0 32 29 7e f3 |2..=.,.|N...2)~.| +00000140 b5 d2 56 58 bc 83 e2 c7 cd cc e7 e7 8d ff b1 70 |..VX...........p| +00000150 c6 c6 51 ac 6a 12 de 28 4c 99 73 6d 38 4f 74 76 |..Q.j..(L.sm8Otv| +00000160 ae 48 c8 ec a3 65 9c 3a c3 b5 6d 47 1c 0f 5d 63 |.H...e.:..mG..]c| +00000170 8c bb 85 61 51 89 f3 3c 9d 65 03 58 06 13 b2 d7 |...aQ..<.e.X....| +00000180 d8 13 53 d1 11 7a cf 10 c9 8d b1 70 ac 20 7e af |..S..z.....p. ~.| +00000190 f5 fc cc a4 ab 91 a8 dd 2a db d6 e2 44 73 c5 57 |........*...Ds.W| +000001a0 b8 ad 32 d4 98 ee 65 90 ee b7 c6 bf 78 b1 06 59 |..2...e.....x..Y| +000001b0 b8 74 c9 54 e0 fc 79 92 bd ff 6f 42 c5 39 13 b3 |.t.T..y...oB.9..| +000001c0 20 f7 e5 28 27 0e 22 4e b5 38 81 46 14 f6 d3 a8 | ..('."N.8.F....| +000001d0 f8 32 ca 3f da 1c d3 44 8f 21 da 5c f4 ad |.2.?...D.!.\..| +>>> Flow 5 (client to server) +00000000 17 03 03 00 13 6b f9 43 f6 f1 44 ba cc 47 cf 09 |.....k.C..D..G..| +00000010 4d 94 dd 31 1e 65 ce 32 |M..1.e.2| diff --git a/testdata/Client-TLSv13-ClientCert-ECDSA-RSA b/testdata/Client-TLSv13-ClientCert-ECDSA-RSA new file mode 100644 index 0000000..8b49c0f --- /dev/null +++ b/testdata/Client-TLSv13-ClientCert-ECDSA-RSA @@ -0,0 +1,236 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 f8 01 00 00 f4 03 03 00 00 00 00 00 |................| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 32 cc a8 |.............2..| +00000050 cc a9 c0 2f c0 2b c0 30 c0 2c c0 27 c0 13 c0 23 |.../.+.0.,.'...#| +00000060 c0 09 c0 14 c0 0a 00 9c 00 9d 00 3c 00 2f 00 35 |...........<./.5| +00000070 c0 12 00 0a 00 05 c0 11 c0 07 13 01 13 03 13 02 |................| +00000080 01 00 00 79 00 05 00 05 01 00 00 00 00 00 0a 00 |...y............| +00000090 0a 00 08 00 1d 00 17 00 18 00 19 00 0b 00 02 01 |................| +000000a0 00 00 0d 00 18 00 16 08 04 08 05 08 06 04 01 04 |................| +000000b0 03 05 01 05 03 06 01 06 03 02 01 02 03 ff 01 00 |................| +000000c0 01 00 00 12 00 00 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000d0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 16 6b 5e d7 00 |....z...v...k^..| +00000010 ce 00 c1 8e 7d 12 51 a4 83 4b fd 6a 06 28 4b 1b |....}.Q..K.j.(K.| +00000020 00 fe 6e 45 a2 87 29 76 81 08 ba 20 00 00 00 00 |..nE..)v... ....| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 82 |..+.....3.$... .| +00000060 b2 b1 82 2f 3e e3 e5 d4 90 5e 44 a5 02 30 df 45 |.../>....^D..0.E| +00000070 f1 c6 07 0d d8 af 64 b9 e3 51 30 6a eb a7 0e 14 |......d..Q0j....| +00000080 03 03 00 01 01 17 03 03 00 17 a2 97 33 5b 62 2c |............3[b,| +00000090 69 6c 17 61 14 ba 66 9e 29 04 fa c8 3a a4 57 70 |il.a..f.)...:.Wp| +000000a0 7f 17 03 03 00 42 30 a3 06 4b b8 20 2d ec f6 dc |.....B0..K. -...| +000000b0 cb e6 9c fa b2 5b b0 cc 55 54 53 1b 69 96 e1 3e |.....[..UTS.i..>| +000000c0 9a 57 08 6e 7a 8c 47 26 18 b6 90 f3 1f 7c c3 fc |.W.nz.G&.....|..| +000000d0 9f f6 f6 8c 22 d9 d7 5f 74 0e 55 2a 7f df 3b 12 |....".._t.U*..;.| +000000e0 20 bd 07 96 77 f1 e8 ab 17 03 03 02 6d c4 d3 3b | ...w.......m..;| +000000f0 a3 2c 60 92 18 f1 b4 e4 10 2e 33 21 f0 43 d8 8a |.,`.......3!.C..| +00000100 ce 8a 60 2d 4a ff aa 91 68 7a 83 16 0b e1 30 e7 |..`-J...hz....0.| +00000110 61 0b c4 c6 ba 60 46 72 c4 58 21 fb 3e 51 21 cb |a....`Fr.X!.>Q!.| +00000120 c0 77 c1 3e 40 b5 fc f5 07 83 6a aa 57 1a 30 df |.w.>@.....j.W.0.| +00000130 71 d9 6c 57 da d2 8a c6 2e b1 e5 29 f1 96 c1 1c |q.lW.......)....| +00000140 a2 c8 fe 31 be 71 c7 7a 36 c3 41 c9 2a c6 7f fc |...1.q.z6.A.*...| +00000150 a5 3c 5d 53 bc 7b 29 fe 62 64 bc b4 1e 2f c8 eb |.<]S.{).bd.../..| +00000160 98 6c 47 88 55 da bb 24 de 2b 6b c9 de 17 a1 13 |.lG.U..$.+k.....| +00000170 70 47 7e 86 95 78 49 e7 9f 5b f9 4d d1 ea d5 60 |pG~..xI..[.M...`| +00000180 af 66 10 b4 f5 cc f1 6e 80 56 b0 75 b4 a1 7c 22 |.f.....n.V.u..|"| +00000190 f6 f9 b2 7d 43 24 4f c4 4a c1 f9 8b 03 b9 a5 7b |...}C$O.J......{| +000001a0 76 58 75 46 c4 6c cd d6 16 2f 3e ff 67 e2 31 21 |vXuF.l.../>.g.1!| +000001b0 2c c5 cc 6a 2f 15 5e da 4b 6b e5 af 88 2f 9e 27 |,..j/.^.Kk.../.'| +000001c0 d6 9a 5e 05 ea 20 e1 0d 03 2e b7 5a 9e f1 63 f1 |..^.. .....Z..c.| +000001d0 31 f8 d4 bd 5a 28 6a c2 51 27 e8 d7 3d 51 fa 77 |1...Z(j.Q'..=Q.w| +000001e0 70 1e 17 a4 7b de 3b a6 44 3c 2b 16 a8 85 28 32 |p...{.;.D<+...(2| +000001f0 35 ff ff 60 24 32 d6 11 cb cc 23 51 97 82 b4 ac |5..`$2....#Q....| +00000200 66 a5 33 29 b0 2a 6c 8d d3 69 75 3e ef bb a8 2a |f.3).*l..iu>...*| +00000210 a4 ed 92 1f ee 56 b6 c6 00 bd 80 ae c4 a6 ce 78 |.....V.........x| +00000220 45 6b fc fb 7e ad cc ea 22 dd 33 0e 79 27 93 60 |Ek..~...".3.y'.`| +00000230 a8 c0 c2 b0 2f 3b ba e9 f2 1b 2b ea f3 ff 45 9b |..../;....+...E.| +00000240 7b 28 aa 30 a1 14 8f a7 9c 74 53 fb 8c d6 41 d4 |{(.0.....tS...A.| +00000250 a9 61 7a 5c 4a 20 aa 70 7f 03 52 e8 83 32 57 95 |.az\J .p..R..2W.| +00000260 02 a7 34 37 04 9c 91 90 5f 8e 51 24 70 63 02 80 |..47...._.Q$pc..| +00000270 dc 9c 54 e7 c1 d9 5c 8a d8 b5 6d 8e 05 ef 2d a2 |..T...\...m...-.| +00000280 38 74 d4 b6 83 77 4a 96 22 4d fb 3c 56 2b 29 6e |8t...wJ."M...Cyd.| +000002a0 bb 94 e6 20 c4 11 94 73 48 e3 5f 7b 1f 66 5a f8 |... ...sH._{.fZ.| +000002b0 96 a3 9e 2e 61 4b 1c 86 80 86 26 f2 eb d6 f4 a1 |....aK....&.....| +000002c0 29 9d dc ae de 38 f9 98 27 2e 69 d5 4f f6 ca 32 |)....8..'.i.O..2| +000002d0 ca d4 79 90 98 2f 94 f7 0f 8f 77 9a 21 44 0a b6 |..y../....w.!D..| +000002e0 e8 8b c3 3d 1a bd 2f 45 91 10 44 e2 74 22 6e e1 |...=../E..D.t"n.| +000002f0 20 fc 32 d1 74 da 9d ac 0b b1 e1 d2 7b 65 96 c3 | .2.t.......{e..| +00000300 41 eb dd a2 9e bf 7f 22 20 06 91 be 7a 94 77 fb |A......" ...z.w.| +00000310 88 31 f3 f4 d3 38 bb a3 01 4f e4 ee 08 b4 bf 23 |.1...8...O.....#| +00000320 ad 46 22 28 f0 e9 4f bc 76 4d 53 7a eb 58 f3 0c |.F"(..O.vMSz.X..| +00000330 ae 6f 09 70 f2 96 b9 16 7a 24 4a 94 99 b3 a2 da |.o.p....z$J.....| +00000340 1a 61 ac 53 e0 2c ae c5 de 4b c5 e5 dd 54 e4 d5 |.a.S.,...K...T..| +00000350 75 ea d1 dc 5d 57 04 2c 87 41 17 03 03 00 99 28 |u...]W.,.A.....(| +00000360 54 65 ee 2f ba b3 bf 24 d6 d4 30 8a 7c ea e0 b2 |Te./...$..0.|...| +00000370 e7 9a 32 55 f5 92 d4 1d eb 73 fd db e3 f1 c9 83 |..2U.....s......| +00000380 f8 89 fc bb a3 2e cb 3a 4e a9 4e 21 7c 1f 42 ce |.......:N.N!|.B.| +00000390 34 a7 7c 61 71 ff 58 80 f0 d2 fa 8f 01 16 02 47 |4.|aq.X........G| +000003a0 f5 4c f4 92 7b 27 46 b7 c5 7f 11 b2 83 b5 56 c8 |.L..{'F.......V.| +000003b0 95 79 eb 7f 11 b6 58 e7 73 6e 75 97 e7 5a 64 7b |.y....X.snu..Zd{| +000003c0 33 09 da 6b 1e 10 99 94 01 1d 03 fe f5 bb 69 0c |3..k..........i.| +000003d0 02 4b 1d 69 5f bf db a7 07 50 f0 b0 b9 8b 21 5b |.K.i_....P....![| +000003e0 98 55 b7 58 67 1f c7 dc 56 1b b0 58 e9 49 9a c9 |.U.Xg...V..X.I..| +000003f0 28 d6 e6 e8 fc 7a ac c8 17 03 03 00 35 c9 67 6c |(....z......5.gl| +00000400 2f bd 89 41 ae c9 65 e2 be 94 a8 6d f2 d4 f2 15 |/..A..e....m....| +00000410 74 a3 86 ed 57 67 d4 5e 76 de e4 67 5e f6 91 49 |t...Wg.^v..g^..I| +00000420 f2 01 db af 07 ad 42 ff a3 a1 1d e5 11 89 89 52 |......B........R| +00000430 ee 29 |.)| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 02 1e 71 98 b6 4f fe |...........q..O.| +00000010 ff bc ca 28 6c 91 6d 31 2f e4 05 f3 00 3a 04 26 |...(l.m1/....:.&| +00000020 80 a4 bd 8a 92 8f 11 88 f1 30 46 c2 86 dc dc 32 |.........0F....2| +00000030 fa 95 8e 52 f0 88 55 1d c7 f6 9a 2c 64 ff c1 4b |...R..U....,d..K| +00000040 11 2e bc 41 83 3b ba 1b 7a de d4 99 f7 46 15 53 |...A.;..z....F.S| +00000050 04 66 f5 57 7d 45 14 d1 cd 95 4c 33 8a 34 b1 0d |.f.W}E....L3.4..| +00000060 d2 a4 b4 be 41 eb 96 ae c0 e6 55 9f ba d5 64 19 |....A.....U...d.| +00000070 dd 84 93 cf c1 99 d2 73 3b a2 b0 30 17 df 7e 5a |.......s;..0..~Z| +00000080 21 14 44 4e 52 9d de 9c 4b 44 bf 6e b8 1e fc 47 |!.DNR...KD.n...G| +00000090 cd 2b 51 8d be 96 28 7a b7 6a c9 88 55 76 f3 80 |.+Q...(z.j..Uv..| +000000a0 b5 2e 5e c1 53 7f 99 2e d7 39 31 bd 16 07 b3 13 |..^.S....91.....| +000000b0 6b d5 e6 b0 e5 79 42 36 3a 21 09 9c 8f f1 1f 09 |k....yB6:!......| +000000c0 a6 3a d5 0c 62 d9 56 42 91 fc ba e0 8e 16 31 5a |.:..b.VB......1Z| +000000d0 a5 11 45 56 f8 4a 52 2d b1 de ed 3b ac 08 dd 7a |..EV.JR-...;...z| +000000e0 b8 8a 7b ef e0 65 10 10 5e d5 99 ac db 95 f6 58 |..{..e..^......X| +000000f0 a6 d7 18 72 14 9b 91 03 09 28 49 f9 63 55 92 71 |...r.....(I.cU.q| +00000100 62 94 36 5a de 7a 1b a6 f2 b0 18 09 7f 0d 7d 68 |b.6Z.z........}h| +00000110 c7 24 7f e1 15 86 86 01 23 91 77 76 86 37 40 3a |.$......#.wv.7@:| +00000120 16 ac 2d d0 55 0b 82 ef c6 85 e7 17 27 ee c9 42 |..-.U.......'..B| +00000130 a8 15 9c 2d a9 d5 41 bf d8 eb 1d 03 45 51 65 66 |...-..A.....EQef| +00000140 81 08 8e bf 86 df 5f 68 f3 b1 be 86 34 22 42 8c |......_h....4"B.| +00000150 e8 02 63 e2 18 bd dd db 13 36 dc 9f 0d d5 a7 fa |..c......6......| +00000160 4a 97 db 37 21 5c c7 fb 0a 6a f4 09 c3 5c db c1 |J..7!\...j...\..| +00000170 49 14 eb 94 1a 3f 0b 7a d6 cb d8 0c d7 0f 64 74 |I....?.z......dt| +00000180 20 1b bf 68 d7 f2 91 aa 9d b0 46 47 1d 52 ad 91 | ..h......FG.R..| +00000190 62 ed 90 42 99 fd 9e cf 80 1f 17 43 28 f4 71 90 |b..B.......C(.q.| +000001a0 64 d0 64 ea f2 d0 a2 ba 96 36 4f 2c 53 9b ee 49 |d.d......6O,S..I| +000001b0 a2 84 1d f2 4a eb 58 98 52 52 d3 92 91 7b 38 6c |....J.X.RR...{8l| +000001c0 39 2d 22 d6 92 6c 76 31 5b c3 32 fa 96 33 7a 92 |9-"..lv1[.2..3z.| +000001d0 89 34 a0 95 66 23 0e ce 51 48 7d f1 9d b4 c9 79 |.4..f#..QH}....y| +000001e0 b0 69 6b 9a 7c f2 4c 9c e6 1b 39 20 9a 96 0c 0e |.ik.|.L...9 ....| +000001f0 5c 33 c7 05 10 aa a3 51 d4 a0 e4 e9 f2 e0 97 94 |\3.....Q........| +00000200 dd fa 38 20 57 19 7b e5 ba 99 a5 1b 06 85 20 6c |..8 W.{....... l| +00000210 69 a8 ee f8 b6 fe e6 c7 af ff a8 23 0b 29 05 db |i..........#.)..| +00000220 d2 0f 7b ee 28 0b aa ba 75 17 03 03 00 a3 43 e7 |..{.(...u.....C.| +00000230 59 40 d1 64 64 65 63 42 75 b3 5e 89 a2 73 3d 67 |Y@.ddecBu.^..s=g| +00000240 1c 1b 5f 9e df f9 56 77 02 72 e4 ef 91 ab 2d 1a |.._...Vw.r....-.| +00000250 c6 78 cb 6a 9b 08 bb d4 6b 3e 46 73 0e 14 ee d8 |.x.j....k>Fs....| +00000260 b6 0e 68 a2 34 da 55 61 c9 3a f3 dd de 37 eb 41 |..h.4.Ua.:...7.A| +00000270 8d 26 3a 5f 47 31 34 2b d2 c0 b8 cd 8d 24 d3 2a |.&:_G14+.....$.*| +00000280 34 64 29 c5 0a 5c 72 57 35 50 5b fb 9b 7b 7e c5 |4d)..\rW5P[..{~.| +00000290 1a f8 96 85 3a 32 be a2 ba a5 00 2b 8c 6a c5 aa |....:2.....+.j..| +000002a0 fd 65 e2 5a 8a 89 05 c3 1d e6 ad fd c3 c7 b3 3a |.e.Z...........:| +000002b0 57 f6 3a 08 00 b6 e6 f4 b8 a7 4e 5d 42 26 d7 2d |W.:.......N]B&.-| +000002c0 00 04 2c e3 ba 67 b9 f6 c2 cb cd 73 10 d9 fa 6c |..,..g.....s...l| +000002d0 ab 17 03 03 00 35 b6 49 bd 61 18 68 8b c8 be 43 |.....5.I.a.h...C| +000002e0 bf ea 1c 64 f7 81 b9 9d b7 5d 6f e7 4a 2d e8 ae |...d.....]o.J-..| +000002f0 37 a0 bd 3a b6 d5 da ad 77 dd 8d e8 c7 5c 35 ba |7..:....w....\5.| +00000300 b9 af 67 21 1c c3 bd 6a 6e 9d a2 17 03 03 00 17 |..g!...jn.......| +00000310 9c 58 47 b5 ba 24 69 1d c5 88 10 31 8f 35 2f 24 |.XG..$i....1.5/$| +00000320 37 d5 ae b7 70 5c 8e |7...p\.| +>>> Flow 4 (server to client) +00000000 17 03 03 02 ea 4d 07 a0 65 50 d9 de ab ad 80 30 |.....M..eP.....0| +00000010 4a 6e 26 79 32 0b 14 59 ad f4 41 98 4f 22 c0 6b |Jn&y2..Y..A.O".k| +00000020 e1 b6 c4 95 84 77 0a b2 08 33 b0 73 52 f6 65 ef |.....w...3.sR.e.| +00000030 27 e0 0f da a6 30 3c 87 d6 43 c9 79 d7 00 29 07 |'....0<..C.y..).| +00000040 ee 8f e4 b8 63 bc 59 98 07 2f ea b1 57 a8 cb 8c |....c.Y../..W...| +00000050 5a c7 bd 2f 6e b5 1a 83 b7 c4 c3 89 d3 ec ec d2 |Z../n...........| +00000060 71 b5 58 78 22 7e 89 ee f1 b3 9c 3d f2 44 69 9a |q.Xx"~.....=.Di.| +00000070 aa 5a 13 d2 ba 28 34 11 d7 2b 78 c3 85 44 07 3d |.Z...(4..+x..D.=| +00000080 83 e2 13 f5 6c 63 23 77 dd bc 38 06 6e bf 5d 64 |....lc#w..8.n.]d| +00000090 08 58 9e 49 a3 d1 53 ca 80 29 22 b5 84 96 86 3c |.X.I..S..)"....<| +000000a0 09 93 68 c8 c2 59 db 81 77 a1 a4 cc 13 cc 77 85 |..h..Y..w.....w.| +000000b0 a6 d4 87 93 19 45 92 a6 5f 0e 03 23 3d a5 d5 1f |.....E.._..#=...| +000000c0 1b eb bb 28 17 b5 b7 85 29 6c 04 8d f2 08 a7 32 |...(....)l.....2| +000000d0 1f 02 b9 f5 eb 28 8d 8c b1 22 b6 84 76 fd c3 89 |.....(..."..v...| +000000e0 92 f0 9c 9d 39 32 52 e9 57 46 ba 66 cc 3c fb 2a |....92R.WF.f.<.*| +000000f0 2f 8a 4f ce 7e 11 b3 42 39 33 50 5e 56 73 a4 fe |/.O.~..B93P^Vs..| +00000100 31 2b c6 6c be 62 d9 1c 0f 5a 88 8b 99 3b ad ec |1+.l.b...Z...;..| +00000110 78 e3 32 d5 ae 7d b3 0d a4 7f 5a 79 86 65 be ed |x.2..}....Zy.e..| +00000120 00 ea 62 1d a3 52 fc 36 76 52 05 4a 68 9d 07 11 |..b..R.6vR.Jh...| +00000130 d6 eb f5 c2 cd 7b ef b2 c9 20 a0 0e 78 a8 2f 2a |.....{... ..x./*| +00000140 e9 54 4c 92 90 a7 9e 7f bb 48 b8 b7 f9 28 c8 9b |.TL......H...(..| +00000150 97 0c a2 20 da 9f 0e c9 b6 e1 07 51 c9 f0 34 32 |... .......Q..42| +00000160 2d 6f b1 36 1a 20 c3 fb c0 d6 88 84 b3 d8 7b 22 |-o.6. ........{"| +00000170 89 6e cb 19 96 ad 05 6a 94 06 00 d8 71 e6 ad 78 |.n.....j....q..x| +00000180 4c b8 4a 6a 63 fd 7a 66 4f 51 08 d3 7b 46 5f ae |L.Jjc.zfOQ..{F_.| +00000190 e7 39 d7 e8 97 de 3b ec 6a e0 c7 74 cb 53 74 b3 |.9....;.j..t.St.| +000001a0 13 89 bd a4 0a b5 8b 0a 32 1a 97 5f 20 c5 b5 d0 |........2.._ ...| +000001b0 14 ec 2e f3 20 19 e9 4e 85 28 1a 22 bf 14 3c ec |.... ..N.(."..<.| +000001c0 6d 4a c8 0f 0d 69 94 c0 e3 b2 86 8e 5b ac a4 84 |mJ...i......[...| +000001d0 e3 da 21 1f 0a 17 ae 40 64 c6 db c1 1d 61 5d e9 |..!....@d....a].| +000001e0 13 85 43 0d 72 48 09 8a 81 5a 1f 15 54 6c 1d 04 |..C.rH...Z..Tl..| +000001f0 09 e4 c7 75 06 36 c6 5f a9 f5 70 2e a2 68 40 b1 |...u.6._..p..h@.| +00000200 df 50 c7 9a 81 d8 cd f9 19 2c 7c a3 aa 35 4f b5 |.P.......,|..5O.| +00000210 62 c4 00 92 b2 f1 91 60 ce 64 bc fe 25 fc 7e da |b......`.d..%.~.| +00000220 48 d6 34 e8 39 bb c6 93 51 06 d0 3b 9c 29 b9 83 |H.4.9...Q..;.)..| +00000230 05 b5 62 47 e0 1c 61 ce 8a a6 55 25 45 8b b3 29 |..bG..a...U%E..)| +00000240 62 ab 16 ee 72 11 b9 2d 9c 00 cb 78 65 f5 8b 60 |b...r..-...xe..`| +00000250 6d 78 a2 a4 41 9b 05 4a 79 39 03 a9 6f 77 78 a1 |mx..A..Jy9..owx.| +00000260 fc 4c d4 4e 5b 27 b3 da 31 5c 5c 3a 10 18 a7 75 |.L.N['..1\\:...u| +00000270 78 1a d3 f4 6c a1 22 03 55 a2 70 1d 48 ce e1 67 |x...l.".U.p.H..g| +00000280 fe 42 f9 5e 3c 1e f8 6c c0 8f da 67 8c fe 07 5a |.B.^<..l...g...Z| +00000290 53 2a c9 01 2d b4 ca cf ac 9b 7c 9a c2 8f 24 0a |S*..-.....|...$.| +000002a0 fb 4a 1b b1 c8 d5 0a 9a e1 e9 40 a5 4a c5 07 46 |.J........@.J..F| +000002b0 28 d0 db 2b dc 40 02 70 38 09 d5 bc 04 a1 81 02 |(..+.@.p8.......| +000002c0 6c 40 e1 79 ef 50 ae 2d 0c 82 c0 19 88 7d a0 07 |l@.y.P.-.....}..| +000002d0 0d 4a 40 87 c0 8a 06 a3 ea 3e 5e 3e b7 3d 9d 92 |.J@......>^>.=..| +000002e0 b3 ee bd 72 90 ea 35 81 c1 29 86 24 13 9d 2a 17 |...r..5..).$..*.| +000002f0 03 03 02 ea 7c 16 54 e4 e2 06 d8 a1 e4 27 1b a4 |....|.T......'..| +00000300 14 a8 b6 29 50 18 bf d3 59 5e bb 53 8e 7c 8f d3 |...)P...Y^.S.|..| +00000310 fb bd e8 06 f2 6e 82 23 07 a7 0f 91 f6 be 11 70 |.....n.#.......p| +00000320 89 6a c8 f1 26 1f e4 09 88 38 01 ba 81 dc 4d 2c |.j..&....8....M,| +00000330 13 05 3b 37 2e 95 4c 7f 8a c3 a3 5b 4d 43 5c ee |..;7..L....[MC\.| +00000340 11 92 c3 a7 93 5a e7 7b f8 ae 9f 83 ef 25 d4 af |.....Z.{.....%..| +00000350 a3 4b 04 7e 8f 54 3a 5b f6 61 75 61 80 e0 40 cb |.K.~.T:[.aua..@.| +00000360 1d 4c ab 55 e9 35 ea 91 af b7 10 e4 ac 9d d5 d0 |.L.U.5..........| +00000370 1c c6 3e 73 ea 15 08 bb 53 76 0b 44 64 64 5b 98 |..>s....Sv.Ddd[.| +00000380 e8 d8 b6 32 43 91 53 2d 3d f9 04 a9 03 d4 73 c8 |...2C.S-=.....s.| +00000390 49 fe a2 48 a0 09 31 d1 08 47 d1 7d 71 4b 2f 43 |I..H..1..G.}qK/C| +000003a0 e6 67 a9 4f 66 0c 01 8c 4c 5b 36 84 d0 bb df 4d |.g.Of...L[6....M| +000003b0 c5 d3 27 9c c0 48 d3 49 b3 73 ce 51 38 70 a3 d8 |..'..H.I.s.Q8p..| +000003c0 53 88 a9 f8 2d 68 21 fd 7c b8 68 84 f5 f6 fd d5 |S...-h!.|.h.....| +000003d0 62 77 af dc 28 8b 44 46 3b a7 12 fc 28 72 d3 b9 |bw..(.DF;...(r..| +000003e0 de e9 73 af 93 d3 37 ce 60 81 8d 62 02 ff 78 d3 |..s...7.`..b..x.| +000003f0 9a 60 68 f9 54 df b7 f0 7b cc 4a 92 9e 31 76 0d |.`h.T...{.J..1v.| +00000400 02 31 fe e2 c6 03 63 a6 b2 cf aa 00 f8 93 3f a4 |.1....c.......?.| +00000410 d1 45 9c 7d b6 06 11 30 c9 7a 12 16 6a 0a 8f 5c |.E.}...0.z..j..\| +00000420 a8 aa 5d 3f 8c d6 89 de 5c a5 d9 da b7 92 dd a6 |..]?....\.......| +00000430 d3 a0 7f 62 95 c5 12 54 6d a3 2a 38 99 b2 12 d6 |...b...Tm.*8....| +00000440 47 56 56 f6 3d cf 37 9c 31 bd 9c 32 ae 52 05 e9 |GVV.=.7.1..2.R..| +00000450 2e c7 3b 84 45 ef 1f 94 ff ee d8 47 88 ea 09 ae |..;.E......G....| +00000460 27 51 9c 59 bb ff 7a 75 f7 72 38 35 f6 3e cc 01 |'Q.Y..zu.r85.>..| +00000470 54 72 5f e6 2e 16 12 25 b4 9b 69 76 fa 2a 2d 76 |Tr_....%..iv.*-v| +00000480 d2 bb e0 cf d2 41 00 20 d9 0b 88 42 7f 7c f8 70 |.....A. ...B.|.p| +00000490 67 7f 06 d9 a6 17 79 6d 6d 53 87 9a 28 df 97 8f |g.....ymmS..(...| +000004a0 f3 35 4b 5a 43 43 9a 07 6d c3 00 5b 58 7a 7a 80 |.5KZCC..m..[Xzz.| +000004b0 5e 0e 9c 6a da 8d 0b 65 26 af e6 2f f4 a5 cf 6e |^..j...e&../...n| +000004c0 07 9b 24 2b 5b 36 fd 07 3b 46 f5 f4 15 cc ea 11 |..$+[6..;F......| +000004d0 f9 d0 97 ea 1d b7 3d db bf 7c e2 dd 68 1e 8b ea |......=..|..h...| +000004e0 90 cb 67 8a 2e 25 77 40 3b 76 c1 0f 4e b0 33 95 |..g..%w@;v..N.3.| +000004f0 d0 b1 39 44 d9 7c eb 34 98 8d 2c 54 5b a8 9a 22 |..9D.|.4..,T[.."| +00000500 68 a7 74 10 6f 69 f0 9c 07 11 0b 9b 81 da 3e 16 |h.t.oi........>.| +00000510 a9 b6 92 55 ce a0 15 25 5e 25 6e 41 5a d6 34 83 |...U...%^%nAZ.4.| +00000520 83 fa b3 53 0c b0 5c 60 83 1e 42 09 90 e0 5d 20 |...S..\`..B...] | +00000530 79 6c 34 ec a0 da fa 32 b6 6e d3 37 a5 ad 5a f6 |yl4....2.n.7..Z.| +00000540 b7 85 a3 e2 75 c7 b0 c8 1b bc 71 73 24 c4 4f 7f |....u.....qs$.O.| +00000550 34 d4 0f a0 c1 53 f9 35 b3 c1 5e e9 32 a8 2d f0 |4....S.5..^.2.-.| +00000560 9b 8e 24 82 93 92 85 e5 82 56 84 a8 f2 e5 6f 81 |..$......V....o.| +00000570 a8 cd e9 34 ce 24 48 0a c5 07 32 ec a1 ec 44 37 |...4.$H...2...D7| +00000580 42 af 4f ef 33 de fb 98 e6 95 59 63 bc e0 aa 0a |B.O.3.....Yc....| +00000590 62 dc c0 28 7f b2 53 62 fb d6 42 d7 cc 60 b6 5b |b..(..Sb..B..`.[| +000005a0 8d 30 a7 94 36 9d c2 d0 fe 38 aa 95 0a 3f 7f 6f |.0..6....8...?.o| +000005b0 5b a3 bb 25 d9 e7 a6 7b 46 e9 e0 42 c7 73 c9 a8 |[..%...{F..B.s..| +000005c0 01 ec 54 93 d4 28 f1 ba c9 26 04 22 02 88 04 4d |..T..(...&."...M| +000005d0 e3 c8 6f a8 de fb fd 48 76 41 cc e2 98 52 |..o....HvA...R| +>>> Flow 5 (client to server) +00000000 17 03 03 00 13 3b cc e0 8a fe cd f3 1f 2c 07 cc |.....;.......,..| +00000010 9d c3 62 ae 15 fe 68 64 |..b...hd| diff --git a/testdata/Client-TLSv13-ClientCert-RSA-ECDSA b/testdata/Client-TLSv13-ClientCert-RSA-ECDSA new file mode 100644 index 0000000..a482330 --- /dev/null +++ b/testdata/Client-TLSv13-ClientCert-RSA-ECDSA @@ -0,0 +1,228 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 f8 01 00 00 f4 03 03 00 00 00 00 00 |................| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 32 cc a8 |.............2..| +00000050 cc a9 c0 2f c0 2b c0 30 c0 2c c0 27 c0 13 c0 23 |.../.+.0.,.'...#| +00000060 c0 09 c0 14 c0 0a 00 9c 00 9d 00 3c 00 2f 00 35 |...........<./.5| +00000070 c0 12 00 0a 00 05 c0 11 c0 07 13 01 13 03 13 02 |................| +00000080 01 00 00 79 00 05 00 05 01 00 00 00 00 00 0a 00 |...y............| +00000090 0a 00 08 00 1d 00 17 00 18 00 19 00 0b 00 02 01 |................| +000000a0 00 00 0d 00 18 00 16 08 04 08 05 08 06 04 01 04 |................| +000000b0 03 05 01 05 03 06 01 06 03 02 01 02 03 ff 01 00 |................| +000000c0 01 00 00 12 00 00 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000d0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 0d bc 10 4c a6 |....z...v.....L.| +00000010 07 5d ee 65 44 88 da cb ec 3e e7 9f e7 e4 12 01 |.].eD....>......| +00000020 bf 4c ca 2a 69 77 b7 ce 2e 4d b0 20 00 00 00 00 |.L.*iw...M. ....| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 fa |..+.....3.$... .| +00000060 d3 a7 66 61 08 f4 5e 78 2b 04 6b 67 f6 db 95 c2 |..fa..^x+.kg....| +00000070 2f bc 13 13 ec 29 ca e3 88 77 33 08 1b b5 6e 14 |/....)...w3...n.| +00000080 03 03 00 01 01 17 03 03 00 17 04 08 27 c4 db 89 |............'...| +00000090 a1 a7 75 ec 5e 05 07 9a 47 40 89 a5 7c e1 77 e2 |..u.^...G@..|.w.| +000000a0 a6 17 03 03 00 42 70 bc 31 0d 73 a8 b5 ec 55 a5 |.....Bp.1.s...U.| +000000b0 87 cd 02 f9 8f 5c 77 59 b7 62 a0 7c 9a 6e 70 ca |.....\wY.b.|.np.| +000000c0 41 68 b6 0e 41 ba 28 e6 4b cc 64 ea 8a 08 5c 79 |Ah..A.(.K.d...\y| +000000d0 6d e7 06 bf ee 94 c9 04 84 0d df 4a 69 05 1d 37 |m..........Ji..7| +000000e0 68 36 17 61 53 58 ac 87 17 03 03 02 22 e6 c6 58 |h6.aSX......"..X| +000000f0 9d ca d8 79 54 67 64 72 8d 9b 12 4a 93 55 b7 70 |...yTgdr...J.U.p| +00000100 e1 15 6f a0 d1 64 17 b5 2b ec 29 37 91 0c 21 ff |..o..d..+.)7..!.| +00000110 ba d9 e9 4b 5a af a3 4a 6d 07 64 02 b1 a4 54 19 |...KZ..Jm.d...T.| +00000120 44 b2 a0 e6 b4 28 75 f0 d8 7e 0d 20 f0 45 ba 93 |D....(u..~. .E..| +00000130 3a 55 d6 e2 17 d7 ad fe 54 ac fe a9 a1 01 2d 62 |:U......T.....-b| +00000140 61 7d 20 90 2f d5 f3 e8 46 6d 7c 54 37 25 da 49 |a} ./...Fm|T7%.I| +00000150 56 db 9d da a3 60 7c 31 cb 5e e7 89 6d 23 30 7e |V....`|1.^..m#0~| +00000160 83 96 11 f7 4a 62 b7 e7 96 e7 f8 c9 c2 c9 bd 12 |....Jb..........| +00000170 b3 fc b0 8d 17 35 99 c4 ef f7 e8 9f 4f ad a0 bf |.....5......O...| +00000180 ea 6c 55 cd 0f 2d e3 85 4a 74 e7 94 89 e3 6d 94 |.lU..-..Jt....m.| +00000190 d1 d6 d3 1a aa c2 2e 32 37 79 1a ee f0 44 14 3a |.......27y...D.:| +000001a0 a1 61 bb cb 95 ce f5 e4 fe c4 c2 8b 90 38 00 ce |.a...........8..| +000001b0 46 4a b0 83 e2 d9 ae 7f bf fe 72 65 4a 5f bb 07 |FJ........reJ_..| +000001c0 78 a9 90 c0 9e b3 5c 4d 79 e3 de a0 5c c3 1f f8 |x.....\My...\...| +000001d0 7f a0 db e7 88 8c 5b e1 f0 0e f5 00 80 0a 5f 3b |......[......._;| +000001e0 2a a3 a9 7f 73 9b b3 3e 91 e4 5c 96 74 fe e5 41 |*...s..>..\.t..A| +000001f0 99 cb 14 a7 28 b3 ca 47 ec 53 88 0e 71 1d 26 11 |....(..G.S..q.&.| +00000200 60 d8 b5 9c 5e 93 79 9d 9f 84 74 f4 f7 90 82 dd |`...^.y...t.....| +00000210 8e 0a 29 10 45 9c 05 60 82 52 29 88 c9 09 d6 9a |..).E..`.R).....| +00000220 57 ee 72 62 0c 57 80 ec 46 b8 b1 c9 83 8b e6 c6 |W.rb.W..F.......| +00000230 2b d9 cf 9d 3c e0 51 c1 2d 68 96 c4 70 c8 60 9a |+...<.Q.-h..p.`.| +00000240 b0 95 6b 81 70 8e bd 7d c7 91 f6 e2 e6 66 f6 a9 |..k.p..}.....f..| +00000250 6c db 9a c1 42 3f 90 93 2f 9b cd 39 95 95 89 4f |l...B?../..9...O| +00000260 b8 a6 2e 70 25 a7 37 d1 9f 97 16 2d 41 2b de 80 |...p%.7....-A+..| +00000270 33 c3 72 e4 ac 7d f9 ba 2f 30 ed 0e c8 7a ac d7 |3.r..}../0...z..| +00000280 34 c5 a9 a5 e3 18 71 63 d1 33 94 5a b5 39 eb d5 |4.....qc.3.Z.9..| +00000290 25 da d0 47 0e e2 48 5a af e5 6f a7 ed 18 44 ce |%..G..HZ..o...D.| +000002a0 6c 3a 17 de b9 00 f9 cb de d2 cb 3b 29 fc 5d 69 |l:.........;).]i| +000002b0 ed 8e 64 83 07 c1 3d fa 6e 98 d4 45 b2 5a ff ca |..d...=.n..E.Z..| +000002c0 85 13 73 d9 19 8c e7 60 fc 2a cc 2d d0 1a 0c e3 |..s....`.*.-....| +000002d0 22 ec d6 38 f4 47 d0 96 b6 f8 11 2b 43 da 2a f9 |"..8.G.....+C.*.| +000002e0 e8 80 c6 63 68 bf fe ae 05 08 c7 4e 52 2f 2e 08 |...ch......NR/..| +000002f0 62 2b 2a 06 f2 f0 e3 22 be c6 8f 72 82 fd 33 29 |b+*...."...r..3)| +00000300 58 c8 5f 6d 36 d6 4c 02 c5 c5 e6 f2 66 1a f3 17 |X._m6.L.....f...| +00000310 03 03 00 a3 4e ac b9 1a db ec b9 f6 82 f6 07 c7 |....N...........| +00000320 7c a3 cf 11 bc 18 c1 8e 5d bc c4 52 af ac 20 a3 ||.......]..R.. .| +00000330 a0 90 28 01 6f 81 18 7f 14 d4 fd 87 55 54 13 73 |..(.o.......UT.s| +00000340 95 49 1b ad a8 29 d9 8d 5e 6e 02 49 2f a8 e0 a6 |.I...)..^n.I/...| +00000350 48 dc e5 6d 8e d6 7f 8f fe 40 94 c9 5b 3d 63 c4 |H..m.....@..[=c.| +00000360 85 a5 97 27 db 31 64 67 ab 81 62 8a 2b 2a fd 61 |...'.1dg..b.+*.a| +00000370 b1 c8 c8 d3 c4 e0 ad 5d 7a 59 1a 62 0c 2b e9 7e |.......]zY.b.+.~| +00000380 bb 6b af 63 f0 32 f1 b8 72 13 ca 69 06 cf 82 67 |.k.c.2..r..i...g| +00000390 8e 76 7a c2 d4 96 c9 ab d4 dd a4 22 c3 e3 32 a4 |.vz........"..2.| +000003a0 e6 e1 fd 3a 56 95 2a 0e ef 5c 87 d3 b0 e3 27 04 |...:V.*..\....'.| +000003b0 61 1a 5e 1c 9a 77 09 17 03 03 00 35 29 50 c2 81 |a.^..w.....5)P..| +000003c0 02 68 53 fe ef 46 7c eb 0c 2f 00 c1 67 8f 25 b6 |.hS..F|../..g.%.| +000003d0 6a fd 51 3a db fc cb 50 c8 32 9b cf 5a ba be ab |j.Q:...P.2..Z...| +000003e0 c8 fb 58 d5 5c 77 66 65 70 a2 2c 65 d2 5c 22 51 |..X.\wfep.,e.\"Q| +000003f0 09 |.| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 02 11 77 e3 de 64 ac |...........w..d.| +00000010 38 0a da af 1f ce 7a 60 a6 34 74 5b 5f d5 c1 72 |8.....z`.4t[_..r| +00000020 7f b9 4f e8 19 26 35 c2 9a 0a d5 19 50 72 72 b3 |..O..&5.....Prr.| +00000030 de 05 ac 50 78 2a 69 8a 7f c2 5c d0 a5 58 70 b6 |...Px*i...\..Xp.| +00000040 18 86 f5 92 83 20 fc d5 fb fc 28 89 a0 5c 5e d3 |..... ....(..\^.| +00000050 d2 c8 d7 6e 31 47 a0 bc 9a f0 e6 75 be 55 a4 43 |...n1G.....u.U.C| +00000060 b0 e5 42 f6 66 f0 2c dd ce 9c 35 3d 93 a9 af 85 |..B.f.,...5=....| +00000070 1c df 81 5f a3 19 95 45 ec 18 ce 92 91 4e 7c 59 |..._...E.....N|Y| +00000080 12 dd b5 45 44 9d 1c b2 d3 53 a4 5b ce b6 49 c1 |...ED....S.[..I.| +00000090 1d 22 27 73 1f f3 46 ba 05 fd 2d ac d2 ae 9b 7a |."'s..F...-....z| +000000a0 33 d6 9d a9 fd 29 f7 d9 57 69 91 36 10 f7 93 50 |3....)..Wi.6...P| +000000b0 b1 c4 88 0b 55 de c4 8e 0f d3 60 9c cb 95 4a 2d |....U.....`...J-| +000000c0 35 37 29 03 4f a0 52 33 c9 98 60 88 33 0d f1 68 |57).O.R3..`.3..h| +000000d0 eb 02 f7 15 70 36 d7 86 38 18 ce 89 e5 39 2e c0 |....p6..8....9..| +000000e0 ca 23 07 2b f3 74 df 77 bc 48 5e db a4 c3 7e 68 |.#.+.t.w.H^...~h| +000000f0 8c b3 53 c4 69 b3 45 db be c5 04 b9 00 9e 3c 48 |..S.i.E.......| +00000170 2a be 2e 04 7a f5 ee d2 6b 55 f5 3c f8 46 1a 60 |*...z...kU.<.F.`| +00000180 a4 8d ef bb 3e 5c 35 44 73 4b d7 a9 22 ad 9e cb |....>\5DsK.."...| +00000190 95 01 14 2c a2 0f 72 2e 53 64 3f 11 44 9b da fb |...,..r.Sd?.D...| +000001a0 d5 be 42 f5 c1 c8 b2 12 6b 3c 00 27 8e 32 a3 2c |..B.....k<.'.2.,| +000001b0 7e d9 6f 03 2f 29 c3 84 3d 80 c3 cd a0 88 ef 7b |~.o./)..=......{| +000001c0 c7 52 14 2e f5 ba 12 05 1d 57 0d a9 57 7d 6b e8 |.R.......W..W}k.| +000001d0 07 09 8a 73 9e 17 30 3a 23 b5 2b 7c 20 f0 11 8b |...s..0:#.+| ...| +000001e0 50 0c 56 d3 35 9c d9 46 53 f2 dc 8a 76 41 7b d8 |P.V.5..FS...vA{.| +000001f0 d7 4b d7 c1 29 c8 41 46 a7 0a 30 85 a4 a8 d4 64 |.K..).AF..0....d| +00000200 93 13 fc 47 88 46 0d f7 fe ae cb 0a 55 89 64 c8 |...G.F......U.d.| +00000210 ab 0b 7f bb a1 d9 7c a4 56 fb ee 1f 17 03 03 00 |......|.V.......| +00000220 99 85 55 c5 ed 66 4f 93 f3 7a 7c 96 5e 75 1e 34 |..U..fO..z|.^u.4| +00000230 b1 3a ba b6 e7 2e de 4c b4 2f 06 ee fe a7 14 f8 |.:.....L./......| +00000240 32 3b 20 cf 9d 93 16 2a 80 e7 cc 46 de 13 f8 7e |2; ....*...F...~| +00000250 0b 83 69 de 4c 7d f2 cd 5e 23 30 8b 38 b9 68 cb |..i.L}..^#0.8.h.| +00000260 fe d9 dd ed e3 ad 59 50 71 6b f3 9c ce 6c 89 01 |......YPqk...l..| +00000270 cc 89 ed b0 71 87 10 c4 0b 47 45 c9 4f 16 b8 2d |....q....GE.O..-| +00000280 88 41 6e 5e 4e 26 fa 28 10 e5 f3 74 ed a1 ba 17 |.An^N&.(...t....| +00000290 cd 58 fa 60 26 f0 64 6f 61 51 0d 51 b3 32 bd 8e |.X.`&.doaQ.Q.2..| +000002a0 8a e7 8f b2 f6 c7 30 d3 22 a7 1e 0d 15 aa 64 db |......0.".....d.| +000002b0 26 11 e1 38 73 ee 29 b9 1f 34 17 03 03 00 35 cb |&..8s.)..4....5.| +000002c0 c3 5c e5 0f 1a 9b dd 44 04 89 12 b5 a2 7d 30 8f |.\.....D.....}0.| +000002d0 bd 67 6a 98 f0 f9 f9 7d 01 66 6e 28 05 45 56 89 |.gj....}.fn(.EV.| +000002e0 df 1f ba b8 1e 22 56 e1 e3 1c 1c dc dd 01 53 ed |....."V.......S.| +000002f0 50 39 3e c2 17 03 03 00 17 c2 af ed 30 35 b0 dd |P9>.........05..| +00000300 99 be 51 2a dd b8 68 2c 62 ac c2 a8 38 d0 a5 53 |..Q*..h,b...8..S| +>>> Flow 4 (server to client) +00000000 17 03 03 02 da 67 9d 9c f7 2d bf 7b bb 80 c0 6d |.....g...-.{...m| +00000010 d5 18 94 70 77 34 15 6e 81 08 7b db 88 77 80 ee |...pw4.n..{..w..| +00000020 d6 a6 ce 4e 7d 49 87 5e 05 b5 e5 9c cc 36 82 c2 |...N}I.^.....6..| +00000030 eb 9b 42 ed 9b 5d 6b ac 35 21 29 76 6c 84 a6 e2 |..B..]k.5!)vl...| +00000040 29 f8 74 3d b9 c3 0e 24 45 88 c5 19 19 e1 64 35 |).t=...$E.....d5| +00000050 a2 71 a5 42 c0 9c cc f3 51 93 f1 e5 c4 29 09 a6 |.q.B....Q....)..| +00000060 6f bc 47 e6 ba cf 5b 64 0e 18 e1 dd e8 4f d5 59 |o.G...[d.....O.Y| +00000070 b3 84 0d 70 12 51 9c fc f8 51 ff 53 30 e3 a7 0d |...p.Q...Q.S0...| +00000080 89 82 ce 0f ff 33 b8 e8 24 5b 35 fa 56 47 11 b3 |.....3..$[5.VG..| +00000090 77 10 c6 f6 3e a6 d0 e7 82 42 5e c0 5b 4a 1d 43 |w...>....B^.[J.C| +000000a0 0e 84 77 29 c0 69 fe 42 d5 e1 3d 86 f2 c9 1b fe |..w).i.B..=.....| +000000b0 f1 54 f6 0f 8a 48 04 c4 5b d6 11 30 68 ce e6 fd |.T...H..[..0h...| +000000c0 59 78 18 14 a4 ce 5a 12 ec a3 31 b6 6f de 42 07 |Yx....Z...1.o.B.| +000000d0 e1 e6 04 da d3 33 28 ef ab 21 f2 d1 5e e3 9e 91 |.....3(..!..^...| +000000e0 89 ad e4 12 b4 5b 11 2c 19 7e c7 d4 40 60 17 3a |.....[.,.~..@`.:| +000000f0 37 9a fa 62 44 fa 7e 36 1b bc 0c 55 dd f2 f3 d3 |7..bD.~6...U....| +00000100 94 9c 6b 63 36 06 e0 ae 48 41 1c b5 c5 b7 03 bd |..kc6...HA......| +00000110 6e da 0d 68 4d 22 e9 7c 29 ad eb 85 9d 0b 85 14 |n..hM".|).......| +00000120 2e 0d 3a 1f 23 08 cf e9 57 38 a8 ae 48 a0 3b af |..:.#...W8..H.;.| +00000130 e6 1f 83 6f d3 e1 d2 ae 42 14 af 50 1c 4a 51 fd |...o....B..P.JQ.| +00000140 68 1d ad d7 71 2a 0f 16 52 07 8b f9 d0 48 c0 33 |h...q*..R....H.3| +00000150 4e 24 85 e0 61 26 28 db 44 93 86 78 74 02 1c 48 |N$..a&(.D..xt..H| +00000160 1e cd 2a 7b 33 b3 08 f3 ba af 71 c7 f1 d8 af 46 |..*{3.....q....F| +00000170 d8 88 dd 22 cc d7 d8 96 98 ca 20 d1 5c 7a 59 ab |..."...... .\zY.| +00000180 df 66 0b 59 05 40 92 7b 8f 78 ac 67 90 d5 eb 24 |.f.Y.@.{.x.g...$| +00000190 4a 05 c3 5f cc 64 7d 26 30 2a 25 d8 8e b5 e6 a6 |J.._.d}&0*%.....| +000001a0 b2 85 a3 cf d4 04 1e d8 92 bc 8e 2b ad c0 ff 52 |...........+...R| +000001b0 79 8b 82 55 cd 39 7d 8e a5 4c dc bf 81 ac 1a e6 |y..U.9}..L......| +000001c0 ed df 61 c8 ad 70 dc 75 5b cc e9 a7 8d 96 74 a7 |..a..p.u[.....t.| +000001d0 7a 94 3c 60 65 1c 7f e1 89 2d c0 80 5f 2f fd 9c |z.<`e....-.._/..| +000001e0 66 2f ad 73 c3 96 8d 74 c6 cd 68 74 39 49 87 4c |f/.s...t..ht9I.L| +000001f0 2c 77 3c c4 c5 4e 9a 71 1e 69 86 3a fb a8 d2 e2 |,w<..N.q.i.:....| +00000200 9d 63 60 e5 f7 d2 63 a8 f2 5b f7 cb 57 32 00 be |.c`...c..[..W2..| +00000210 f2 f3 9c ae a5 f1 9d 05 be 8a c1 ed 8f f9 d0 51 |...............Q| +00000220 85 5e ca ce 92 45 ca b4 ce 6e 26 11 9d 94 38 22 |.^...E...n&...8"| +00000230 40 34 dc bc a0 34 f6 48 26 38 7a 59 f8 c8 d6 c4 |@4...4.H&8zY....| +00000240 35 24 82 96 19 49 bb 24 5f 25 fc c2 a0 b7 89 4f |5$...I.$_%.....O| +00000250 8f 71 e1 c6 da 4f 96 fa 3f 5c 73 96 41 86 1c 9d |.q...O..?\s.A...| +00000260 9a eb 7a fa bc 59 e9 4c 09 cf e5 95 33 27 7a a6 |..z..Y.L....3'z.| +00000270 61 fc ff 39 38 1e 65 79 75 48 b0 48 66 bd ad 77 |a..98.eyuH.Hf..w| +00000280 4a d3 ce 91 65 e4 72 51 87 88 8a 2a b7 55 c4 46 |J...e.rQ...*.U.F| +00000290 cc 35 ef d4 aa fc bb 70 36 10 7f f3 2e 8c a0 2f |.5.....p6....../| +000002a0 7e 14 f3 c0 5d 18 55 71 bd e9 36 dc 2f a6 9b c1 |~...].Uq..6./...| +000002b0 b5 c5 64 f7 6e a5 8e 93 71 c6 3e ef ef c1 34 2b |..d.n...q.>...4+| +000002c0 f6 9b e7 ad ff a0 ec 14 0d ce 6c c7 c5 b6 c2 c2 |..........l.....| +000002d0 a4 de d3 b9 1e d9 0c f4 67 9a 33 fe f7 35 84 17 |........g.3..5..| +000002e0 03 03 02 da 81 75 4f 5f 38 a9 da c7 88 88 09 ee |.....uO_8.......| +000002f0 fd fc 5b 2a de 6c a7 d4 59 20 69 0b 5f 77 e9 9c |..[*.l..Y i._w..| +00000300 59 bd ed 59 d6 f2 5a 43 49 1b 0c 9a 4a ca e8 bb |Y..Y..ZCI...J...| +00000310 d1 d7 65 55 98 ec 0b 6b 22 a3 3e f1 12 23 d3 f2 |..eU...k".>..#..| +00000320 cc e3 b9 cf 0f 4a 9b 16 a1 09 69 71 75 90 0d 85 |.....J....iqu...| +00000330 37 90 de c9 c1 0a b2 af aa 1c e9 96 17 49 11 01 |7............I..| +00000340 74 f1 23 39 ea cb 33 d1 45 af ae 2a 11 59 7f 4a |t.#9..3.E..*.Y.J| +00000350 fb 57 ba ef 32 13 a1 ca 9c 31 d1 a8 6a c8 67 de |.W..2....1..j.g.| +00000360 13 46 60 76 4c cf be 6c 45 ae e8 29 9f 34 e9 a6 |.F`vL..lE..).4..| +00000370 0a ed ff 8a 47 67 76 ac a0 6a 02 1f 77 28 a2 fd |....Ggv..j..w(..| +00000380 fa c1 ff 43 a6 23 54 0b c2 53 cb 1e f1 ba 4c a1 |...C.#T..S....L.| +00000390 55 ec af b6 b3 be 4a 2a 26 21 d1 68 b5 f5 cd da |U.....J*&!.h....| +000003a0 c4 14 8c 5c 5e 13 31 35 d5 e8 44 a8 ff 08 bc 79 |...\^.15..D....y| +000003b0 91 a0 42 21 67 09 fc d2 b9 95 d6 b1 da c8 75 9e |..B!g.........u.| +000003c0 d7 77 81 cb 35 34 29 c4 c8 62 c3 cd d4 9d 68 5f |.w..54)..b....h_| +000003d0 7e 14 7a 63 d9 84 22 6f 7e e8 5b f9 b5 94 ab 81 |~.zc.."o~.[.....| +000003e0 fc 02 0a 37 6b 71 28 25 fb f6 ab 62 a2 8d 09 73 |...7kq(%...b...s| +000003f0 74 84 39 dd 25 e8 a3 f7 bc dc 11 4a 51 41 31 05 |t.9.%......JQA1.| +00000400 63 8e 92 48 5a a4 81 63 4c 3a 59 96 9f 55 3f fd |c..HZ..cL:Y..U?.| +00000410 fb 68 6a dc 6c e2 69 79 20 b5 1e b7 08 a1 71 a9 |.hj.l.iy .....q.| +00000420 62 64 f3 5e ea dc 46 25 02 fe 3b ce b3 6e 81 de |bd.^..F%..;..n..| +00000430 31 e0 e3 d4 89 39 91 0b 60 dc b5 46 f6 e9 f8 92 |1....9..`..F....| +00000440 d7 f0 00 aa 2c 4a d8 fc fb 11 c5 cf 21 d9 0f 8e |....,J......!...| +00000450 49 92 57 53 9c 5a 0e 2a 05 e5 e3 88 6d dd 4f 84 |I.WS.Z.*....m.O.| +00000460 f7 45 d5 aa a0 ff a5 c7 fb f3 77 76 35 a8 01 b2 |.E........wv5...| +00000470 f6 95 2f e8 f7 b8 87 94 22 d6 ad 11 dc 73 47 b3 |../....."....sG.| +00000480 5f ac ac 6f 34 84 d9 ca 50 a9 de 06 49 c7 3a 41 |_..o4...P...I.:A| +00000490 d1 bc be c9 4f 7a 7d 6a 1e dc 51 ca f1 b9 20 f7 |....Oz}j..Q... .| +000004a0 f9 04 d3 d1 05 0a 36 cf 28 bd 6f 71 6e 9c fb a8 |......6.(.oqn...| +000004b0 7e 88 df 6e b3 e9 5f 7a 46 34 60 96 24 a3 f1 1d |~..n.._zF4`.$...| +000004c0 bd cb 34 fa 0d 54 91 03 01 9b 5d d5 95 e6 51 0d |..4..T....]...Q.| +000004d0 21 d0 99 c3 4f 3f bf 49 64 a8 5b 5d 46 e9 a4 ed |!...O?.Id.[]F...| +000004e0 09 c9 21 4f 13 60 34 51 db d8 44 d5 d3 84 59 6d |..!O.`4Q..D...Ym| +000004f0 8b 73 67 4e fc e3 8b 27 64 89 a3 12 6f fd 4b 27 |.sgN...'d...o.K'| +00000500 a0 80 a1 61 46 9c 16 2a 1f 22 31 a3 3c 9a 4b 7b |...aF..*."1.<.K{| +00000510 cc 25 9d 83 33 9f 62 0f 55 8a 7e 8a 2b 3b b8 7c |.%..3.b.U.~.+;.|| +00000520 3d 50 3d 85 ed 98 68 8d e9 7f 70 f9 2e 56 79 fa |=P=...h...p..Vy.| +00000530 39 53 59 74 f9 fb a2 47 fb 22 39 10 c7 03 6c 78 |9SYt...G."9...lx| +00000540 b5 7e b8 4e c2 3f 09 38 36 f9 b5 a6 2a 2a 33 aa |.~.N.?.86...**3.| +00000550 9b c6 29 db df 07 d7 f1 db 09 88 27 07 70 95 b2 |..)........'.p..| +00000560 a9 ce 9d 2d 25 23 cb 8f 67 6b 2f cc 3b 01 9c c3 |...-%#..gk/.;...| +00000570 04 7c ce ed 8b c0 e7 ed 4d 6f a9 1e 7e 87 26 e0 |.|......Mo..~.&.| +00000580 6c ed 02 93 5e 89 91 2b f8 5c ac 37 e3 6c 0d 71 |l...^..+.\.7.l.q| +00000590 2d 13 42 28 b2 db c5 75 9d 93 da 6e b2 11 89 f6 |-.B(...u...n....| +000005a0 c8 33 1a 22 92 fe 60 3f c0 d2 79 f1 ca 5f 7f 3c |.3."..`?..y.._.<| +000005b0 21 a6 21 b8 01 f3 d8 c9 5a 27 04 0b 7c 18 |!.!.....Z'..|.| +>>> Flow 5 (client to server) +00000000 17 03 03 00 13 27 46 19 d1 26 45 d8 b4 49 5c 53 |.....'F..&E..I\S| +00000010 7a 0c 87 9c 73 0d 3a af |z...s.:.| diff --git a/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS b/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS new file mode 100644 index 0000000..495f9ff --- /dev/null +++ b/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS @@ -0,0 +1,230 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 f8 01 00 00 f4 03 03 00 00 00 00 00 |................| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 32 cc a8 |.............2..| +00000050 cc a9 c0 2f c0 2b c0 30 c0 2c c0 27 c0 13 c0 23 |.../.+.0.,.'...#| +00000060 c0 09 c0 14 c0 0a 00 9c 00 9d 00 3c 00 2f 00 35 |...........<./.5| +00000070 c0 12 00 0a 00 05 c0 11 c0 07 13 01 13 03 13 02 |................| +00000080 01 00 00 79 00 05 00 05 01 00 00 00 00 00 0a 00 |...y............| +00000090 0a 00 08 00 1d 00 17 00 18 00 19 00 0b 00 02 01 |................| +000000a0 00 00 0d 00 18 00 16 08 04 08 05 08 06 04 01 04 |................| +000000b0 03 05 01 05 03 06 01 06 03 02 01 02 03 ff 01 00 |................| +000000c0 01 00 00 12 00 00 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000d0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 63 54 7d 13 b3 |....z...v..cT}..| +00000010 e2 34 2b ce 4b 8e 0a 74 db b8 ef cd f9 6e 3f cf |.4+.K..t.....n?.| +00000020 01 22 34 82 8a 44 42 65 2e 5f 3d 20 00 00 00 00 |."4..DBe._= ....| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 d6 |..+.....3.$... .| +00000060 4b 8a 50 d0 fb 13 86 36 0b a1 52 2a a3 e4 f9 4f |K.P....6..R*...O| +00000070 57 35 33 a7 d4 6d 4f 84 fc 83 58 78 d9 85 0c 14 |W53..mO...Xx....| +00000080 03 03 00 01 01 17 03 03 00 17 1f 19 9a c9 99 fd |................| +00000090 a7 26 d2 26 17 74 5a 9c 69 92 c5 d0 bc 40 6f f2 |.&.&.tZ.i....@o.| +000000a0 6d 17 03 03 00 20 f9 64 91 4c cd 2c 70 2e 09 4f |m.... .d.L.,p..O| +000000b0 89 52 61 ac 1c 1d a4 f6 45 30 c3 59 eb 6d ba 83 |.Ra.....E0.Y.m..| +000000c0 17 53 34 54 98 37 17 03 03 02 7a 9e 5b 62 72 9f |.S4T.7....z.[br.| +000000d0 4f 8c 72 a7 1a a7 b4 ac 72 36 b2 21 8c 91 a3 4b |O.r.....r6.!...K| +000000e0 a4 ed 5d f7 a7 0b 68 c1 db 68 40 04 6f 3e b6 3c |..]...h..h@.o>.<| +000000f0 4c 67 84 d1 b1 9b d8 84 e3 28 b8 09 6e 7a 6d 6a |Lg.......(..nzmj| +00000100 91 d3 80 af 4b 2d b5 4e 0c ed 81 90 75 2e f8 1c |....K-.N....u...| +00000110 7f d3 c9 99 6e ba ff 42 eb 05 fb c6 5a f7 7b 5a |....n..B....Z.{Z| +00000120 14 c9 52 21 a6 44 a5 0c 9f 37 bb 78 c1 d9 e8 7b |..R!.D...7.x...{| +00000130 f3 44 84 06 32 a0 67 af d1 5c 03 f8 2b e4 5a c5 |.D..2.g..\..+.Z.| +00000140 18 be 1e bd dd 0c c4 84 0d 23 5e fd 2f f8 c9 4d |.........#^./..M| +00000150 86 e0 eb 41 66 0d de dd ab 6f 6c 9c 4e ab b0 14 |...Af....ol.N...| +00000160 a8 7c 6a 95 c9 02 30 df 9f 5a 45 4a 66 1e b4 15 |.|j...0..ZEJf...| +00000170 c0 ba cb 47 7b a1 4f ab df 81 f5 9a 2a 42 3a 1b |...G{.O.....*B:.| +00000180 35 f7 5b b1 c7 43 c1 b8 5a 1e b6 74 43 d8 97 2c |5.[..C..Z..tC..,| +00000190 63 7e 7d dd 37 77 0e 36 3f 2e cf 84 12 20 a6 5c |c~}.7w.6?.... .\| +000001a0 34 eb 09 25 03 89 47 89 9e cb 46 74 b9 21 2a 5f |4..%..G...Ft.!*_| +000001b0 63 fc 8e 2d f4 9f a6 4a 41 bf b8 3a a6 a1 7c 33 |c..-...JA..:..|3| +000001c0 1c 86 52 b0 ff a0 66 3d 39 55 36 e5 89 21 2f c4 |..R...f=9U6..!/.| +000001d0 3a 07 81 75 6d 62 15 9a 94 2b 5a f5 01 43 c3 a8 |:..umb...+Z..C..| +000001e0 b6 7d 71 3c 4d 96 8d e3 3a 3f 6f 33 5f 63 01 7d |.}q....| +00000200 23 d7 d2 ca 3d 6e e5 71 34 14 02 71 b1 20 e9 05 |#...=n.q4..q. ..| +00000210 2a b6 cc 50 a5 9c b3 ca f7 f7 b4 fc ef 24 4d 47 |*..P.........$MG| +00000220 e7 8c 0f f7 36 90 4c b5 c5 70 07 f7 33 c8 0f 42 |....6.L..p..3..B| +00000230 f9 e1 00 11 d8 ba 71 31 44 a5 84 15 56 d3 0b ec |......q1D...V...| +00000240 78 38 f4 ed 74 df e4 67 33 7f e8 1a c5 70 af 1e |x8..t..g3....p..| +00000250 65 f6 26 f0 02 e0 71 c0 89 48 96 06 92 b7 12 21 |e.&...q..H.....!| +00000260 bd b5 e0 30 c0 bd 5f ed 55 6b fa 3f c3 b6 30 2e |...0.._.Uk.?..0.| +00000270 d2 71 4f a3 45 f8 f8 ec de 23 28 0a 43 ae 73 69 |.qO.E....#(.C.si| +00000280 4c a1 d7 02 12 e8 f4 b6 7d 6c 3b 0f 7f 31 a8 dd |L.......}l;..1..| +00000290 41 f0 06 29 19 de b3 56 61 b0 55 6a bc b3 71 e7 |A..)...Va.Uj..q.| +000002a0 13 02 d6 cc ae 60 c1 32 5d be 8f 32 c0 21 95 b9 |.....`.2]..2.!..| +000002b0 e6 c6 cb 97 d9 66 12 a2 03 fb 3d 9d 15 dd 19 ef |.....f....=.....| +000002c0 62 f5 80 4f b9 27 e8 73 a3 21 57 04 bd 61 4e c8 |b..O.'.s.!W..aN.| +000002d0 44 93 3b 8c a3 32 39 ac 73 98 36 ba da 64 f4 33 |D.;..29.s.6..d.3| +000002e0 54 e9 ba ec f0 1d 75 74 ab 9b 18 dd c9 96 c6 66 |T.....ut.......f| +000002f0 a5 e3 48 47 76 f9 24 1d f7 84 05 33 d7 d8 ac 02 |..HGv.$....3....| +00000300 02 a4 65 14 7f 63 46 aa cd 6f ce 1a ab 5a bc 48 |..e..cF..o...Z.H| +00000310 15 db 93 55 9b 1f a8 b0 d7 ab 51 ab 8f 0d 0e 04 |...U......Q.....| +00000320 f3 4e 73 92 76 89 1c e4 0f 9d 00 19 6a 2b a1 6c |.Ns.v.......j+.l| +00000330 aa d9 21 df e5 c8 9d 6c bc 93 f2 0c 0c f6 86 c3 |..!....l........| +00000340 26 37 53 af f0 17 03 03 00 99 cd cf 63 df fd 8b |&7S.........c...| +00000350 a7 90 61 f2 37 21 17 d4 a7 c4 20 7c e3 16 2d 9b |..a.7!.... |..-.| +00000360 c4 c1 6a 87 2d 63 55 7e 17 ef aa f1 6d fe d1 37 |..j.-cU~....m..7| +00000370 f8 90 0d 34 db 45 20 6e 73 0d f1 eb 2d d4 6b 4a |...4.E ns...-.kJ| +00000380 23 f9 d5 5f 49 75 4d 02 b0 39 fd ee ef f5 65 08 |#.._IuM..9....e.| +00000390 d8 f6 ce fa 2a 3c 20 41 1f 5d 38 cc b4 39 0b 52 |....*< A.]8..9.R| +000003a0 29 93 0b ce 4c c4 7a 7c 92 81 8b ca 0b 5e 31 8f |)...L.z|.....^1.| +000003b0 6d 06 03 6f 25 19 52 f3 8f 3a 47 33 9b 15 d5 4f |m..o%.R..:G3...O| +000003c0 c8 db 6a fe fb d1 9e 32 ab 2e b2 10 83 20 c3 34 |..j....2..... .4| +000003d0 f8 35 62 fc 30 99 9a 72 ff 57 33 fd 73 0c 08 bc |.5b.0..r.W3.s...| +000003e0 d4 da f0 17 03 03 00 35 27 67 18 21 60 ca 5f e5 |.......5'g.!`._.| +000003f0 33 00 27 83 87 7c df 42 12 ba 89 78 eb b8 fa 6e |3.'..|.B...x...n| +00000400 a1 65 f4 33 e8 e8 99 c6 4f 71 a0 ff b8 08 5b 02 |.e.3....Oq....[.| +00000410 1b 82 b6 58 e2 d7 d7 e5 72 1b 81 a4 93 |...X....r....| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 02 11 5e 13 11 0e f1 |...........^....| +00000010 96 10 11 c9 e7 a3 dc 79 80 fc 2a a9 60 55 07 b2 |.......y..*.`U..| +00000020 59 b3 69 97 2f ef 14 58 9b 64 a3 19 71 fa ce 8b |Y.i./..X.d..q...| +00000030 86 34 92 82 f4 cd 17 c1 45 2f 69 e9 e7 84 1d 4c |.4......E/i....L| +00000040 d0 62 6e 30 40 e6 a7 a6 f1 c6 b2 ce 88 ae 5a 05 |.bn0@.........Z.| +00000050 06 d2 ab 40 6b d4 17 fa 89 69 41 46 bf 96 23 37 |...@k....iAF..#7| +00000060 07 04 5d 62 32 98 da db a4 67 c8 7a 81 55 00 1d |..]b2....g.z.U..| +00000070 e2 ce c3 44 2a 24 23 c0 ef aa 8f c6 14 75 fb ad |...D*$#......u..| +00000080 bb 4a b5 7d c3 dd 69 29 9b 05 60 80 1c 66 c4 4a |.J.}..i)..`..f.J| +00000090 cc 63 fb 8a 8a cf 44 05 80 7f ed 0b c1 e0 8f 14 |.c....D.........| +000000a0 9b 4b f8 39 f8 03 c2 c5 97 62 61 f5 7b 38 ac 07 |.K.9.....ba.{8..| +000000b0 2b c5 c6 5a 10 fc 28 20 c7 56 2c c6 92 28 4c dd |+..Z..( .V,..(L.| +000000c0 a2 01 f5 90 e2 5b 9b a4 07 ef 28 27 c6 7c fb d1 |.....[....('.|..| +000000d0 84 2f d4 ab 5d dc 13 a3 49 9d ce c5 3f c6 a4 90 |./..]...I...?...| +000000e0 43 9c ba c8 96 c7 8b c3 a0 63 e9 99 4f d5 49 a2 |C........c..O.I.| +000000f0 c2 a8 cd ff 5b e0 fc 29 85 80 bd 62 c1 22 c0 b1 |....[..)...b."..| +00000100 b8 1d f0 ed d3 17 22 13 5f 06 5d a1 bd 04 ae 34 |......"._.]....4| +00000110 d1 60 70 ad 60 10 fa da 90 82 87 09 cd 0c f7 aa |.`p.`...........| +00000120 1f 10 90 a5 cc b1 44 11 f6 62 92 ed 23 7b 7d 1e |......D..b..#{}.| +00000130 90 a1 9c 7b 5a e7 d1 f4 41 8f 8e 1f ba 4e cd 51 |...{Z...A....N.Q| +00000140 fe 38 f2 f5 3d 6a b3 c9 9b 36 6e 58 ad c3 5c d5 |.8..=j...6nX..\.| +00000150 54 63 e3 c6 c2 14 96 ee 46 03 cc 14 b9 09 73 0e |Tc......F.....s.| +00000160 1c ad 32 12 ba 85 a9 8b b4 fe cb e9 98 f0 f9 fa |..2.............| +00000170 5a 8d 88 79 54 e7 8e e7 c2 ac d9 2a f1 1d b5 39 |Z..yT......*...9| +00000180 ba 3e f0 af 08 3f f8 50 1d 8c ca 9e b2 47 c3 68 |.>...?.P.....G.h| +00000190 12 3b 60 38 b0 d8 da b6 15 ff 0e b4 76 28 0f e9 |.;`8........v(..| +000001a0 56 b3 41 b3 55 68 88 f7 66 41 5c 98 90 5e 10 ad |V.A.Uh..fA\..^..| +000001b0 20 82 a3 09 77 fb 45 3d 2c 0e 2c 5b 25 02 94 87 | ...w.E=,.,[%...| +000001c0 e5 ee 1c a1 05 e3 70 33 7e 9a 16 55 92 35 c2 91 |......p3~..U.5..| +000001d0 f8 0a 3d 2d f0 af ba e4 93 b3 98 4b 04 6d 6b b3 |..=-.......K.mk.| +000001e0 ac 76 c8 48 74 84 99 d5 58 95 f1 c7 f6 2c 05 d1 |.v.Ht...X....,..| +000001f0 7c 47 55 be 90 27 17 df 02 49 a6 b1 4b 92 23 9a ||GU..'...I..K.#.| +00000200 12 8a 3a 56 51 e6 4a 92 1c ae 19 de 57 b2 df b0 |..:VQ.J.....W...| +00000210 df 07 94 a3 e0 ea 81 e3 fc d0 35 2d 17 03 03 00 |..........5-....| +00000220 99 47 fd c2 4d a0 5f b9 dc 3b 3c ae 1e d7 c5 d6 |.G..M._..;<.....| +00000230 94 05 6a 61 72 6e b9 29 b7 d4 e2 9b 26 6c 86 94 |..jarn.)....&l..| +00000240 e0 7f 1d 66 1d 90 bb 09 fd e8 83 32 51 6c a1 96 |...f.......2Ql..| +00000250 28 c3 5f c0 69 d5 09 00 60 b8 05 de 45 88 51 b8 |(._.i...`...E.Q.| +00000260 f0 ed 67 57 97 8f b9 82 ed 4b 31 66 f2 7e e5 a4 |..gW.....K1f.~..| +00000270 92 2b cc 63 b5 98 ea 57 6c 44 51 f6 de ee 3b bf |.+.c...WlDQ...;.| +00000280 ac 25 c8 21 a9 74 f8 ca 61 69 93 95 83 c9 f3 da |.%.!.t..ai......| +00000290 17 e5 3d 82 05 c2 3f e8 80 92 e0 14 b5 b8 40 63 |..=...?.......@c| +000002a0 3a e7 cd 39 5e e5 1c a4 31 8a 74 97 1e 16 fb 0a |:..9^...1.t.....| +000002b0 2c 0d d5 fa aa b2 4b de 59 56 17 03 03 00 35 ab |,.....K.YV....5.| +000002c0 07 57 5c 79 b1 5f 13 6a 37 e7 a4 a1 97 0c 87 cb |.W\y._.j7.......| +000002d0 84 1e fd d7 15 ec 37 c4 18 83 41 c7 c1 26 cf 1b |......7...A..&..| +000002e0 43 5e 2a 06 1b be 66 42 84 46 f5 e0 d6 a7 83 cf |C^*...fB.F......| +000002f0 08 d9 30 a6 17 03 03 00 17 dc b8 10 ea ce 82 16 |..0.............| +00000300 ff ce bc 5f 46 5d d0 61 9b dd bf 64 54 8e 54 b1 |..._F].a...dT.T.| +>>> Flow 4 (server to client) +00000000 17 03 03 02 da ad f0 96 2c a1 08 c0 c7 aa 43 b8 |........,.....C.| +00000010 23 65 61 d2 4b 56 54 a2 0c d4 31 12 5d 19 ac 38 |#ea.KVT...1.]..8| +00000020 b3 bd 72 1f e4 40 39 5d a5 95 85 93 ff 53 63 0a |..r..@9].....Sc.| +00000030 df 7f 79 39 07 75 c2 18 ef 4e 20 6b d6 81 6c 91 |..y9.u...N k..l.| +00000040 63 9a d8 45 99 2c ed e7 19 8e 4b 2d 06 c9 60 7e |c..E.,....K-..`~| +00000050 3b e7 68 bd 35 13 bb be 57 4a 43 01 74 3c 92 b6 |;.h.5...WJC.t<..| +00000060 f9 c3 6d 0f 26 80 3f 3d 5b 86 10 27 d8 51 71 d1 |..m.&.?=[..'.Qq.| +00000070 ad 5d d4 3d 8c 66 e7 db 9d 6f fe e2 f2 4e 56 7a |.].=.f...o...NVz| +00000080 76 02 94 d9 95 0f 64 8e 6b 89 b0 8c 82 c3 eb 22 |v.....d.k......"| +00000090 1d 15 64 5a e7 3c bd 3d 64 0b 44 3c 6e 13 79 27 |..dZ.<.=d.D.b./?...`.5| +000000c0 f6 8e 2e 7d ec 17 32 f6 f4 99 b5 8c 6d b2 e6 ba |...}..2.....m...| +000000d0 29 1a 85 c0 1c ea 8c 2d f2 b3 14 53 13 5d e9 2d |)......-...S.].-| +000000e0 db d5 7f 41 89 86 a6 88 e5 56 82 ba 6d 67 6a 33 |...A.....V..mgj3| +000000f0 02 f6 b9 6c 5b 89 02 4e 5e df d1 c4 46 61 69 08 |...l[..N^...Fai.| +00000100 18 91 6b 98 d1 97 bd 6c d4 71 d9 91 c6 9c d6 58 |..k....l.q.....X| +00000110 51 4a 34 72 34 be 59 50 4d 49 0c 60 d2 c1 bd d6 |QJ4r4.YPMI.`....| +00000120 54 5d 8e 3f db ec b1 9a f8 84 ce 69 ef 58 f0 63 |T].?.......i.X.c| +00000130 17 2b fe 30 df 57 e4 c1 42 1f 1f 49 8d a1 9d d7 |.+.0.W..B..I....| +00000140 82 b9 c8 36 59 4e f9 31 2b 3e 49 17 5d ac 30 9e |...6YN.1+>I.].0.| +00000150 1d a4 04 84 1b 88 51 47 4e a1 b6 5a 12 72 8f 1a |......QGN..Z.r..| +00000160 22 96 1c 7c a7 11 33 4c 40 33 03 cd ba fb 2d 4e |"..|..3L@3....-N| +00000170 8d d4 20 bd c8 d8 32 ab 81 fd c1 a5 a6 9e bf 4a |.. ...2........J| +00000180 26 69 be d8 62 b2 12 a8 4a 1b 44 42 20 1e fc 7d |&i..b...J.DB ..}| +00000190 de f1 3f f6 0e cb 3d 2a 2e d7 91 9a 74 d7 c9 24 |..?...=*....t..$| +000001a0 35 9e c9 78 d4 b0 d0 9d 43 60 45 e3 9b 91 5a a5 |5..x....C`E...Z.| +000001b0 47 cc 4e 1f 4b e6 ce 9a b3 ae 3f bd ca 2b 79 cd |G.N.K.....?..+y.| +000001c0 e1 e7 10 bb 80 fc f2 93 7c d5 b5 5b e0 51 88 94 |........|..[.Q..| +000001d0 53 4f 99 a6 f0 29 fa 11 56 3b 01 12 6b b1 24 5a |SO...)..V;..k.$Z| +000001e0 08 19 1f ed f1 c6 3a 09 ad bf d6 e3 37 17 1a e0 |......:.....7...| +000001f0 00 8a de 74 ad 3e 2f 99 e7 f4 3f fe 6d 9a a4 5a |...t.>/...?.m..Z| +00000200 de 5b 8a 17 86 60 0f 91 43 77 b7 34 9a f1 fb d0 |.[...`..Cw.4....| +00000210 34 df 0d 08 47 5a 47 f1 e4 43 86 d8 1e dd c0 7e |4...GZG..C.....~| +00000220 63 13 8f f3 01 a1 e1 70 d7 1b 9a 2b 82 3d c4 87 |c......p...+.=..| +00000230 af 6c 9d d2 bb f2 cd da 8e c6 e3 5b 19 ae 31 75 |.l.........[..1u| +00000240 1c b5 01 51 c9 38 1c 29 ca f5 8a a5 51 14 a4 e4 |...Q.8.)....Q...| +00000250 fe 46 86 47 c4 a1 7c 56 a0 e2 6e 50 f5 7a 15 1a |.F.G..|V..nP.z..| +00000260 6d 9f 6c 43 24 ce 9e 1e b2 8a f9 da 2e d3 6a 81 |m.lC$.........j.| +00000270 5d 14 97 75 44 f1 ba 81 55 0a 38 64 1f 40 7b 4a |]..uD...U.8d.@{J| +00000280 23 47 13 7e cd f7 6d 67 45 7f c7 4d 42 59 ad 42 |#G.~..mgE..MBY.B| +00000290 e1 67 53 25 dc e1 8e 56 f4 cc 14 00 9b d0 e2 d5 |.gS%...V........| +000002a0 b9 bf fa de 74 39 60 4f 24 7c 51 5e a0 34 05 53 |....t9`O$|Q^.4.S| +000002b0 23 01 b9 50 f4 f7 39 c2 f3 e1 62 5d d3 2a 43 98 |#..P..9...b].*C.| +000002c0 32 3e 3d 40 39 32 8b 6f db 77 53 ec ac 1e a3 95 |2>=@92.o.wS.....| +000002d0 24 b5 88 f8 62 e9 f7 a5 a3 20 8a be 02 8a 58 17 |$...b.... ....X.| +000002e0 03 03 02 da 51 d2 ea aa e4 a6 65 20 5c c2 70 aa |....Q.....e \.p.| +000002f0 75 4e c1 40 69 7b 49 d7 25 65 a0 97 1e 69 5d d6 |uN.@i{I.%e...i].| +00000300 99 cf 32 fc 4c 3d 6b 6d b9 e5 db 20 ed 00 00 93 |..2.L=km... ....| +00000310 6d 6a 24 8a 2f 85 49 5b 2d 18 a8 08 ac a2 b2 4f |mj$./.I[-......O| +00000320 c5 52 4a 2f 94 7b d5 c4 87 21 0f 60 c6 c9 fd 06 |.RJ/.{...!.`....| +00000330 69 66 b8 8d 43 83 be 4e 64 23 e9 d8 01 02 af af |if..C..Nd#......| +00000340 cf 1d 8b 7d e7 38 c8 31 30 f7 e8 9f 17 46 35 9b |...}.8.10....F5.| +00000350 72 ba 65 6d 18 bd 0e b7 5e ec 3f c5 f5 f1 c0 dd |r.em....^.?.....| +00000360 a1 3d 1c 41 ca eb 0a 7e f9 ab a1 2e 32 be 60 79 |.=.A...~....2.`y| +00000370 0f 28 1d fa 4a 62 ff 4f 0b ba 84 a1 63 fa 4a 07 |.(..Jb.O....c.J.| +00000380 02 d4 7c bf 42 90 1b 38 cc 21 71 1e 70 f7 65 a3 |..|.B..8.!q.p.e.| +00000390 b5 a7 1e 54 47 ec 7f 65 8e 8f 3c 95 dc ee af 21 |...TG..e..<....!| +000003a0 52 7a 05 a6 51 5e 1c aa cd 5d 45 2f 11 31 2f 9a |Rz..Q^...]E/.1/.| +000003b0 cb e6 92 cd 21 b4 18 c1 12 bc 3c 9e d7 3b 3f 42 |....!.....<..;?B| +000003c0 b6 df b4 4e cc af 22 9e c3 5d 2d 2c 75 b6 0b 00 |...N.."..]-,u...| +000003d0 3d cf bb 3b 2a 14 70 49 f2 e7 c2 07 be 16 ca 83 |=..;*.pI........| +000003e0 b1 27 da 78 8b f0 b6 ef 2a e0 8f cb 50 f5 89 47 |.'.x....*...P..G| +000003f0 30 f6 84 57 21 de 33 e7 fb 58 26 6a 3f 3b 72 2b |0..W!.3..X&j?;r+| +00000400 23 a4 09 41 41 a8 86 bd c9 af 78 53 23 94 e6 6c |#..AA.....xS#..l| +00000410 87 1c f8 e9 96 b0 0e 37 b8 13 96 12 05 60 97 9e |.......7.....`..| +00000420 c7 d2 a3 33 4b 68 49 d4 b7 99 3c 94 c9 57 72 de |...3KhI...<..Wr.| +00000430 5a ff 9d ef 55 7b b9 35 e3 e1 13 ad 53 90 6e cf |Z...U{.5....S.n.| +00000440 2f 82 79 dd 95 ce b3 4d 5b c9 b3 3e 5e af 75 85 |/.y....M[..>^.u.| +00000450 9b c0 58 96 40 f9 28 04 0b 28 64 c4 9d f4 fa 9c |..X.@.(..(d.....| +00000460 ea 59 1a c2 db 98 13 8d 5f 8b f5 32 2d ab a6 70 |.Y......_..2-..p| +00000470 36 0d c8 f6 98 84 88 e8 31 23 c5 18 29 59 1a 5a |6.......1#..)Y.Z| +00000480 14 d3 fc 69 47 95 6d f9 a8 51 12 4a 91 9c 19 23 |...iG.m..Q.J...#| +00000490 64 1b 96 5c a3 45 c4 ef 58 22 9c e2 08 46 fd 23 |d..\.E..X"...F.#| +000004a0 3d fd e6 a2 5e 42 90 ac a0 ad 8f 27 2f 8a e8 97 |=...^B.....'/...| +000004b0 fa b9 72 a1 28 9a 71 87 68 9a ae 73 bb bc b3 6f |..r.(.q.h..s...o| +000004c0 cb c4 48 0c a8 50 b5 2d ad f0 ca 1e d6 0f 7e 9a |..H..P.-......~.| +000004d0 56 ad 3e 98 43 f4 7e 56 57 7f 79 6e 9a 99 15 62 |V.>.C.~VW.yn...b| +000004e0 98 a6 78 2e ce 18 3c 21 a5 66 7b c5 3c a1 48 49 |..x...b..P....N.}:d.| +000005a0 71 5c 16 4a d0 66 bc 0b cc b6 ba bd 53 ff b7 f5 |q\.J.f......S...| +000005b0 05 c6 e1 31 0b 18 69 74 e5 63 95 7d 34 cd |...1..it.c.}4.| +>>> Flow 5 (client to server) +00000000 17 03 03 00 13 8e f7 f6 9b 86 95 cc d0 fb 93 36 |...............6| +00000010 11 5a a4 7d 85 aa c7 c6 |.Z.}....| diff --git a/testdata/Client-TLSv13-ECDSA b/testdata/Client-TLSv13-ECDSA index 2d37066..55b8cc5 100644 --- a/testdata/Client-TLSv13-ECDSA +++ b/testdata/Client-TLSv13-ECDSA @@ -16,70 +16,101 @@ 000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| 000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 ea 51 d2 17 98 |....z...v...Q...| -00000010 38 87 56 24 96 d8 d2 5b 19 30 72 26 67 8b 3c 00 |8.V$...[.0r&g.<.| -00000020 88 61 ca f2 2f 46 d2 06 72 75 58 20 00 00 00 00 |.a../F..ruX ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 48 a3 75 25 ac |....z...v..H.u%.| +00000010 19 49 b6 e7 5a 9a c2 15 3e e3 a6 21 c0 f5 09 40 |.I..Z...>..!...@| +00000020 b7 ad fc 0c 39 1b 3c 44 36 13 9e 20 00 00 00 00 |....9.W. .J{J..G.2ci| -000000a0 2f 17 03 03 02 22 3d 8b c2 4f 07 ac cc e2 64 53 |/...."=..O....dS| -000000b0 8c 1f 79 c7 f0 00 6e 99 27 e4 1b a1 9b df b4 89 |..y...n.'.......| -000000c0 e5 31 a0 b9 5f 86 4a 87 2c d1 41 96 d6 e1 9d 7f |.1.._.J.,.A.....| -000000d0 07 50 84 86 ae dd f7 46 53 4e 60 2d 6a 7b 99 3a |.P.....FSN`-j{.:| -000000e0 af 8c 8c fb ee 66 f6 3d f2 87 56 ed cb 8f 99 3f |.....f.=..V....?| -000000f0 a0 1c bf c4 60 09 b3 01 4c 04 3f 10 c6 3e 36 9b |....`...L.?..>6.| -00000100 be e3 ee aa df df 58 78 c5 21 e4 98 0d 98 de 71 |......Xx.!.....q| -00000110 45 63 c3 b2 39 9e d2 c0 83 e6 b7 e0 6f b0 b0 04 |Ec..9.......o...| -00000120 fe c0 2f c4 32 98 82 6c ee f5 68 1c 21 e7 f2 2e |../.2..l..h.!...| -00000130 2f bf d1 17 21 ac da 03 d1 42 c3 85 78 c7 4f d8 |/...!....B..x.O.| -00000140 cf ca 1e 3f e1 ac a3 06 de 29 21 86 ee bb cc b0 |...?.....)!.....| -00000150 68 4a c5 65 a8 7f 90 8f 48 a1 df 24 57 36 6b da |hJ.e....H..$W6k.| -00000160 64 cb 52 56 76 9a 47 86 d1 8e ed d7 c0 85 9c 74 |d.RVv.G........t| -00000170 89 05 01 43 0b 69 dc 4a ed 61 eb 55 bf e5 3a a4 |...C.i.J.a.U..:.| -00000180 b9 39 6b 3b 71 cf 33 83 b1 54 59 71 b2 24 a0 1f |.9k;q.3..TYq.$..| -00000190 70 fe 58 ff 90 88 d9 91 55 d6 a5 ef 3d c9 0d 3b |p.X.....U...=..;| -000001a0 a0 57 de d4 c4 82 50 bd ff 9d 85 b9 90 10 df 92 |.W....P.........| -000001b0 5b 41 ec c2 41 2a 1d b6 d7 e1 51 08 92 a3 ef 98 |[A..A*....Q.....| -000001c0 4d 79 d8 37 11 df a1 3f 43 ed 0d 20 44 ca f2 94 |My.7...?C.. D...| -000001d0 ff e2 5e 05 b7 9c 4d b7 70 83 73 b1 d9 5a ed 7e |..^...M.p.s..Z.~| -000001e0 3a c6 08 3a 49 1d 4f 08 30 02 8f d8 3f cb 14 a3 |:..:I.O.0...?...| -000001f0 d5 74 7e 85 e8 f6 ab 6a 61 54 84 79 21 2a aa f4 |.t~....jaT.y!*..| -00000200 3d b3 42 df b7 d6 6f e8 29 50 cc f8 18 a9 f0 99 |=.B...o.)P......| -00000210 6b 44 c3 37 ef 3d 20 0b 28 10 b3 f9 ea f2 65 df |kD.7.= .(.....e.| -00000220 ae c6 28 24 c5 ea e1 bc ba 79 ad 02 c3 fc b2 cb |..($.....y......| -00000230 8a f3 70 80 5a d0 4b 2c 78 43 2a 18 71 2c 0c c0 |..p.Z.K,xC*.q,..| -00000240 45 f5 1b 47 1d f6 fb 75 53 ed d7 a0 e4 c4 2a 48 |E..G...uS.....*H| -00000250 e4 e8 37 33 fe d1 f0 96 dc 27 bb 40 41 b6 e6 9e |..73.....'.@A...| -00000260 18 bb 2d 5b b1 05 7c 5b 94 ef f6 af f4 64 b2 e8 |..-[..|[.....d..| -00000270 08 4c 1b 01 11 de 53 b5 f1 15 ff 6f 8a 08 ef cb |.L....S....o....| -00000280 74 d1 81 a6 c0 b5 ac 41 ec 30 5e f0 dc ec b1 70 |t......A.0^....p| -00000290 5f 53 e9 56 dd 48 05 4f 0c f0 7d a7 13 2a 33 d6 |_S.V.H.O..}..*3.| -000002a0 2b 4b 22 7f a9 b5 cf 1f 63 f4 c2 6c ee 0c 10 d0 |+K".....c..l....| -000002b0 96 06 2f aa 2b df 69 01 ee 3c b4 e9 f3 9d 7b 8b |../.+.i..<....{.| -000002c0 5f ff b3 a1 3a 03 df c6 17 03 03 00 a4 da 63 32 |_...:.........c2| -000002d0 c2 d8 9b 78 bc fa 59 d8 5a 4c 8c f1 f6 e0 26 39 |...x..Y.ZL....&9| -000002e0 fd 27 c7 0c 11 ad 3e 34 2e 0c 3c aa 83 a8 96 d9 |.'....>4..<.....| -000002f0 0c be 5d a7 8a 79 f9 08 67 8f 74 82 88 a1 0f f0 |..]..y..g.t.....| -00000300 1b 52 c3 7a 89 25 14 72 3b 0b 4c 82 e5 9c df ac |.R.z.%.r;.L.....| -00000310 e3 49 b1 ef 35 c0 df 6c 0e 5e b4 48 38 d1 d7 73 |.I..5..l.^.H8..s| -00000320 01 30 04 b4 67 37 32 92 79 9c 45 52 06 bd 25 af |.0..g72.y.ER..%.| -00000330 5a 0f 8d 98 4f c6 12 31 78 90 32 78 8c a4 49 a0 |Z...O..1x.2x..I.| -00000340 6e fb 2b 94 31 0d 05 a8 96 05 04 3b f5 80 a7 3c |n.+.1......;...<| -00000350 92 c9 ee ea c6 cb 24 a2 e2 c9 88 3e 09 50 8c 75 |......$....>.P.u| -00000360 d5 95 10 8f b0 f9 5b ec b5 d7 be aa 3c b0 e9 d0 |......[.....<...| -00000370 67 17 03 03 00 35 da 1d 4c 65 79 5b 84 e9 60 3e |g....5..Ley[..`>| -00000380 ac de 29 ad 8d 7e a1 9b ad 25 35 08 39 f1 75 6f |..)..~...%5.9.uo| -00000390 6b 11 66 fc 66 ff c7 88 7a fc d5 a6 24 c3 fc 7f |k.f.f...z...$...| -000003a0 6a aa 94 36 56 cd 75 66 1f 0b 7c |j..6V.uf..|| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 20 |..+.....3.$... | +00000060 db 3f 51 79 d2 24 e1 e1 a4 b6 f8 84 2d 25 27 ca |.?Qy.$......-%'.| +00000070 9a d2 5e cc 28 ac 5e 74 2a ea 1b 56 28 24 76 14 |..^.(.^t*..V($v.| +00000080 03 03 00 01 01 17 03 03 00 17 bc dd d4 00 24 28 |..............$(| +00000090 82 e2 0a 74 8f a6 06 9b 14 2d ca c1 90 6c 1c 8f |...t.....-...l..| +000000a0 7f 17 03 03 02 22 f9 8f 72 d6 f1 34 fa 90 0e 42 |....."..r..4...B| +000000b0 2d 2e a0 1d 9e 1f ce ee 79 af b6 b3 bd c2 6b 8f |-.......y.....k.| +000000c0 62 4c 5d 1c 1e 47 a7 77 97 ca 04 c5 16 f8 58 3a |bL]..G.w......X:| +000000d0 b7 33 15 bc 5f f0 13 7f 02 4d f2 80 95 84 6f 41 |.3.._....M....oA| +000000e0 df 03 c8 64 23 91 e5 8c e9 01 45 fe 8e 37 27 e0 |...d#.....E..7'.| +000000f0 47 83 43 a2 0f ef 3d eb 11 fb ba 52 2f 8e 43 97 |G.C...=....R/.C.| +00000100 1b fe 49 28 e7 ce 73 c4 3e 9d 18 9d 34 a4 b4 5e |..I(..s.>...4..^| +00000110 ee ec bf e3 75 fc 00 be b7 0e 80 f8 a2 db 90 a9 |....u...........| +00000120 62 74 35 c6 8e 36 55 68 4e 6c 94 b6 61 d7 d0 34 |bt5..6UhNl..a..4| +00000130 e8 83 ae c3 75 2d eb 35 95 d3 5f 28 3e 05 f3 ea |....u-.5.._(>...| +00000140 18 76 6b 6d b9 98 c0 d5 ea 6d 62 9b 15 d8 be 55 |.vkm.....mb....U| +00000150 8c f5 5a 3d 14 81 82 cc 8c 6c 34 2f e8 50 87 ef |..Z=.....l4/.P..| +00000160 c6 fe 92 39 e0 f4 6d ca d1 97 c9 df 81 6d dc 3f |...9..m......m.?| +00000170 6f 60 58 30 e1 c7 87 d0 fb 40 f6 ce 44 96 e9 19 |o`X0.....@..D...| +00000180 21 d3 3a 56 fd c1 60 22 96 f7 d9 07 30 15 40 f9 |!.:V..`"....0.@.| +00000190 b3 0c 9c cf f7 38 94 43 41 8a 76 92 4a 71 55 22 |.....8.CA.v.JqU"| +000001a0 8d ce 03 ed 97 98 54 0e 94 8c b7 a4 ee ce d6 60 |......T........`| +000001b0 5d a2 4e 9f ff e6 90 23 69 b1 a2 0e c5 e7 5b 58 |].N....#i.....[X| +000001c0 7b d1 13 ba f2 d3 ff 6a 48 ff 77 2d 61 05 4b 15 |{......jH.w-a.K.| +000001d0 cc 6f 52 4a 69 1c e2 38 b3 2a 96 ff 10 bb 55 02 |.oRJi..8.*....U.| +000001e0 50 e9 f2 09 92 66 cc 43 ea f4 4e ad aa 18 fc 9b |P....f.C..N.....| +000001f0 05 52 3b f1 44 3b 6e 25 47 cd 20 4d 69 86 8b 64 |.R;.D;n%G. Mi..d| +00000200 61 31 0a 03 92 0e 21 9d 67 d5 af 00 de 88 a4 f5 |a1....!.g.......| +00000210 3d 3e 45 0f f4 02 15 ae bf 45 76 80 0d 8d 7a 04 |=>E......Ev...z.| +00000220 58 d7 e5 5a 81 41 a9 04 7e aa 67 af 27 92 cf 51 |X..Z.A..~.g.'..Q| +00000230 13 c4 e6 84 2e 28 dc 53 c8 73 11 f9 f7 d9 28 ac |.....(.S.s....(.| +00000240 a6 00 af cb 38 bc f2 b7 1c 6d e8 21 f0 6e e5 35 |....8....m.!.n.5| +00000250 12 c0 a9 57 2f 87 39 bc a6 7a ab ab 04 02 48 e8 |...W/.9..z....H.| +00000260 13 a3 20 a4 c9 09 64 b2 2a 66 39 91 d7 3a 7a 41 |.. ...d.*f9..:zA| +00000270 1c a4 15 4e 84 d3 72 66 31 3a ba 7a b8 18 ee 0c |...N..rf1:.z....| +00000280 e2 17 1a 8f f7 af 38 49 e3 4d d7 ed be 7a 1e bd |......8I.M...z..| +00000290 ae 70 c1 fc 6a 09 05 29 bb fc 78 5b 8f a4 f7 81 |.p..j..)..x[....| +000002a0 34 fd ad 9b 22 87 67 15 0f ee d4 99 90 e7 af 4b |4...".g........K| +000002b0 14 bd af f3 ab 04 e0 d1 58 f5 34 b2 e1 ee 65 92 |........X.4...e.| +000002c0 80 05 68 c3 b2 6a bc 6d 17 03 03 00 a4 f4 d6 df |..h..j.m........| +000002d0 b6 61 6a c2 6c a6 25 f9 b2 95 8f 73 10 05 e2 63 |.aj.l.%....s...c| +000002e0 37 22 63 bd 50 af 18 0c 71 17 61 40 c9 a1 b1 6d |7"c.P...q.a@...m| +000002f0 d7 a6 2f c6 c2 46 9d 40 06 e3 30 04 e1 d9 97 c1 |../..F.@..0.....| +00000300 a8 6c ce 97 47 4e 9e 54 bc 8e 2c 77 e8 21 c3 0b |.l..GN.T..,w.!..| +00000310 8f 51 0c c2 8f 0d 64 b9 79 26 c0 33 07 e0 df 08 |.Q....d.y&.3....| +00000320 50 98 26 b1 2b 69 6a 5d b4 9c b7 4e 20 97 cc d9 |P.&.+ij]...N ...| +00000330 43 94 9f 4d 2b d1 72 24 a7 a8 3e 7d 9e 84 7a 98 |C..M+.r$..>}..z.| +00000340 23 64 7b b9 17 15 d6 27 80 6c 60 2d 38 c7 4d cd |#d{....'.l`-8.M.| +00000350 9a 87 d6 ab 31 8d 59 62 58 b4 11 f4 2e d5 81 10 |....1.YbX.......| +00000360 87 e5 58 3e 37 99 37 af 68 6f 11 cc 0b a2 f1 d1 |..X>7.7.ho......| +00000370 b0 17 03 03 00 35 be f6 19 d0 66 ec cd 14 d5 28 |.....5....f....(| +00000380 b8 bf 0d f4 37 5d 55 3d 2e 2c 1e 0c 62 0a 49 3e |....7]U=.,..b.I>| +00000390 df cf c2 dc 2c 27 df 54 64 67 8d 33 8b f0 b1 50 |....,'.Tdg.3...P| +000003a0 c5 dd fc 47 5c e7 58 5b 74 57 4b |...G\.X[tWK| >>> Flow 3 (client to server) -00000000 17 03 03 00 35 50 19 ff 67 64 b8 80 c8 ed 81 0c |....5P..gd......| -00000010 00 ab e0 d6 d4 3b 74 0f 89 a6 23 f3 0b 84 e3 a9 |.....;t...#.....| -00000020 73 67 14 03 ba b4 42 69 0a dc dc 99 d6 be 9b 61 |sg....Bi.......a| -00000030 96 21 57 1e 54 ca dc 1b df e7 17 03 03 00 17 ef |.!W.T...........| -00000040 42 23 91 2c b5 5d 1f 2c 1f db 5e d1 24 be 79 7a |B#.,.].,..^.$.yz| -00000050 9f 1a 2f 0c 71 4c 17 03 03 00 13 ad 90 35 ea 7f |../.qL.......5..| -00000060 3b 23 ca da 36 fd 02 97 d6 cd d2 84 c6 57 |;#..6........W| +00000000 14 03 03 00 01 01 17 03 03 00 35 2d 01 39 11 82 |..........5-.9..| +00000010 67 c7 e5 db 3f dd 18 c3 0b 0a 25 8a 24 2e e1 f4 |g...?.....%.$...| +00000020 5e a2 0f 8a 1c 70 83 26 d0 5d b1 8d cf c6 69 a9 |^....p.&.]....i.| +00000030 38 8c 14 22 74 4a 85 fe f5 86 e6 c2 07 44 bf 87 |8.."tJ.......D..| +00000040 17 03 03 00 17 a8 2f 45 46 d9 59 7e 5f 4c 9e 46 |....../EF.Y~_L.F| +00000050 09 e4 38 e1 e3 e3 5e ab 62 14 eb 2f |..8...^.b../| +>>> Flow 4 (server to client) +00000000 17 03 03 00 da 41 7f 38 18 5c d5 fc c7 ba 60 66 |.....A.8.\....`f| +00000010 d6 92 60 81 83 bc f3 35 ff 00 ef 4b 99 48 de 1c |..`....5...K.H..| +00000020 aa 1c f8 80 6d 59 48 30 83 03 ad fd e3 15 23 16 |....mYH0......#.| +00000030 aa c8 d7 71 58 df 65 fc 8c d3 77 56 f4 19 f2 5e |...qX.e...wV...^| +00000040 c2 d5 15 1b b7 9a 46 68 81 68 c6 2b be 81 f2 f5 |......Fh.h.+....| +00000050 5a 71 81 55 10 0f 09 9a 9a 9e c4 be 28 db fa 50 |Zq.U........(..P| +00000060 f6 fa 88 5b c6 63 35 77 8c d0 1b 4a 50 b8 42 6d |...[.c5w...JP.Bm| +00000070 5d f5 b7 5a 5e 73 0f 12 ba 86 92 44 23 bc 70 e1 |]..Z^s.....D#.p.| +00000080 3d f4 1b 20 87 e6 c2 89 43 2a 76 7f e3 8f 2c db |=.. ....C*v...,.| +00000090 86 31 4a 38 5b 5e 44 3e 6c 72 be 13 a5 77 d2 90 |.1J8[^D>lr...w..| +000000a0 95 80 35 c6 c9 1b 0e ea b8 0a 18 65 78 23 e4 0e |..5........ex#..| +000000b0 bc 67 86 5b 6a 77 32 66 f3 38 89 01 86 d3 c2 3e |.g.[jw2f.8.....>| +000000c0 93 70 57 11 07 1a be 26 3c 69 f8 8b 3b c3 4a 1c |.pW....&>> Flow 5 (client to server) +00000000 17 03 03 00 13 d2 5d 20 07 4c 51 50 40 86 e8 36 |......] .LQP@..6| +00000010 59 ba c4 f6 13 ab 29 1f |Y.....).| diff --git a/testdata/Client-TLSv13-ExportKeyingMaterial b/testdata/Client-TLSv13-ExportKeyingMaterial index 5778ef7..2045af7 100644 --- a/testdata/Client-TLSv13-ExportKeyingMaterial +++ b/testdata/Client-TLSv13-ExportKeyingMaterial @@ -16,74 +16,107 @@ 000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| 000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 a6 29 2f 1c 88 |....z...v...)/..| -00000010 12 96 7a 88 1c dc f7 ca dc 1e 6e e2 a7 09 65 01 |..z.......n...e.| -00000020 28 3a c1 58 01 6a ed 8d 18 fe b7 20 00 00 00 00 |(:.X.j..... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 da 33 a6 d1 76 |....z...v...3..v| +00000010 5f 72 df d4 59 9b 94 e8 e3 04 a6 c3 f0 58 4d 44 |_r..Y........XMD| +00000020 08 e8 1e 41 c0 25 4c 0c de c0 36 20 00 00 00 00 |...A.%L...6 ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 ab |..+.....3.$... .| -00000060 5a f1 b4 52 1d 1c 87 fb b3 9e f2 f9 ee d1 f1 ff |Z..R............| -00000070 66 3e 01 70 41 6f 01 45 4a d0 3a 98 d3 e4 50 14 |f>.pAo.EJ.:...P.| -00000080 03 03 00 01 01 17 03 03 00 17 38 75 a9 bf e3 61 |..........8u...a| -00000090 2f 8a 58 1d 28 6b b5 25 83 c9 d8 86 31 38 ee 6d |/.X.(k.%....18.m| -000000a0 c1 17 03 03 02 6d cb 78 87 73 70 3d c4 e4 de d9 |.....m.x.sp=....| -000000b0 2d 22 f0 cf 35 9e c1 0a ac 97 88 75 20 8f 63 b1 |-"..5......u .c.| -000000c0 2f c0 c9 4d 86 7f d6 6b 3a 2e b6 c1 e3 d4 73 f4 |/..M...k:.....s.| -000000d0 f7 2b 4f 86 6f f0 fd ed 2a dd 17 98 5e e6 32 e9 |.+O.o...*...^.2.| -000000e0 48 5e 48 36 e0 f8 d3 a4 93 54 7b 17 c5 46 ea d5 |H^H6.....T{..F..| -000000f0 6b 0f 5b bd 1d 3c 15 b1 c2 3f 2f 91 e5 d3 dd 75 |k.[..<...?/....u| -00000100 c5 c7 73 f7 ce a2 6e e1 bc 10 2a b7 0f 5e 7d cc |..s...n...*..^}.| -00000110 3e 22 3c 71 37 3f ba f0 44 3b 55 c8 5c a7 19 f2 |>"...| -00000160 28 a4 ac 75 1b 3b 7f 85 cb 2c 9c 64 09 38 75 59 |(..u.;...,.d.8uY| -00000170 33 0e 7f fe 93 0f 8a 67 5f 5e 86 c4 74 40 7f 0b |3......g_^..t@..| -00000180 f8 82 03 9c 8d 37 39 12 a9 20 cb 31 c5 40 f6 23 |.....79.. .1.@.#| -00000190 78 71 20 e3 8a a8 81 ab 6c 98 43 67 f8 2b a9 6f |xq .....l.Cg.+.o| -000001a0 41 2a 80 7f 1c 11 6d ae ea cf d9 6a 3c 11 74 72 |A*....m....j<.tr| -000001b0 86 e4 ab ee 1a f2 58 ce e2 8f d6 4e 06 57 e9 33 |......X....N.W.3| -000001c0 e9 ef 5a af 19 5c eb 9a a4 df ed 9f d3 55 00 d9 |..Z..\.......U..| -000001d0 2c 09 3f c5 58 4f 08 22 2e 9c 63 9b 53 92 07 83 |,.?.XO."..c.S...| -000001e0 b7 96 82 de 46 5b 35 b8 ff d2 52 96 66 2a ce ed |....F[5...R.f*..| -000001f0 93 b1 6a be ab 91 6b 1f b1 bc 35 1f 11 6a 48 a6 |..j...k...5..jH.| -00000200 20 63 62 8f e4 e4 07 4b be 79 37 d6 98 00 64 9e | cb....K.y7...d.| -00000210 17 f4 48 65 71 21 0c 79 30 32 a1 eb f5 9a be 5a |..Heq!.y02.....Z| -00000220 8d 7b 17 dd af c4 06 78 3b 0d a9 4a d8 f1 a8 6d |.{.....x;..J...m| -00000230 3d cf 52 a6 34 9d 3a 1c ee ff 83 7a d1 23 47 f1 |=.R.4.:....z.#G.| -00000240 65 9d 57 61 66 d9 66 bd e7 63 ca b9 22 07 36 0b |e.Waf.f..c..".6.| -00000250 5b 9a 20 59 19 25 49 54 a0 3b bf 28 24 5c 58 76 |[. Y.%IT.;.($\Xv| -00000260 1a a9 68 e9 90 dd 6a 66 d8 f3 d3 60 e4 3d af 3a |..h...jf...`.=.:| -00000270 49 d1 0e b8 39 a2 b6 e3 15 6e c0 ff 0d 57 48 05 |I...9....n...WH.| -00000280 c1 44 01 59 fa 9b f7 90 bc 7b 05 c4 f0 1f e8 9f |.D.Y.....{......| -00000290 02 c5 2a 89 7d 1e c4 75 bc b9 af d2 17 89 79 9d |..*.}..u......y.| -000002a0 3c aa 55 db 24 e7 35 08 a0 6d 88 79 61 af 01 82 |<.U.$.5..m.ya...| -000002b0 82 b7 4a f0 d4 89 38 6a fc 82 97 5e 77 09 87 45 |..J...8j...^w..E| -000002c0 5e 2f 21 8c 39 4e 98 76 76 ab 16 25 8e f0 d2 5c |^/!.9N.vv..%...\| -000002d0 a6 ad bd 18 f3 78 f4 2a b2 ac 36 67 2b 67 6a 43 |.....x.*..6g+gjC| -000002e0 95 d6 63 f8 b5 9f 7d 84 26 83 83 3c d3 7a 3b 52 |..c...}.&..<.z;R| -000002f0 68 de f0 d8 49 7f bc 56 b4 70 16 74 ee fa 5b 7b |h...I..V.p.t..[{| -00000300 36 50 6a 54 26 02 7a 3c ee 0b f9 2e a1 20 5c 44 |6PjT&.z<..... \D| -00000310 fd fe fc 17 03 03 00 99 69 60 73 ea a0 71 1a 5e |........i`s..q.^| -00000320 c4 ea 67 f7 b2 e0 34 7c cc 55 67 f3 87 43 c9 68 |..g...4|.Ug..C.h| -00000330 a6 02 84 1d 6c de 1d 90 4c 82 01 5c a5 16 39 97 |....l...L..\..9.| -00000340 67 45 7f fb 0e 43 24 4e ea c5 7b eb f5 bc 1f b6 |gE...C$N..{.....| -00000350 70 2e 95 e4 61 20 f0 8b 24 54 2e 43 9c f1 82 56 |p...a ..$T.C...V| -00000360 9c ca 28 96 64 57 85 a4 e1 d0 f4 be ea b4 7b a2 |..(.dW........{.| -00000370 23 aa 4f c6 06 9c e7 81 eb 4b 62 93 af 93 1c cf |#.O......Kb.....| -00000380 2b fd 5f bd a7 07 e9 c3 c8 97 c1 e4 df f4 74 06 |+._...........t.| -00000390 62 01 32 0c ec a2 40 86 c1 7e da e9 1e 7e 46 67 |b.2...@..~...~Fg| -000003a0 8a c6 ef b5 ce ac 3e 44 fa b0 ff b6 c4 20 aa 65 |......>D..... .e| -000003b0 fb 17 03 03 00 35 c1 a6 e0 e5 bf 91 7a ec 17 85 |.....5......z...| -000003c0 38 1e 32 1e 92 4e 9c 38 8c 02 1b 08 03 0e a3 a2 |8.2..N.8........| -000003d0 8f 2b 73 76 c1 99 48 de e7 39 cf a8 97 e4 30 e6 |.+sv..H..9....0.| -000003e0 75 52 3a f4 6f bf 67 bd 87 c5 30 |uR:.o.g...0| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 44 |..+.....3.$... D| +00000060 7f a7 d1 f1 38 fa c2 00 dd 48 44 20 b9 32 0b 16 |....8....HD .2..| +00000070 d4 a6 72 da cb c9 23 52 c9 fb b9 b5 2d a0 62 14 |..r...#R....-.b.| +00000080 03 03 00 01 01 17 03 03 00 17 d5 8b b4 47 9e 59 |.............G.Y| +00000090 ff 8b 7e bd 0b 61 97 62 14 78 56 85 a4 45 37 0a |..~..a.b.xV..E7.| +000000a0 fa 17 03 03 02 6d 2d e1 4d 15 4f 8b 0a 55 f4 ed |.....m-.M.O..U..| +000000b0 eb a8 ba e3 ba 65 b2 94 ed ca 94 18 cb e9 31 86 |.....e........1.| +000000c0 38 0a 61 78 e6 19 38 28 7c e6 8e a3 d2 01 4f 16 |8.ax..8(|.....O.| +000000d0 90 ce a9 db 64 e8 ec a1 97 01 04 4a ce dd f2 0f |....d......J....| +000000e0 f8 1c 25 4d 28 d5 07 33 f9 fd c4 f3 f9 26 15 2f |..%M(..3.....&./| +000000f0 66 ef f0 82 49 1b 3d a0 99 ee 27 61 d3 0f 9c d5 |f...I.=...'a....| +00000100 85 3b 49 54 5d 58 7b 0c e2 97 e5 ac b1 10 d5 73 |.;IT]X{........s| +00000110 f8 18 57 2d 7a e2 15 7f a0 e2 07 c1 7a 16 d0 05 |..W-z.......z...| +00000120 df 2e 29 fc c4 59 2a 7c 63 2e 7e e2 b8 75 92 35 |..)..Y*|c.~..u.5| +00000130 f6 92 e4 1e e4 43 dc 25 64 e0 32 9f fe 0a 76 d7 |.....C.%d.2...v.| +00000140 ee 08 f0 e3 e9 02 bc 93 d8 db d2 11 28 df b1 05 |............(...| +00000150 fa fe 70 ef 73 e7 ca f1 a1 e1 95 a1 c6 05 30 0c |..p.s.........0.| +00000160 23 5c 5f d0 77 f0 7e 85 cc 2d 0b 88 41 7a 95 11 |#\_.w.~..-..Az..| +00000170 6b 87 df 6e 5b 4a e4 7a 7a bf 42 f6 d1 fa 8e e5 |k..n[J.zz.B.....| +00000180 96 5f 3b 2e 02 ba c9 f8 40 77 9c ed 81 82 29 2b |._;.....@w....)+| +00000190 8f 97 5e 97 de ff 5f 30 c1 06 66 c7 b4 33 b9 eb |..^..._0..f..3..| +000001a0 ca ee ff 42 db 8e 9c 18 0c 19 0a a4 d0 b7 e2 74 |...B...........t| +000001b0 be d1 6f 79 ea a0 32 44 50 16 86 41 2d d8 4f 5c |..oy..2DP..A-.O\| +000001c0 c1 16 b2 6c a6 5a 49 e9 a1 ff 79 9c b1 23 41 eb |...l.ZI...y..#A.| +000001d0 35 1a a8 f2 21 ff f5 54 a2 92 26 61 f6 53 2c e8 |5...!..T..&a.S,.| +000001e0 c9 4d 1e 42 2b bd de c0 78 f5 9f d0 b4 1e 30 e9 |.M.B+...x.....0.| +000001f0 0a e0 71 50 f6 72 c2 15 1f 93 72 15 c9 3e bc ab |..qP.r....r..>..| +00000200 96 04 e3 5c 4a ee 6f 64 87 b1 ec d4 ca 76 ab 4e |...\J.od.....v.N| +00000210 cf 6e 32 7a 39 15 66 3e e0 67 10 9c 3c 59 d1 31 |.n2z9.f>.g..>> Flow 3 (client to server) -00000000 17 03 03 00 35 be 06 09 fb e0 58 83 8e 27 5a c0 |....5.....X..'Z.| -00000010 8a 4c 56 ad 79 29 90 99 47 21 2f d4 f4 98 81 a8 |.LV.y)..G!/.....| -00000020 e8 55 d6 bd 26 b1 a9 48 34 ff 40 66 7e 2e 83 ea |.U..&..H4.@f~...| -00000030 ed fe a0 01 73 0b 91 1f c0 1d 17 03 03 00 17 ee |....s...........| -00000040 58 ac 2a e7 26 72 e3 c7 81 2c 02 0f 57 39 56 4f |X.*.&r...,..W9VO| -00000050 43 7a 2d a7 f4 d8 17 03 03 00 13 94 2c 15 0b 04 |Cz-.........,...| -00000060 7a aa 78 3b a6 b8 23 f1 75 b4 b5 2e e7 94 |z.x;..#.u.....| +00000000 14 03 03 00 01 01 17 03 03 00 35 c3 68 6c 59 46 |..........5.hlYF| +00000010 70 ff b5 04 41 bd c5 66 a4 da cd df 04 f8 7e f9 |p...A..f......~.| +00000020 a2 7b 0d f2 e6 cc 0c 30 df a9 66 4d 09 09 dc bf |.{.....0..fM....| +00000030 f4 5c 5e 30 5a 6d 2f bc 48 33 21 2b cb 6a ce f7 |.\^0Zm/.H3!+.j..| +00000040 17 03 03 00 17 9a d0 31 9a c5 c4 4b 59 e3 a4 74 |.......1...KY..t| +00000050 c5 d1 c5 09 a0 5e 08 48 fd 49 df 61 |.....^.H.I.a| +>>> Flow 4 (server to client) +00000000 17 03 03 00 ea c7 4f b3 d0 32 fa 3d 4e e8 58 ea |......O..2.=N.X.| +00000010 d1 8c 9a ed 6d bc 41 ae 22 58 d2 cb 9b 16 4f 45 |....m.A."X....OE| +00000020 91 86 8d 9f 9f 50 be 4d f7 11 c9 ea 20 57 29 f8 |.....P.M.... W).| +00000030 f3 78 8e e3 99 a1 8d 53 52 f0 1d 0a ef 64 cf 19 |.x.....SR....d..| +00000040 9f 6f b7 c3 11 27 07 d6 1a 61 39 75 26 9b 41 a1 |.o...'...a9u&.A.| +00000050 4d a2 a2 cd 59 c5 35 f3 58 ff 52 60 ba 04 54 3c |M...Y.5.X.R`..T<| +00000060 1b 2d 55 81 76 c9 59 af b8 5e 46 4d 09 58 6c 55 |.-U.v.Y..^FM.XlU| +00000070 66 1e d2 f5 7c bb 5e b0 e5 91 19 b0 be 32 04 46 |f...|.^......2.F| +00000080 20 10 f2 75 55 5e 30 96 9d da 37 07 dc df 1d 6f | ..uU^0...7....o| +00000090 c3 f1 d5 b6 db 85 d9 04 d4 13 5b ba 83 20 17 ae |..........[.. ..| +000000a0 68 05 71 d5 72 46 ba 23 ad ab 76 60 68 6a d7 12 |h.q.rF.#..v`hj..| +000000b0 91 55 07 bb b4 2b 40 9f d1 75 6c 36 28 89 89 3d |.U...+@..ul6(..=| +000000c0 9a 73 25 7a 7e 49 56 4c 92 32 74 ad 49 52 a1 09 |.s%z~IVL.2t.IR..| +000000d0 3f 02 62 fe a5 de 80 8c 93 01 de bd 59 5b 95 01 |?.b.........Y[..| +000000e0 f1 62 5f 22 f6 e3 e6 27 ed b7 4b 81 7f 13 13 17 |.b_"...'..K.....| +000000f0 03 03 00 ea 24 b0 f9 84 63 59 2b 30 09 4d 6e 44 |....$...cY+0.MnD| +00000100 13 db 38 db 42 9f 20 7f df f0 73 12 76 0d a5 57 |..8.B. ...s.v..W| +00000110 0c 36 21 7d f6 26 98 66 67 4f 07 8d b0 25 6b 7b |.6!}.&.fgO...%k{| +00000120 7c d7 c0 3d b0 33 8b 87 15 e6 23 6f b5 5a 77 98 ||..=.3....#o.Zw.| +00000130 d8 a7 d2 94 84 2a 7e 05 b2 ba 95 87 1d f5 44 54 |.....*~.......DT| +00000140 33 32 9f 8e df ff 91 77 21 fe db 6e f6 bd 9f 2b |32.....w!..n...+| +00000150 63 43 a9 c4 94 e8 b7 22 ed 6f 03 42 12 95 17 fb |cC.....".o.B....| +00000160 7f 83 ca 8e dd 29 08 52 40 fe 2a aa f1 f2 29 b8 |.....).R@.*...).| +00000170 5e e4 8f b7 67 a5 71 4d 4b 79 cf 5d 5d f2 72 44 |^...g.qMKy.]].rD| +00000180 c2 3e a2 54 18 fc 58 33 d6 4c 2c bd d9 52 08 1f |.>.T..X3.L,..R..| +00000190 3e c3 58 bf 86 80 ad cc 8f 55 a1 b0 fb 96 e6 94 |>.X......U......| +000001a0 43 be a6 14 b0 10 d4 27 38 93 b6 de 1d e1 3e e8 |C......'8.....>.| +000001b0 8a 06 3c 65 49 5a fb 70 4b f7 01 eb 2a ff b0 e0 |..>> Flow 5 (client to server) +00000000 17 03 03 00 13 4b 79 39 94 f7 13 0c 77 5a 78 47 |.....Ky9....wZxG| +00000010 fe e6 e8 41 96 49 84 53 |...A.I.S| diff --git a/testdata/Client-TLSv13-HelloRetryRequest b/testdata/Client-TLSv13-HelloRetryRequest index 76961c6..8dac31a 100644 --- a/testdata/Client-TLSv13-HelloRetryRequest +++ b/testdata/Client-TLSv13-HelloRetryRequest @@ -24,95 +24,126 @@ 00000050 0c 00 2b 00 02 03 04 00 33 00 02 00 17 14 03 03 |..+.....3.......| 00000060 00 01 01 |...| >>> Flow 3 (client to server) -00000000 16 03 03 01 15 01 00 01 11 03 03 00 00 00 00 00 |................| -00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| -00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 32 cc a8 |.............2..| -00000050 cc a9 c0 2f c0 2b c0 30 c0 2c c0 27 c0 13 c0 23 |.../.+.0.,.'...#| -00000060 c0 09 c0 14 c0 0a 00 9c 00 9d 00 3c 00 2f 00 35 |...........<./.5| -00000070 c0 12 00 0a 00 05 c0 11 c0 07 13 01 13 03 13 02 |................| -00000080 01 00 00 96 00 05 00 05 01 00 00 00 00 00 0a 00 |................| -00000090 06 00 04 00 1d 00 17 00 0b 00 02 01 00 00 0d 00 |................| -000000a0 18 00 16 08 04 08 05 08 06 04 01 04 03 05 01 05 |................| -000000b0 03 06 01 06 03 02 01 02 03 ff 01 00 01 00 00 12 |................| -000000c0 00 00 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 |...+............| -000000d0 33 00 47 00 45 00 17 00 41 04 1e 18 37 ef 0d 19 |3.G.E...A...7...| -000000e0 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 |Q.5uq..T[....g..| -000000f0 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 |$ >.V...(^.+-O..| -00000100 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 |..lK[.V.2B.X..I.| -00000110 b5 68 1a 41 03 56 6b dc 5a 89 |.h.A.Vk.Z.| +00000000 14 03 03 00 01 01 16 03 03 01 15 01 00 01 11 03 |................| +00000010 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000030 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |. ..............| +00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000050 00 00 00 32 cc a8 cc a9 c0 2f c0 2b c0 30 c0 2c |...2...../.+.0.,| +00000060 c0 27 c0 13 c0 23 c0 09 c0 14 c0 0a 00 9c 00 9d |.'...#..........| +00000070 00 3c 00 2f 00 35 c0 12 00 0a 00 05 c0 11 c0 07 |.<./.5..........| +00000080 13 01 13 03 13 02 01 00 00 96 00 05 00 05 01 00 |................| +00000090 00 00 00 00 0a 00 06 00 04 00 1d 00 17 00 0b 00 |................| +000000a0 02 01 00 00 0d 00 18 00 16 08 04 08 05 08 06 04 |................| +000000b0 01 04 03 05 01 05 03 06 01 06 03 02 01 02 03 ff |................| +000000c0 01 00 01 00 00 12 00 00 00 2b 00 09 08 03 04 03 |.........+......| +000000d0 03 03 02 03 01 00 33 00 47 00 45 00 17 00 41 04 |......3.G.E...A.| +000000e0 1e 18 37 ef 0d 19 51 88 35 75 71 b5 e5 54 5b 12 |..7...Q.5uq..T[.| +000000f0 2e 8f 09 67 fd a7 24 20 3e b2 56 1c ce 97 28 5e |...g..$ >.V...(^| +00000100 f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 |.+-O....lK[.V.2B| +00000110 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |.X..I..h.A.Vk.Z.| >>> Flow 4 (server to client) -00000000 16 03 03 00 9b 02 00 00 97 03 03 7b 87 0f 37 7b |...........{..7{| -00000010 8a c3 85 98 1c 19 61 a4 bd 12 06 b5 72 58 09 24 |......a.....rX.$| -00000020 c7 ab c0 12 f7 b7 b5 69 c2 05 46 20 00 00 00 00 |.......i..F ....| +00000000 16 03 03 00 9b 02 00 00 97 03 03 40 bb fc 8b c3 |...........@....| +00000010 21 f3 14 d1 8d 63 52 bd 36 eb 78 47 3c 6e 8e 11 |!....cR.6.xG.m...QAl......t| -00000160 ac 8c 12 df ba c6 bb e9 90 1c e9 ed e1 9c 28 d4 |..............(.| -00000170 50 89 88 09 06 61 2e 27 c6 60 26 86 91 f2 37 a2 |P....a.'.`&...7.| -00000180 83 67 ac c4 3f e7 6d 9c 30 de 74 a0 2e b9 0e 6b |.g..?.m.0.t....k| -00000190 de 4a 73 4d 67 9a ee 45 c7 5e bc d1 bb bb 01 67 |.JsMg..E.^.....g| -000001a0 cd b2 e6 c6 fa 3c e1 59 d9 e0 c9 85 5d 76 8d c8 |.....<.Y....]v..| -000001b0 ed 83 cd eb 88 51 d6 05 9f 0c 45 81 66 07 7c 2d |.....Q....E.f.|-| -000001c0 dd 6f 35 fd 76 d0 03 00 46 d9 f7 87 fe e4 8f bc |.o5.v...F.......| -000001d0 1b 69 6a 97 38 82 46 5e fe f6 a6 8a 0c 1a 6d 7f |.ij.8.F^......m.| -000001e0 4d b2 1b dd df 5c f3 43 21 cd 26 47 09 32 3a cc |M....\.C!.&G.2:.| -000001f0 b6 30 5a 1d 27 7a ad 6d da 2d 51 dc 67 84 09 8f |.0Z.'z.m.-Q.g...| -00000200 8f 86 2d 6f af 04 15 ce 90 53 4d 0d 32 a5 c4 c3 |..-o.....SM.2...| -00000210 41 94 0b 08 33 b9 2c 23 d3 d5 c2 42 f1 e4 d6 cf |A...3.,#...B....| -00000220 b2 cd 45 8e dd 9f 52 cb e5 dd ec aa 40 55 fd 94 |..E...R.....@U..| -00000230 99 cc 97 88 6d b0 71 80 4d 31 34 5e 92 a0 7d 1d |....m.q.M14^..}.| -00000240 1e fe 6e d6 47 81 f1 db a5 00 37 32 f2 98 87 f8 |..n.G.....72....| -00000250 83 48 31 c1 5f 28 7a 59 de fd 5a 56 b0 e4 39 78 |.H1._(zY..ZV..9x| -00000260 38 d4 68 b3 ef 16 a1 3e 41 ee 57 94 2e fb 16 4c |8.h....>A.W....L| -00000270 fd 02 3a c1 57 c6 4b 3b 2b 63 79 67 e1 cf 07 21 |..:.W.K;+cyg...!| -00000280 27 c7 9e 4a b0 bf e1 c2 4a 6e 9a 82 2a 8c 05 8d |'..J....Jn..*...| -00000290 93 48 0d 1c 15 60 66 d0 da b3 2f dc 90 fd 9e 6b |.H...`f.../....k| -000002a0 c2 62 ee a4 25 c5 52 e3 44 00 b8 6c 2d 6b 16 d7 |.b..%.R.D..l-k..| -000002b0 bc a4 2b b9 71 b7 b0 fc a4 e7 78 a3 39 1e 54 6f |..+.q.....x.9.To| -000002c0 7f c5 4c 20 4d b5 84 db 00 1d d0 ad 7a b8 13 e6 |..L M.......z...| -000002d0 06 f1 c2 f9 06 b5 c1 23 50 b1 0d f9 38 4d 80 65 |.......#P...8M.e| -000002e0 e1 56 7c 04 3f d8 07 b7 46 5a ff 29 f3 d4 43 fa |.V|.?...FZ.)..C.| -000002f0 be 32 47 76 58 7a c4 50 76 b7 65 5f 56 83 f9 06 |.2GvXz.Pv.e_V...| -00000300 44 30 65 0a 4b b1 e9 5c 80 4e 3c 1b 67 6f e1 53 |D0e.K..\.N<.go.S| -00000310 09 a8 3b 0f a6 85 f7 2f 51 08 48 94 9b 5a 0f b6 |..;..../Q.H..Z..| -00000320 b8 24 52 e0 c2 67 55 1d bc e1 e3 1b 15 8e 17 03 |.$R..gU.........| -00000330 03 00 99 58 f7 33 99 2c 8c 8c 18 78 60 49 6d 44 |...X.3.,...x`ImD| -00000340 f7 b4 25 5f 29 2b 37 7d ff 40 07 42 dd b3 9b a1 |..%_)+7}.@.B....| -00000350 10 a5 d6 d0 de 6d ca a0 df 41 82 0b e6 8a 35 8c |.....m...A....5.| -00000360 b7 52 aa 1c 8c f4 c2 31 2c 92 0b be 99 70 b0 84 |.R.....1,....p..| -00000370 c1 f4 9f d4 ff c7 ab e0 64 9e 17 34 aa 58 2d 32 |........d..4.X-2| -00000380 6d 74 90 ec f1 87 11 8f 9c 86 e2 26 2a 51 3e d4 |mt.........&*Q>.| -00000390 4b e4 01 13 13 6b cf 96 c6 ba 8e cf 8a 2b 5a 72 |K....k.......+Zr| -000003a0 df d7 43 47 ef 33 10 53 22 5c ab 8b b3 b4 6d 3c |..CG.3.S"\....m<| -000003b0 a6 31 58 f2 d7 bc 1c 46 48 4f 34 a1 62 5c ed 33 |.1X....FHO4.b\.3| -000003c0 01 3f ae 63 15 d5 94 96 b6 a1 d5 00 17 03 03 00 |.?.c............| -000003d0 35 34 66 3e 16 07 f3 ea c0 61 a6 30 c7 6f e9 1d |54f>.....a.0.o..| -000003e0 8b 6d 66 11 3c eb 27 88 9e 1a 94 86 85 0e da a0 |.mf.<.'.........| -000003f0 d7 1e 9e 2c d8 55 3e 53 b7 0f bc 96 be 82 00 34 |...,.U>S.......4| -00000400 a1 b3 3e c6 d3 bf |..>...| +00000060 68 4b 33 bf 83 bd ff 25 68 0f b8 79 da c5 68 5e |hK3....%h..y..h^| +00000070 c7 ca 00 07 f1 79 17 22 41 c6 e0 24 c2 97 f7 07 |.....y."A..$....| +00000080 b5 f1 04 20 26 17 90 6b 31 3f 25 15 bc 3b 4f 59 |... &..k1?%..;OY| +00000090 54 b3 4f 75 4e 7a c0 2c 17 0f ea 2a 7e 5f 54 7f |T.OuNz.,...*~_T.| +000000a0 17 03 03 00 17 c3 10 7e 45 b9 96 05 4f a7 f1 bd |.......~E...O...| +000000b0 9f 79 b1 b5 88 e7 90 b1 44 b0 7d f6 17 03 03 02 |.y......D.}.....| +000000c0 6d c3 e9 2e 7e 18 e5 0b 51 bb eb 55 62 44 6e bd |m...~...Q..UbDn.| +000000d0 03 6c 85 0d f5 39 52 58 b4 6b 44 cc f6 f6 0d 7c |.l...9RX.kD....|| +000000e0 71 f1 0a 24 a7 c9 19 2a 87 92 5c f7 b9 af 4e 84 |q..$...*..\...N.| +000000f0 94 69 df 28 a1 a0 18 2e 56 a1 15 3e 41 e2 f8 0c |.i.(....V..>A...| +00000100 73 98 d5 3c 04 93 d1 80 b3 21 11 a4 93 f9 2e 01 |s..<.....!......| +00000110 bd d1 63 4b ed aa 31 3d 5d 9a ec 39 03 97 78 3c |..cK..1=]..9..x<| +00000120 a4 1c ee cd 72 10 a6 05 44 ff 43 09 66 b5 c4 f4 |....r...D.C.f...| +00000130 9e fb 36 5b 73 6b 13 55 9e d5 ce 20 77 72 19 1b |..6[sk.U... wr..| +00000140 20 ea db d0 0f a7 ae 06 7d 95 4d d5 71 74 64 63 | .......}.M.qtdc| +00000150 4d 88 6b f3 f8 d6 7d 56 97 b5 c4 4d a6 b7 86 a8 |M.k...}V...M....| +00000160 9c 4d fb 53 65 7b 4b 2d d4 49 4d 97 64 ca 39 d5 |.M.Se{K-.IM.d.9.| +00000170 cb c7 38 a6 5b 0d 65 f6 12 d9 a4 26 a4 dd aa 2d |..8.[.e....&...-| +00000180 af f9 d4 2e a2 3f 28 51 87 c2 a5 b2 59 b4 23 e9 |.....?(Q....Y.#.| +00000190 e5 e5 21 5e 90 29 1b 7c 21 3c 17 b5 96 71 4a d3 |..!^.).|!<...qJ.| +000001a0 e4 60 58 ea 03 1c d4 b1 4a da 19 9e 75 83 1f 82 |.`X.....J...u...| +000001b0 38 ea fe f4 3a db 36 0e 11 1d d6 09 76 52 cb 72 |8...:.6.....vR.r| +000001c0 9f 67 44 83 c0 57 c3 1e 86 bd 73 c5 68 1c 0a ac |.gD..W....s.h...| +000001d0 f4 70 08 2d 9f 96 70 ca 08 c7 12 6d 58 12 6e 02 |.p.-..p....mX.n.| +000001e0 7b 4f 1c 30 73 66 8c ce 05 35 ed 0f 19 41 88 c8 |{O.0sf...5...A..| +000001f0 5a ed f0 c1 ff dd f9 c7 b0 0c 82 16 98 98 ec 0e |Z...............| +00000200 59 e5 9f e0 b2 a2 8a 62 46 21 d1 5d f3 3e e9 6d |Y......bF!.].>.m| +00000210 62 5f 66 0a 41 34 c7 75 05 62 ea 60 7a 9e 5e 56 |b_f.A4.u.b.`z.^V| +00000220 32 6d 94 0a 08 ff 73 55 04 98 50 c3 d8 d6 10 cd |2m....sU..P.....| +00000230 80 77 29 84 d3 24 d3 dd 0a 0a 50 95 5f 41 f9 95 |.w)..$....P._A..| +00000240 82 11 39 b3 c8 32 90 4f 6f 67 1f 14 c6 fb c5 0a |..9..2.Oog......| +00000250 a7 79 85 a2 0c 11 a2 d9 d1 07 66 5d 50 63 43 fb |.y........f]PcC.| +00000260 b5 e1 70 49 86 15 2d db 1c 8a 86 d3 97 9e 24 5c |..pI..-.......$\| +00000270 40 95 89 47 7a a5 0e dc ba bd eb 0a 77 b9 42 58 |@..Gz.......w.BX| +00000280 8b d1 18 ce 08 c5 3a eb da 89 57 15 f0 00 9d 6f |......:...W....o| +00000290 ee be dc 1f e3 54 a3 ba eb 39 61 0a f6 a6 21 26 |.....T...9a...!&| +000002a0 d0 8e 0a ff a5 c4 53 37 5d fd b7 47 90 0d 79 dd |......S7]..G..y.| +000002b0 23 c4 94 54 d0 bd 59 93 68 f9 94 f0 00 ea 5a b1 |#..T..Y.h.....Z.| +000002c0 88 79 bb e8 9b 5e 77 93 f0 36 fb 12 57 fc 3b c1 |.y...^w..6..W.;.| +000002d0 15 d5 45 77 b5 35 ee fb 60 7f a8 cc da 99 1b 1e |..Ew.5..`.......| +000002e0 5c 7f 61 c0 9c 41 54 02 bc db af 48 ef a7 a8 62 |\.a..AT....H...b| +000002f0 42 2d 1c b6 60 f8 1b ef 56 03 1d 79 68 79 a9 e9 |B-..`...V..yhy..| +00000300 e6 78 62 66 c6 2e b4 6a 3c db 7a ee 1b f9 fa f3 |.xbf...j<.z.....| +00000310 0a f1 10 55 18 da 2f 6d 35 67 9f c6 c6 d0 40 eb |...U../m5g....@.| +00000320 09 0b 6b a2 72 71 5c 77 b5 8e cf d5 ec 2b 17 03 |..k.rq\w.....+..| +00000330 03 00 99 e4 93 85 ef 4e a3 15 ca d2 76 f9 5a 20 |.......N....v.Z | +00000340 40 08 b9 ad 74 93 12 7f 37 37 ab 9f 17 05 9c 0d |@...t...77......| +00000350 6a 84 85 c9 3e d2 3e 50 0b 7c 4e 51 6b 88 0a 91 |j...>.>P.|NQk...| +00000360 82 67 90 99 f8 69 74 80 b8 75 4f c4 04 42 68 58 |.g...it..uO..BhX| +00000370 26 8b 70 66 e1 b2 60 ac 63 92 3c 35 79 90 53 a2 |&.pf..`.c.<5y.S.| +00000380 8b 37 8b c1 84 d9 ac 1f 36 83 95 25 75 89 d7 f0 |.7......6..%u...| +00000390 44 81 be 9a 52 e7 a3 51 6d 28 50 80 e4 ea b4 db |D...R..Qm(P.....| +000003a0 89 68 9b 61 6e 88 7f 10 1e d7 f9 ea 12 a7 16 3c |.h.an..........<| +000003b0 2b 73 62 9b af 98 eb d1 7a 67 b1 6e 38 29 9d c1 |+sb.....zg.n8)..| +000003c0 94 18 7e 2a 50 96 72 25 7a 23 21 13 17 03 03 00 |..~*P.r%z#!.....| +000003d0 35 1f f9 91 ac 1f 78 93 2b 39 35 7e 52 22 e8 79 |5.....x.+95~R".y| +000003e0 84 4a a6 de 74 21 c8 a5 c7 d1 35 0d 53 bd 85 7d |.J..t!....5.S..}| +000003f0 e0 2f 51 74 b9 69 f1 7b a9 b2 2c b1 89 99 06 48 |./Qt.i.{..,....H| +00000400 f8 b2 b4 c7 5d 06 |....].| >>> Flow 5 (client to server) -00000000 17 03 03 00 35 df 1b 3b a9 e7 cd 63 2c a6 09 65 |....5..;...c,..e| -00000010 66 df 94 09 d1 c4 ce 44 22 8b b5 48 2e 23 62 3a |f......D"..H.#b:| -00000020 9f e3 b2 58 a7 b2 e3 2a 27 a9 4d 34 41 0c 31 41 |...X...*'.M4A.1A| -00000030 92 b7 48 02 d2 51 d6 97 3e 70 17 03 03 00 17 f1 |..H..Q..>p......| -00000040 b7 28 75 42 2a 8b 20 2a 97 ed 47 ac a0 ee fd 38 |.(uB*. *..G....8| -00000050 cb 00 e3 b2 b1 87 17 03 03 00 13 bc 5a f3 ee 64 |............Z..d| -00000060 4d a5 1a 64 35 f2 f6 82 e3 e4 7d 82 08 c4 |M..d5.....}...| +00000000 17 03 03 00 35 fa 53 f3 c8 84 37 c3 c8 b9 b6 0a |....5.S...7.....| +00000010 41 bb 27 76 d5 7a 32 b6 3a fe 5b d5 28 d9 a6 81 |A.'v.z2.:.[.(...| +00000020 21 63 ee 43 03 3d b6 c0 0c 5f 3c cc 2a 2a 7f ee |!c.C.=..._<.**..| +00000030 f6 5e 02 f5 c9 06 c8 56 de b1 17 03 03 00 17 9a |.^.....V........| +00000040 8f 68 ac 18 fc f4 87 b4 fb 1e 33 b9 77 51 04 57 |.h........3.wQ.W| +00000050 f6 34 a4 f9 62 05 |.4..b.| +>>> Flow 6 (server to client) +00000000 17 03 03 00 da 4b cf 84 da 4f 53 58 d4 24 69 e4 |.....K...OSX.$i.| +00000010 4f e1 92 ae 27 23 7e ac 05 95 aa e3 c1 fb 41 7b |O...'#~.......A{| +00000020 5a 94 eb bc 0b 03 df 95 77 f7 9a 47 4a 88 52 83 |Z.......w..GJ.R.| +00000030 4d a4 c1 a6 e9 79 dd 77 76 a0 fc 9b 50 55 72 8e |M....y.wv...PUr.| +00000040 c8 0a d6 e4 d4 b8 18 b4 0e cc 06 05 2a 40 17 7d |............*@.}| +00000050 f6 ef b5 76 93 85 fc 0b e1 ca d7 e6 06 d0 e0 34 |...v...........4| +00000060 86 e2 62 a4 35 fe 5d 63 6c 4a 2e 0f 3d dd ea a1 |..b.5.]clJ..=...| +00000070 bf a8 86 56 e2 2e 21 79 47 c4 9a c4 6f 07 82 59 |...V..!yG...o..Y| +00000080 d7 55 a9 32 97 de 5a af 0c ab fa 46 d4 2e ab b0 |.U.2..Z....F....| +00000090 8d c8 36 0f d7 a5 cc 27 31 6e 42 a6 d0 61 72 45 |..6....'1nB..arE| +000000a0 d7 43 8d 74 51 da a8 bb 6b 7a 69 30 79 f3 ff 92 |.C.tQ...kzi0y...| +000000b0 dc 0a d7 52 b0 9a d8 c3 d6 c9 2b 3d 7e 60 63 5b |...R......+=~`c[| +000000c0 02 8c 5e 76 92 9d ad 4e 18 c3 67 a7 40 62 41 04 |..^v...N..g.@bA.| +000000d0 0b c9 29 26 d8 0c 51 51 d1 5b a4 bf 69 d5 31 17 |..)&..QQ.[..i.1.| +000000e0 03 03 00 da fa d6 36 16 4c 85 87 4f 4b 17 b8 65 |......6.L..OK..e| +000000f0 3f dc c3 5d 09 c5 ed 80 b1 d4 3d aa dc f8 78 1e |?..]......=...x.| +00000100 c0 d5 e3 87 74 57 f4 3c ec 7c d0 09 e6 88 fa 16 |....tW.<.|......| +00000110 30 de 10 7c 25 14 d2 23 71 63 e5 bb 97 bf 5c 9e |0..|%..#qc....\.| +00000120 e4 81 cc 5d 0e b0 e4 06 0e 6b 87 93 6c ce 7c fc |...].....k..l.|.| +00000130 2b 66 c2 48 53 65 31 40 b8 ce 7e a2 f2 69 a0 b8 |+f.HSe1@..~..i..| +00000140 41 ff 18 f1 1a db 96 7e b0 e5 9a 40 de 4e d0 4f |A......~...@.N.O| +00000150 95 37 81 15 e9 b2 a5 fa af 26 97 1b d7 e5 2b 17 |.7.......&....+.| +00000160 51 5c ee d6 cd 20 6a 19 5c 80 41 f5 ca 52 d5 c8 |Q\... j.\.A..R..| +00000170 70 e5 3a 0f 17 3e b4 b4 c5 bc f8 90 49 df ee 3b |p.:..>......I..;| +00000180 c5 33 43 14 16 d5 f7 f6 85 ef f2 ee cb 23 5a e8 |.3C..........#Z.| +00000190 09 5d 15 73 98 b9 d3 1e 74 27 3e ff 7b 9d 63 13 |.].s....t'>.{.c.| +000001a0 5c d4 b5 6a 34 b8 9e 1b 4b cf d8 5a da 4a 73 5e |\..j4...K..Z.Js^| +000001b0 5c ae 38 78 ba 12 00 bc 98 15 f3 c7 69 6b |\.8x........ik| +>>> Flow 7 (client to server) +00000000 17 03 03 00 13 d0 9e 34 0a 13 b3 c3 d9 22 79 a9 |.......4....."y.| +00000010 66 e6 3a 8b 3e bc cf de |f.:.>...| diff --git a/testdata/Client-TLSv13-KeyUpdate b/testdata/Client-TLSv13-KeyUpdate new file mode 100644 index 0000000..3d6c21b --- /dev/null +++ b/testdata/Client-TLSv13-KeyUpdate @@ -0,0 +1,132 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 f8 01 00 00 f4 03 03 00 00 00 00 00 |................| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 32 cc a8 |.............2..| +00000050 cc a9 c0 2f c0 2b c0 30 c0 2c c0 27 c0 13 c0 23 |.../.+.0.,.'...#| +00000060 c0 09 c0 14 c0 0a 00 9c 00 9d 00 3c 00 2f 00 35 |...........<./.5| +00000070 c0 12 00 0a 00 05 c0 11 c0 07 13 01 13 03 13 02 |................| +00000080 01 00 00 79 00 05 00 05 01 00 00 00 00 00 0a 00 |...y............| +00000090 0a 00 08 00 1d 00 17 00 18 00 19 00 0b 00 02 01 |................| +000000a0 00 00 0d 00 18 00 16 08 04 08 05 08 06 04 01 04 |................| +000000b0 03 05 01 05 03 06 01 06 03 02 01 02 03 ff 01 00 |................| +000000c0 01 00 00 12 00 00 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000d0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 0f 9a 86 30 a4 |....z...v.....0.| +00000010 0a 88 2e ae a6 b9 ca ee 46 9c 87 f8 38 b3 5f d4 |........F...8._.| +00000020 2c 42 29 e3 e7 44 e4 d3 e2 00 53 20 00 00 00 00 |,B)..D....S ....| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 1e |..+.....3.$... .| +00000060 0b 5c d8 c6 44 ba ac 71 70 3c a2 20 b0 05 d5 98 |.\..D..qp<. ....| +00000070 c4 12 e3 43 67 53 c4 2a 72 6e 59 50 03 81 0e 14 |...CgS.*rnYP....| +00000080 03 03 00 01 01 17 03 03 00 17 cc 54 e1 4a d7 5c |...........T.J.\| +00000090 1b 96 70 6e c0 ea 25 c6 0e 9d bd a6 c0 08 0a 45 |..pn..%........E| +000000a0 1b 17 03 03 02 6d 17 74 77 1a b1 00 47 8f e5 01 |.....m.tw...G...| +000000b0 3a 29 a3 e8 94 1b 3e ef 91 f7 05 8d 9a a4 2d 9a |:)....>.......-.| +000000c0 9b cf d2 83 e4 74 28 b9 d5 ae c8 79 b4 f4 6b eb |.....t(....y..k.| +000000d0 a0 db e7 db f3 ff 0b 2b be 0c e7 3b d3 c6 79 ea |.......+...;..y.| +000000e0 39 a6 66 19 88 39 04 01 f9 8d 82 04 6d e2 ce 73 |9.f..9......m..s| +000000f0 71 f9 bd 5b f6 66 a5 c7 f8 8b be db 1a b5 1b 38 |q..[.f.........8| +00000100 4b b4 3a 04 01 5e 68 13 e7 51 40 fe bd b8 a0 00 |K.:..^h..Q@.....| +00000110 7a 7d b7 60 0c 9d 23 7b 6e 77 fd 71 6f 45 30 41 |z}.`..#{nw.qoE0A| +00000120 bf 3f 5f 45 27 b1 bd 3e 39 d1 bf 80 be 74 e1 e3 |.?_E'..>9....t..| +00000130 ae 9c a7 68 40 ac 98 ef 3f 7f e6 41 a5 f5 c9 56 |...h@...?..A...V| +00000140 45 1c 4e ad 1f 62 58 fc 0b 1f 06 1a 12 c5 d1 c6 |E.N..bX.........| +00000150 0a 3d f9 f7 e9 a5 16 9b 69 bf f8 39 6f 38 8c cd |.=......i..9o8..| +00000160 da da 97 f7 40 9b a1 9f 3b c8 a5 5b 42 2f 44 29 |....@...;..[B/D)| +00000170 f0 d9 0b 0e 7a b8 ae 9f 7f de fd 4c 81 c4 a2 9d |....z......L....| +00000180 a1 40 b3 5e a5 22 1a 1a 7b f7 83 14 4d 53 c9 68 |.@.^."..{...MS.h| +00000190 4e e0 3f 8a 88 b0 74 51 eb 3a 85 ee 45 3b 5d d5 |N.?...tQ.:..E;].| +000001a0 8c cd ba 55 b9 89 32 4c 6e d9 81 c3 b0 68 4d 39 |...U..2Ln....hM9| +000001b0 0e 3b 70 31 a2 e2 6e f1 07 5a 0e 4f 6a 0c 58 f1 |.;p1..n..Z.Oj.X.| +000001c0 71 0d dc 35 a9 ea 15 50 1e fe f4 e5 c6 ff ef 6a |q..5...P.......j| +000001d0 46 8c 04 27 1b cc a6 0e 40 25 c5 5e 13 e0 26 e8 |F..'....@%.^..&.| +000001e0 5f 44 bb 05 f7 1c 6e 8c 1e 58 f3 5f af 92 98 79 |_D....n..X._...y| +000001f0 93 50 a2 22 8d 65 62 20 78 15 8e 02 16 77 53 45 |.P.".eb x....wSE| +00000200 fd 51 a6 db 80 26 7a 69 c1 55 69 76 96 2e 49 62 |.Q...&zi.Uiv..Ib| +00000210 0e b8 fe 58 36 0d ac 68 b7 f0 54 16 45 bc 6a a0 |...X6..h..T.E.j.| +00000220 8b fa 2e 00 de cf ad 73 31 ff c0 5f be ff 09 76 |.......s1.._...v| +00000230 07 b2 08 27 90 98 2f b6 08 9f 8b 31 77 0a d1 41 |...'../....1w..A| +00000240 ee ca 97 0d 46 03 91 d6 12 02 b3 7d 13 e8 ab 83 |....F......}....| +00000250 79 93 96 33 f0 fc 14 3a 90 06 df 0d 38 59 1e 34 |y..3...:....8Y.4| +00000260 a6 8a 5c 19 ae 8f ba b7 b8 6d cf 59 29 81 8c b7 |..\......m.Y)...| +00000270 86 44 e0 a5 ef c1 24 cd 21 05 2a da 4b 01 e9 2b |.D....$.!.*.K..+| +00000280 b6 c0 be 8e be f1 af 1c a4 be b1 26 4c a9 e5 e7 |...........&L...| +00000290 41 fa 74 73 03 77 9b 5b 56 69 ca bd a5 99 ff d6 |A.ts.w.[Vi......| +000002a0 eb 77 0c b0 3e 29 dc e7 54 7d 4e 03 5f 75 1e a5 |.w..>)..T}N._u..| +000002b0 93 73 9a bd 53 31 57 b9 63 9c 17 f2 ae 3b 21 81 |.s..S1W.c....;!.| +000002c0 38 55 1f 56 96 0f 02 de ad 2a a4 7e 71 52 79 21 |8U.V.....*.~qRy!| +000002d0 b0 76 e5 59 1c 74 10 0e e3 90 4b 69 53 4d dd 20 |.v.Y.t....KiSM. | +000002e0 52 25 14 d1 67 ed 72 26 6a 4e 1f 1b aa b9 03 6d |R%..g.r&jN.....m| +000002f0 81 67 1c c3 f2 f5 2e f0 01 b5 f5 8f d3 5e 08 2d |.g...........^.-| +00000300 fc f5 8a c0 3d af c1 3d 3f 14 c1 b3 18 55 6b 98 |....=..=?....Uk.| +00000310 f5 4b c0 17 03 03 00 99 44 a2 0f 9b 62 d7 b0 e0 |.K......D...b...| +00000320 68 2e f1 90 64 fc fe 4f e3 e0 9a 82 8d c3 14 6d |h...d..O.......m| +00000330 f4 22 00 d9 74 5d 98 82 9f e5 6e fd 7e e5 9e d2 |."..t]....n.~...| +00000340 5a 1b 11 fd 05 c0 d7 4e 48 6b 8b e1 33 8d f3 04 |Z......NHk..3...| +00000350 2c 20 00 53 86 b7 f8 34 20 2f 6a e0 f9 c3 3a 85 |, .S...4 /j...:.| +00000360 f2 32 4e a0 3e 3c 2d c6 91 86 d3 4b 09 ef d2 93 |.2N.><-....K....| +00000370 3f a3 9a ad 0f f6 a3 04 ba 88 fe 9a 80 12 c5 0d |?...............| +00000380 f9 86 2b b8 cb 7e 46 28 16 2d 58 bf 5a 0a 2e f8 |..+..~F(.-X.Z...| +00000390 cd c2 2e 01 c2 cf ca f7 5e b1 1d 8b 9d 1b 4b 8e |........^.....K.| +000003a0 62 a2 c2 17 14 e7 00 be 00 3a 0c 4c 84 d7 c1 47 |b........:.L...G| +000003b0 61 17 03 03 00 35 7d 84 99 5a 9f b5 26 b5 f6 ce |a....5}..Z..&...| +000003c0 56 ca a6 25 60 84 e3 5b c1 b8 7c ed ed 02 f1 13 |V..%`..[..|.....| +000003d0 50 2a e8 a2 65 65 f9 88 b1 a5 01 24 0f 52 4a da |P*..ee.....$.RJ.| +000003e0 5d ea 2b 88 b3 9c b7 ed d8 70 38 |].+......p8| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 35 e7 50 0e 48 d7 |..........5.P.H.| +00000010 8f 45 ff 48 48 1d 0c 94 b8 61 e2 ad 89 eb 4d 9b |.E.HH....a....M.| +00000020 20 f5 73 41 85 0c 7b c1 9b 1e d1 a1 27 b3 83 51 | .sA..{.....'..Q| +00000030 05 51 a9 fc 98 7e fe ef e2 43 6b a8 da f0 d0 d5 |.Q...~...Ck.....| +00000040 17 03 03 00 17 f3 bb 74 b9 31 69 37 87 c9 eb 04 |.......t.1i7....| +00000050 49 95 8f 30 e7 cf c5 67 27 3d 11 66 |I..0...g'=.f| +>>> Flow 4 (server to client) +00000000 17 03 03 00 ea 04 c2 4b 8d b2 6b 4e d5 f1 84 03 |.......K..kN....| +00000010 22 ec f6 d5 61 ba fe 8a e2 23 75 f3 9e b5 9f 9f |"...a....#u.....| +00000020 f7 23 a6 45 46 72 c1 90 cf 30 42 22 f4 7b 0b ca |.#.EFr...0B".{..| +00000030 6e b3 4a 74 98 3c 5b a4 1e 27 af 25 a9 af 45 ad |n.Jt.<[..'.%..E.| +00000040 70 0a 61 2a b3 0b 17 e6 ea 99 d5 d9 be 8e e9 97 |p.a*............| +00000050 7a 8b 95 4b 50 91 86 35 ef c5 67 0a 10 0f fb 26 |z..KP..5..g....&| +00000060 11 cb f7 7b 35 5a 58 79 80 38 cf f8 e8 77 c2 84 |...{5ZXy.8...w..| +00000070 3a 91 f5 26 23 79 2c ac 8b f7 40 f1 38 dd 0f d6 |:..&#y,...@.8...| +00000080 3c 0e be e3 12 37 5a 98 0c c8 6a 86 33 df e3 ef |<....7Z...j.3...| +00000090 7d a1 9b 3b 1b 1e 3e 17 58 8d 39 7b 28 c2 02 bd |}..;..>.X.9{(...| +000000a0 8a 5e 20 17 cb 0b 4c 01 df 36 a4 c0 0d de 26 67 |.^ ...L..6....&g| +000000b0 18 b0 a8 b2 98 b2 01 2a 8c 0e 29 ce 2f c7 4a c5 |.......*..)./.J.| +000000c0 ea 2a 86 06 33 62 93 ad 7a 08 15 d1 ab 46 14 43 |.*..3b..z....F.C| +000000d0 8d 44 b8 6f ac 4a bc fe e2 91 2f ca 03 6d 49 66 |.D.o.J..../..mIf| +000000e0 7c bd ca 7b e1 da 73 45 c1 c2 79 02 02 55 52 17 ||..{..sE..y..UR.| +000000f0 03 03 00 ea 3c fa 1d 62 22 67 f0 44 ac ab 17 a0 |....<..b"g.D....| +00000100 f2 7d 44 ce 6a 3f dd 2c d5 45 8f 2c 5d 6f 8e a6 |.}D.j?.,.E.,]o..| +00000110 c8 97 ea e9 df 35 fd 00 57 98 33 d1 87 f4 1a ee |.....5..W.3.....| +00000120 8d 68 a7 ac b0 18 84 e3 26 df 08 85 8f e0 65 48 |.h......&.....eH| +00000130 a9 94 f1 e5 09 78 6c 76 4a 1a 14 35 93 cc 44 ea |.....xlvJ..5..D.| +00000140 8c 8d f7 ee 33 4f cf e0 54 db ba 49 4b 5c b9 ea |....3O..T..IK\..| +00000150 de a9 6d eb bc f4 43 85 27 a4 d6 64 6d 1e 9d 9d |..m...C.'..dm...| +00000160 e1 81 22 30 b9 a1 c4 c9 b4 0b 4b 23 25 58 34 33 |.."0......K#%X43| +00000170 40 fc ea 84 fa f5 ba 40 6d 60 cc 60 1b 95 19 f6 |@......@m`.`....| +00000180 c6 9e ba 00 d8 fd 93 cd bb 50 91 55 f1 e3 34 ea |.........P.U..4.| +00000190 f8 99 7e fd 18 02 69 e3 54 cf 15 3f d3 54 0e e9 |..~...i.T..?.T..| +000001a0 30 4e 67 94 2e 48 49 45 b8 ae 1a 3c 6d 78 f0 2c |0Ng..HIE...>> Flow 5 (client to server) +00000000 17 03 03 00 16 38 87 e3 aa 7a 6f 28 c7 6f bd cf |.....8...zo(.o..| +00000010 d0 50 21 a4 e0 44 9f fe 29 47 e9 |.P!..D..)G.| +>>> Flow 6 (server to client) +00000000 17 03 03 00 1a 3c be d6 90 e8 ad 97 7c 0f c9 b6 |.....<......|...| +00000010 3d 66 52 35 57 1e 01 c5 a2 27 8b c4 17 25 20 |=fR5W....'...% | +>>> Flow 7 (client to server) +00000000 17 03 03 00 1d 21 5f dc 8c da b2 e4 b2 9c 1e c6 |.....!_.........| +00000010 dc 2c a5 f6 51 0d 18 03 13 e5 f3 b2 00 c8 4d 1f |.,..Q.........M.| +00000020 f9 1b 17 03 03 00 13 f0 2a 99 bd b7 c6 3c 9b da |........*....<..| +00000030 b8 c3 3d ee b3 f8 a3 0d 59 f8 |..=.....Y.| diff --git a/testdata/Client-TLSv13-P256-ECDHE b/testdata/Client-TLSv13-P256-ECDHE index 7c8997d..826fd7a 100644 --- a/testdata/Client-TLSv13-P256-ECDHE +++ b/testdata/Client-TLSv13-P256-ECDHE @@ -18,76 +18,109 @@ 00000100 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 b5 68 |lK[.V.2B.X..I..h| 00000110 1a 41 03 56 6b dc 5a 89 |.A.Vk.Z.| >>> Flow 2 (server to client) -00000000 16 03 03 00 9b 02 00 00 97 03 03 9b 6d 68 8f c5 |............mh..| -00000010 57 3c 87 82 4c 88 98 ec 51 3c bd 18 c7 02 b4 5a |W<..L...Q<.....Z| -00000020 ed 76 16 f9 54 87 1c 83 3f 76 1a 20 00 00 00 00 |.v..T...?v. ....| +00000000 16 03 03 00 9b 02 00 00 97 03 03 43 72 ac ef 29 |...........Cr..)| +00000010 8f 37 16 cf c9 d8 4c ce 9b d9 c1 93 f6 bb 47 a9 |.7....L.......G.| +00000020 2d 23 83 b5 ff b0 e0 93 34 01 52 20 00 00 00 00 |-#......4.R ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| 00000050 4f 00 2b 00 02 03 04 00 33 00 45 00 17 00 41 04 |O.+.....3.E...A.| -00000060 a8 5f cf 31 63 1e 59 63 80 b9 59 47 ee 50 d6 68 |._.1c.Yc..YG.P.h| -00000070 af fe 1f 1f b0 4f ae 67 a8 d1 f1 a7 ff f4 43 f8 |.....O.g......C.| -00000080 15 74 ae a7 64 1f 35 2b 29 b3 16 54 91 5c 0f 7d |.t..d.5+)..T.\.}| -00000090 c5 63 64 2c 16 f4 99 e3 76 52 6f f6 b6 e8 c7 78 |.cd,....vRo....x| -000000a0 14 03 03 00 01 01 17 03 03 00 17 47 98 e0 19 54 |...........G...T| -000000b0 3e f3 78 0a 24 92 23 bb c0 03 5d 51 8b fb c1 c2 |>.x.$.#...]Q....| -000000c0 8e e6 17 03 03 02 6d ba 0a a6 e1 a8 13 0c 3c fd |......m.......<.| -000000d0 0d ae 7e 47 76 78 9d 17 13 03 53 ba 7a 22 a4 55 |..~Gvx....S.z".U| -000000e0 3b a3 30 51 d0 e6 33 c3 95 63 07 99 aa 12 82 c3 |;.0Q..3..c......| -000000f0 be 5d b0 88 2e 91 9c 87 a7 a0 a5 79 d8 5e 1c b2 |.].........y.^..| -00000100 9b 27 6e da 98 63 a6 9a e0 f2 51 83 f0 49 85 a4 |.'n..c....Q..I..| -00000110 63 0f 1a 48 85 29 c1 31 78 c0 66 61 36 d2 ec 7c |c..H.).1x.fa6..|| -00000120 ed ba 35 42 ed 7f be a5 2c 91 11 8f 95 f9 8f 7a |..5B....,......z| -00000130 04 32 14 01 5c 78 21 86 f5 70 09 59 7e dc b3 7f |.2..\x!..p.Y~...| -00000140 fd ed 14 d2 40 65 cc b3 1b d7 c6 4b 30 d0 72 59 |....@e.....K0.rY| -00000150 db 1a 13 3c b8 f4 ea 8f 22 f2 13 b7 3f 9c 99 fd |...<...."...?...| -00000160 91 c2 bc e4 e0 71 63 30 81 24 26 2e 9e ff 16 8e |.....qc0.$&.....| -00000170 47 e4 e0 e4 12 2f ba 2c 7e c5 dd 91 79 4f bd 5f |G..../.,~...yO._| -00000180 0f 0e 66 5f da 0e f2 4d 9e 46 f3 c7 7f 65 f6 d4 |..f_...M.F...e..| -00000190 cd f1 cb c6 d7 5e a2 db 58 e1 d1 c5 05 63 90 a0 |.....^..X....c..| -000001a0 96 18 64 29 92 95 88 6c 9f f8 9b 54 b6 d2 e2 bc |..d)...l...T....| -000001b0 3d 6f f2 c0 56 76 66 05 21 47 80 e9 63 85 a1 12 |=o..Vvf.!G..c...| -000001c0 c9 e8 80 c4 fe b5 63 86 cf ae 8f 83 ff ae ff 63 |......c........c| -000001d0 77 20 ae 9c f7 88 1f 6d 18 4a 33 e9 2b e0 12 ca |w .....m.J3.+...| -000001e0 05 4c b7 25 35 b6 8d a4 ba 00 5c f2 be ab a7 d6 |.L.%5.....\.....| -000001f0 0e 02 1c 58 da af c9 51 4c e8 8e b8 fa 27 78 76 |...X...QL....'xv| -00000200 9d 50 2e 36 98 09 23 12 37 f0 c6 4a 32 00 cd 09 |.P.6..#.7..J2...| -00000210 9e ca 6b e4 1e d6 7f 9c 72 b3 81 13 29 2c fe 49 |..k.....r...),.I| -00000220 99 92 2f 8f c9 f0 86 9d fa 56 b8 6c 7b 76 fc 12 |../......V.l{v..| -00000230 c5 1f e7 a1 ea 13 99 ac 2c 6b 9c 23 3e 0b 78 0c |........,k.#>.x.| -00000240 41 9a 47 51 0c 64 87 a3 b8 1b 7f 2c d9 c5 b2 28 |A.GQ.d.....,...(| -00000250 36 13 7e b5 8c ab 32 50 64 a0 eb 9f 57 19 eb fa |6.~...2Pd...W...| -00000260 1e 1d b3 73 81 18 14 de 6b ef 68 ed 37 da 29 0e |...s....k.h.7.).| -00000270 9a 7d c1 31 c5 bd 76 60 2b 40 3a 85 c2 1c b1 de |.}.1..v`+@:.....| -00000280 9f 41 00 22 5a 63 72 9f 57 4e 02 1b 5a 2c 5f 0a |.A."Zcr.WN..Z,_.| -00000290 c0 e2 c8 4c ca 18 39 7e c0 b8 67 58 b4 bd 0c 5b |...L..9~..gX...[| -000002a0 3a bd 1e 39 fd 09 73 63 e9 41 86 6b ed fe 35 f0 |:..9..sc.A.k..5.| -000002b0 64 ed 14 c9 d3 6c 65 97 96 fc dd bf 9f dd e4 01 |d....le.........| -000002c0 1b 02 ad 5a 55 f5 86 9f c1 56 ce 59 30 16 bb 9c |...ZU....V.Y0...| -000002d0 c8 9f 13 5a fd 61 7d 40 3f ec e7 9c 1e 61 0d c7 |...Z.a}@?....a..| -000002e0 44 87 84 2b fd 80 9d dd 00 a0 ce 19 fa 9a 3c f5 |D..+..........<.| -000002f0 59 3b 03 27 10 93 64 15 f4 a5 bd 3b f2 91 38 03 |Y;.'..d....;..8.| -00000300 a4 4f a4 6a dd 7e 3e 8c 5c 40 19 59 f9 7f a7 7c |.O.j.~>.\@.Y...|| -00000310 22 3b e8 55 88 b4 99 1f cb d9 2f 49 74 4d 3c 8b |";.U....../ItM<.| -00000320 81 7a 0c 31 77 87 aa 9d 57 9b cd 8a 16 6a cc 06 |.z.1w...W....j..| -00000330 51 83 1b 00 17 03 03 00 99 a8 77 b4 5b 03 63 c5 |Q.........w.[.c.| -00000340 fb 02 54 c7 56 aa fb ba 3d 19 52 34 c8 1a d5 3f |..T.V...=.R4...?| -00000350 ef bc b9 62 96 e6 42 be 13 4c 67 7a 4c 01 21 14 |...b..B..LgzL.!.| -00000360 12 5a 91 80 0b ff 19 90 b4 a9 d6 66 bc 50 9c 6c |.Z.........f.P.l| -00000370 a2 63 57 d2 78 e7 cb 1a ed 55 02 64 05 f8 7b 4f |.cW.x....U.d..{O| -00000380 1f 5f af a4 ce 9c 9c 82 e2 80 36 77 e6 9b be 82 |._........6w....| -00000390 25 bd 30 a5 e9 7f f8 a3 f8 f7 56 eb a1 8f f3 e5 |%.0.......V.....| -000003a0 6d 9f c0 30 e6 95 83 e3 1b 45 49 10 50 e1 7f 27 |m..0.....EI.P..'| -000003b0 cd 2c da e4 4b da 0d 77 d3 87 fe d2 38 55 e6 ea |.,..K..w....8U..| -000003c0 ec 12 90 ba f5 c7 5d 87 cd f1 35 5b 5b 8e d9 a4 |......]...5[[...| -000003d0 a5 04 17 03 03 00 35 84 59 aa d7 a6 cb 73 41 df |......5.Y....sA.| -000003e0 55 60 eb 39 3d 38 e4 84 96 72 40 ac 90 f4 38 59 |U`.9=8...r@...8Y| -000003f0 be 17 59 ee fa 51 cf 03 1a ec 6a 88 c2 bb 82 3a |..Y..Q....j....:| -00000400 11 3b 62 50 3c a5 4a c7 0e e7 e5 a8 |.;bP<.J.....| +00000060 3b 16 53 b1 b9 87 04 07 c6 35 62 02 6b d1 d6 e6 |;.S......5b.k...| +00000070 06 54 aa eb 03 ab b3 69 79 0f 86 77 1b 09 0c 70 |.T.....iy..w...p| +00000080 2e 7d 09 86 1c df d9 a0 67 5c 87 75 f6 0d 1b 3b |.}......g\.u...;| +00000090 fd 0a 21 e2 2c 47 e4 be 60 79 f8 b4 e0 36 9f 1e |..!.,G..`y...6..| +000000a0 14 03 03 00 01 01 17 03 03 00 17 b5 fa 96 8c 5b |...............[| +000000b0 2b 29 ea 48 bb 2f ef d2 f2 b6 46 6c 06 9a a6 6d |+).H./....Fl...m| +000000c0 b5 d9 17 03 03 02 6d 54 d1 a7 bb 4a 57 68 0f 8d |......mT...JWh..| +000000d0 d9 1f 9c 8d da a4 30 4f 03 74 3e b7 5f 62 9e cc |......0O.t>._b..| +000000e0 5d bb df 24 57 db 11 f4 84 e4 65 a2 98 cf bf 27 |]..$W.....e....'| +000000f0 75 ae 70 3b f8 15 b0 d4 3f e5 50 76 1b 12 fe 41 |u.p;....?.Pv...A| +00000100 cb d3 f4 7b b8 e5 93 2f 25 87 e0 da ba ce 2e ee |...{.../%.......| +00000110 dc ee 2d ae dd e0 d2 2c 55 f8 ff e3 53 d2 c4 b5 |..-....,U...S...| +00000120 0e dc cd 5f d9 4b dc 6b 6f e1 c8 bb 05 aa 6c 4f |..._.K.ko.....lO| +00000130 e9 ee 89 c8 fe 90 ee 37 21 94 c5 7b 06 3c e0 d6 |.......7!..{.<..| +00000140 bd 94 45 96 9c 72 d3 24 cd e7 a4 14 67 5a b3 24 |..E..r.$....gZ.$| +00000150 8c a4 5e 95 bb 5a 1a 83 a5 75 00 b6 9c 3f b4 23 |..^..Z...u...?.#| +00000160 57 ae 19 cb c8 ae ed 17 9a 1a ed 9a c7 51 48 2b |W............QH+| +00000170 1e 35 a5 a3 fa 58 3d 6b e2 06 93 4d 7b 0b 22 cd |.5...X=k...M{.".| +00000180 11 22 33 59 b0 21 88 97 ca 11 a6 35 4d 7a ef d0 |."3Y.!.....5Mz..| +00000190 01 b7 da 3c 32 ce ee 50 d5 cf 3f 17 a5 8f 6c 61 |...<2..P..?...la| +000001a0 8c b0 d2 4f c5 53 43 9a d7 24 1f b0 75 ef fb 14 |...O.SC..$..u...| +000001b0 c6 96 fd 2e 80 d2 9a 8a 9b 69 e0 f5 78 60 a3 47 |.........i..x`.G| +000001c0 36 41 c1 7e 26 d9 9c c3 93 f8 c7 7c 20 77 de 1a |6A.~&......| w..| +000001d0 d9 33 0c 9f 60 89 e2 ac 08 df 34 92 23 fe 6a e6 |.3..`.....4.#.j.| +000001e0 ec bc 51 3f 2f ec 95 38 39 5a e1 12 3b ca ca bb |..Q?/..89Z..;...| +000001f0 be 5d 87 71 4d 9a 2e 04 6c 8b 01 34 bb 71 09 45 |.].qM...l..4.q.E| +00000200 60 a6 bd e2 33 30 04 bb 89 bc 79 01 84 06 73 04 |`...30....y...s.| +00000210 c7 5e af 9f ad f6 62 c5 32 46 69 41 7a 31 56 e9 |.^....b.2FiAz1V.| +00000220 01 5f 65 9f 6b 15 21 d4 a6 ba 3c 45 d7 9e cd 4a |._e.k.!.....| +00000350 02 21 70 2c 25 a3 23 42 08 63 9b 34 0d 88 62 ae |.!p,%.#B.c.4..b.| +00000360 2c 8f ed 91 c6 2d 78 9f bf e3 16 bb b1 83 99 e4 |,....-x.........| +00000370 72 fd 31 ec c3 4f 16 b6 98 d8 d5 d8 46 85 a7 32 |r.1..O......F..2| +00000380 51 d8 b4 0c 9e 31 a3 e6 80 31 ee d1 d8 e6 ad f2 |Q....1...1......| +00000390 d5 3d 73 1d 17 5a 73 e4 f1 ac a8 ca 7f 24 a9 76 |.=s..Zs......$.v| +000003a0 77 28 33 60 c3 fb dd d8 bd bd 38 f5 e5 fc 12 aa |w(3`......8.....| +000003b0 34 c4 c8 24 07 db 59 fe 46 ab ab a6 20 77 44 25 |4..$..Y.F... wD%| +000003c0 d5 27 7c 97 14 ef 01 8a 4c 3a 2b e8 ac 8d c9 05 |.'|.....L:+.....| +000003d0 d8 12 17 03 03 00 35 7b 1a ff 01 f0 d6 9b 24 e2 |......5{......$.| +000003e0 e4 50 54 33 21 2b 58 6d 88 4c d7 fd a9 5a d8 6d |.PT3!+Xm.L...Z.m| +000003f0 78 13 9f 09 8f 8c 1d 3a bc 76 c7 f6 95 9c 4d 04 |x......:.v....M.| +00000400 92 06 e4 82 d1 77 24 da 05 49 4e 52 |.....w$..INR| >>> Flow 3 (client to server) -00000000 17 03 03 00 35 ea 0d 79 a3 d3 98 d9 41 c1 f0 0f |....5..y....A...| -00000010 43 e6 77 23 c7 e2 ca 20 27 ed de 0b 89 fd 2b 60 |C.w#... '.....+`| -00000020 cc c0 09 b2 d1 9c 50 c2 de 79 1f af cb 18 1b df |......P..y......| -00000030 e5 63 33 21 f7 36 35 f5 83 bd 17 03 03 00 17 a4 |.c3!.65.........| -00000040 03 32 95 72 e9 81 7a dc 86 92 d4 d3 6e 27 31 6e |.2.r..z.....n'1n| -00000050 fb 5e f3 4d f7 cb 17 03 03 00 13 69 ad fb c5 d1 |.^.M.......i....| -00000060 8e 3f 20 f5 70 18 41 8f 91 9d 23 58 26 75 |.? .p.A...#X&u| +00000000 14 03 03 00 01 01 17 03 03 00 35 6f 4f 2f 2f c7 |..........5oO//.| +00000010 73 95 d9 6a ea 12 1f e4 a0 ea a0 c5 10 8b 57 99 |s..j..........W.| +00000020 5b 6f 33 ae 14 f8 97 55 7d c2 4a 18 a7 6c 5d a8 |[o3....U}.J..l].| +00000030 3b 33 6f fd 1e b2 78 4a 02 3f 50 b6 f5 0a 52 88 |;3o...xJ.?P...R.| +00000040 17 03 03 00 17 c6 b1 65 78 2e 41 4e a8 a6 68 21 |.......ex.AN..h!| +00000050 27 41 d6 8b cf 69 c4 79 6a a9 93 1e |'A...i.yj...| +>>> Flow 4 (server to client) +00000000 17 03 03 00 ea 38 4c b2 c8 55 46 fe 6f e7 fe 59 |.....8L..UF.o..Y| +00000010 16 64 0d 78 97 f3 13 b1 6a 64 2b ed 64 d8 c0 96 |.d.x....jd+.d...| +00000020 5c 52 45 ba ac 9c b0 42 14 81 15 99 79 c9 75 7c |\RE....B....y.u|| +00000030 41 a4 15 90 7c 2c 8d 7f 75 43 37 1e 26 8f 74 a2 |A...|,..uC7.&.t.| +00000040 13 45 40 1b ec df f6 a8 fa 75 3d e0 29 7e b9 00 |.E@......u=.)~..| +00000050 aa b9 c5 60 dd 87 ac dc 44 74 17 0d ed 5a 50 b6 |...`....Dt...ZP.| +00000060 8f 4e ee 4e d0 a7 97 fc 73 ef 9b 09 d3 ca aa 92 |.N.N....s.......| +00000070 e9 32 61 9e 18 62 67 20 10 2c e5 18 fd 49 d9 76 |.2a..bg .,...I.v| +00000080 68 9a 61 c3 be fc 1e 7c 9e ca ed 8c c5 40 dc 03 |h.a....|.....@..| +00000090 3f 54 39 7e 3a 2a ec 78 a4 a0 91 14 30 cf 8f 9d |?T9~:*.x....0...| +000000a0 a9 c3 5b ba 1b 47 93 83 49 e2 dd fc c7 2b a3 11 |..[..G..I....+..| +000000b0 27 3c dd 35 46 ef 06 d6 89 e6 81 13 c4 61 7f 47 |'<.5F........a.G| +000000c0 5b ea b1 55 4e 6b 04 75 d1 4a a2 dc 1e 22 20 24 |[..UNk.u.J..." $| +000000d0 f3 13 2a 63 b7 f4 51 ca 32 3c 82 75 49 e4 29 76 |..*c..Q.2<.uI.)v| +000000e0 eb 19 20 d5 98 b0 03 9a 02 9f 1f 7e de ca 19 17 |.. ........~....| +000000f0 03 03 00 ea 72 3d f9 82 80 34 d2 b3 a3 bd e8 cc |....r=...4......| +00000100 34 a2 0b 9f 40 c2 07 28 e8 55 5b 73 ce e5 4c 64 |4...@..(.U[s..Ld| +00000110 54 8e 6b 16 22 b4 00 1c 81 1b c4 ec 2b 0b a1 9c |T.k.".......+...| +00000120 10 27 a4 d1 14 d7 4c 65 1e 0f 84 de a3 3e 0e eb |.'....Le.....>..| +00000130 46 db 04 f6 dd c4 7f 17 42 96 39 0d e7 2a ca f3 |F.......B.9..*..| +00000140 ab fb 9b f2 4b a0 fc 8f ba 16 97 bc ce 39 78 b9 |....K........9x.| +00000150 fe 81 c9 de e2 c0 56 df 15 d0 ef d6 02 14 52 4b |......V.......RK| +00000160 a7 70 ee 46 34 22 6c 53 df b0 61 4e 79 de ad ad |.p.F4"lS..aNy...| +00000170 d0 c7 e7 0f fe 02 cd 68 6b e0 57 40 54 f9 7d 57 |.......hk.W@T.}W| +00000180 42 bb 0b 63 a7 68 a0 c6 c9 92 af 5b e6 d6 ec e3 |B..c.h.....[....| +00000190 10 a3 07 ac 2e 9a 88 a9 ec 20 47 77 22 c8 54 08 |......... Gw".T.| +000001a0 90 19 ca 1e 01 a9 92 3e c9 cf 70 92 5b 90 7a 75 |.......>..p.[.zu| +000001b0 95 15 d5 e2 e2 13 6e 45 1a 51 ae e0 e0 6c 39 ed |......nE.Q...l9.| +000001c0 6c ef c4 c0 c4 29 f5 a2 c1 b4 a9 e9 73 fc dc a4 |l....)......s...| +000001d0 ea 90 ec bc 33 bf 7c 94 7f e8 ed 54 e2 19 |....3.|....T..| +>>> Flow 5 (client to server) +00000000 17 03 03 00 13 ca f6 56 a8 93 c9 5c ad 35 01 39 |.......V...\.5.9| +00000010 17 11 3c fb a7 94 d6 e5 |..<.....| diff --git a/testdata/Client-TLSv13-RenegotiationRejected b/testdata/Client-TLSv13-RenegotiationRejected deleted file mode 100644 index 69efb59..0000000 --- a/testdata/Client-TLSv13-RenegotiationRejected +++ /dev/null @@ -1,107 +0,0 @@ ->>> Flow 1 (client to server) -00000000 16 03 01 00 f8 01 00 00 f4 03 03 00 00 00 00 00 |................| -00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| -00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 32 cc a8 |.............2..| -00000050 cc a9 c0 2f c0 2b c0 30 c0 2c c0 27 c0 13 c0 23 |.../.+.0.,.'...#| -00000060 c0 09 c0 14 c0 0a 00 9c 00 9d 00 3c 00 2f 00 35 |...........<./.5| -00000070 c0 12 00 0a 00 05 c0 11 c0 07 13 01 13 03 13 02 |................| -00000080 01 00 00 79 00 05 00 05 01 00 00 00 00 00 0a 00 |...y............| -00000090 0a 00 08 00 1d 00 17 00 18 00 19 00 0b 00 02 01 |................| -000000a0 00 00 0d 00 18 00 16 08 04 08 05 08 06 04 01 04 |................| -000000b0 03 05 01 05 03 06 01 06 03 02 01 02 03 ff 01 00 |................| -000000c0 01 00 00 12 00 00 00 2b 00 09 08 03 04 03 03 03 |.......+........| -000000d0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| -000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| -000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| ->>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 54 7e 6f 02 63 |....z...v..T~o.c| -00000010 1c ce 10 08 72 06 43 09 69 c1 bb d1 df 5d 05 1f |....r.C.i....]..| -00000020 67 44 47 37 10 75 37 ab 8b dd 58 20 00 00 00 00 |gDG7.u7...X ....| -00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 e0 |..+.....3.$... .| -00000060 69 f4 18 18 65 bd a3 f0 ec c5 29 6b 1d 97 53 4c |i...e.....)k..SL| -00000070 84 c0 e1 d7 81 21 66 9d bc 9a e1 b6 62 70 3e 14 |.....!f.....bp>.| -00000080 03 03 00 01 01 17 03 03 00 17 b8 7a b7 13 71 7b |...........z..q{| -00000090 d0 0f fa 58 ae bb b3 1f 2b c9 77 08 94 22 d9 69 |...X....+.w..".i| -000000a0 78 17 03 03 02 6d 80 bb df 32 4b 7f 94 3d f2 34 |x....m...2K..=.4| -000000b0 ea cd 2d fc f1 8f eb 33 39 73 f2 ad 17 20 fa be |..-....39s... ..| -000000c0 99 15 48 91 af fc 01 80 63 e2 05 64 ea 5f 72 9c |..H.....c..d._r.| -000000d0 2c 30 41 ad 62 d2 17 4e eb 10 bb 54 b6 63 08 cb |,0A.b..N...T.c..| -000000e0 3b 2c a7 30 44 ca 78 20 f3 0b 8f 41 cf 3f 32 e8 |;,.0D.x ...A.?2.| -000000f0 e5 b1 a7 2f 0d 04 59 3e 00 85 36 41 17 f8 13 b7 |.../..Y>..6A....| -00000100 92 24 2c 14 49 05 0c fa d7 73 95 10 e6 fb b4 7e |.$,.I....s.....~| -00000110 6e 24 b1 87 cb aa 5e 09 c8 c7 57 16 eb 6d d3 ec |n$....^...W..m..| -00000120 d6 39 c2 ab 3d b8 8e 0e 7e ec 58 3d 0e 9e 81 7f |.9..=...~.X=....| -00000130 2d ad 32 0d d7 18 5f e2 b8 0d d7 59 90 e6 40 49 |-.2..._....Y..@I| -00000140 4f 20 8b fb 9d 94 f9 15 50 0e bb d9 cd ed 9c 7f |O ......P.......| -00000150 88 ce cb b2 60 6a 9d f1 de fa df 43 df 24 c2 15 |....`j.....C.$..| -00000160 64 a0 72 f8 36 fe 38 2d a1 78 58 51 cd 9e df 59 |d.r.6.8-.xXQ...Y| -00000170 5b ea fb d8 e9 31 e2 33 b9 5f fb a6 a2 bb 5f c8 |[....1.3._...._.| -00000180 80 37 16 71 2c 9d d5 98 85 dd 79 ff 82 01 e4 80 |.7.q,.....y.....| -00000190 09 e1 02 22 b2 08 a6 ef bb 05 2b 52 6c 31 08 94 |..."......+Rl1..| -000001a0 f3 31 7a fd b6 f3 b9 8d 19 74 f9 fd 76 6e 4c 29 |.1z......t..vnL)| -000001b0 cf 06 48 e0 4e 85 5d 03 63 97 ef 59 fe 8e 51 2e |..H.N.].c..Y..Q.| -000001c0 2f 68 ad 55 14 b1 56 9b 00 eb 43 2a 03 7e 56 a8 |/h.U..V...C*.~V.| -000001d0 5f 83 6d 4f a2 43 1f 95 2d 8f 6d b3 e2 fb 63 ce |_.mO.C..-.m...c.| -000001e0 de ef e6 e2 0b 3d 7c dd 06 62 38 80 ce a6 88 03 |.....=|..b8.....| -000001f0 3b 39 67 3c 60 ea 4c a4 0b 2d 8a d3 b0 b9 2f 10 |;9g<`.L..-..../.| -00000200 85 5f 30 a5 37 e9 f1 0d 34 f7 a4 c7 15 7b c7 08 |._0.7...4....{..| -00000210 7a 32 8f 52 87 ac 67 c1 c3 f4 1a e0 f3 3a ff ae |z2.R..g......:..| -00000220 85 85 ca d9 4b 4f ad 5f b3 bd 65 98 b4 63 b1 68 |....KO._..e..c.h| -00000230 29 38 39 37 e0 46 01 2f 4d dd 11 94 b0 0e 15 d9 |)897.F./M.......| -00000240 1d c8 a8 ee 4f 72 2d 3c 7b 4a 9b 6a 82 bd f6 78 |....Or-<{J.j...x| -00000250 94 c2 43 e5 6c 14 3f 69 4c dc 6a 7b fa e4 a3 1c |..C.l.?iL.j{....| -00000260 cc 46 75 e3 b2 50 5b 29 50 67 91 ea 45 54 87 42 |.Fu..P[)Pg..ET.B| -00000270 38 99 12 e8 25 86 ab 2b a8 24 72 dc 75 ae d6 bd |8...%..+.$r.u...| -00000280 93 ab fb 75 07 8a 7a 2b 6c 1b 0f 06 6d 9e cd e2 |...u..z+l...m...| -00000290 d4 c6 f0 52 7e 52 59 dd 9b cd 5c d1 77 17 1b d7 |...R~RY...\.w...| -000002a0 1d 03 4f 4e d8 0f b7 7c c7 f8 10 6a 3c 97 4f e3 |..ON...|...j<.O.| -000002b0 e3 2d b3 2a b0 42 c0 ab 9c fd 33 88 b6 8b 60 95 |.-.*.B....3...`.| -000002c0 fb 14 35 28 66 b5 49 1b a3 45 a6 e3 d4 86 ff ec |..5(f.I..E......| -000002d0 6e ad 18 54 60 66 e0 28 89 e8 12 3a ba f6 ab b6 |n..T`f.(...:....| -000002e0 f6 e8 68 3e 2a 2b d7 e0 c8 ed dc 37 9b 1c 94 ef |..h>*+.....7....| -000002f0 c9 91 c7 c6 47 13 4a c7 bf fc 44 9a 41 94 73 61 |....G.J...D.A.sa| -00000300 b2 ca 6a a1 cf 0a 65 c9 79 be 2a 8f 00 b7 99 98 |..j...e.y.*.....| -00000310 03 03 20 17 03 03 00 99 50 46 40 7e 04 bd 9f ec |.. .....PF@~....| -00000320 82 d2 f7 72 a0 00 aa 7c 9b 59 b7 a1 14 81 98 8e |...r...|.Y......| -00000330 18 58 c5 7c e2 96 7d 79 24 41 ad f1 51 1f d9 8a |.X.|..}y$A..Q...| -00000340 25 3c d0 f0 c0 77 82 1c 76 0c f0 f0 f4 2e c7 1a |%<...w..v.......| -00000350 dd 81 84 77 b5 9a 5c 78 02 7f db bb 2c d4 8e 7f |...w..\x....,...| -00000360 63 c2 86 de 43 01 c1 3c 35 28 d0 91 f0 bc ec 83 |c...C..<5(......| -00000370 dd b7 a4 91 b2 c5 1e e4 b7 da fd 0a df f7 33 b0 |..............3.| -00000380 37 39 1b 0c 01 00 1f df 1d c5 44 fc 5b 84 53 22 |79........D.[.S"| -00000390 21 1d 02 49 97 c7 08 dc 4a 28 cc 6f fc 5e 9c d5 |!..I....J(.o.^..| -000003a0 cf ea 11 89 f5 5f 15 25 e6 f7 bf a9 b4 c1 bb 91 |....._.%........| -000003b0 5d 17 03 03 00 35 23 b8 53 0a 97 0f e7 6c 01 5c |]....5#.S....l.\| -000003c0 5e 22 2e 14 ab 33 6d 87 3f 99 41 35 50 c4 95 76 |^"...3m.?.A5P..v| -000003d0 ea ac 8d d4 01 10 55 0a 74 c3 8a 80 64 44 cc 7c |......U.t...dD.|| -000003e0 d0 59 a5 34 dd c7 b9 13 ff 54 55 |.Y.4.....TU| ->>> Flow 3 (client to server) -00000000 17 03 03 00 35 c9 d1 1c 82 c8 d6 03 be 95 47 78 |....5.........Gx| -00000010 4d 0e 3a 7c fb 60 55 5f 41 5c dd 63 47 41 ff 43 |M.:|.`U_A\.cGA.C| -00000020 c9 4b 1c 37 bc be ac 2a f6 2c d7 39 06 58 5d 71 |.K.7...*.,.9.X]q| -00000030 ab 71 6a 5d 3c 52 c6 f1 48 ee 17 03 03 00 17 d6 |.qj].E..~XIw.| -00000050 50 e4 a2 35 35 67 |P..55g| ->>> Flow 4 (server to client) -00000000 17 03 03 00 da 01 9d a9 a7 3b 74 8a d3 cb 20 49 |.........;t... I| -00000010 b1 73 82 ca 35 bb d7 6b 0d 0d 29 c2 6b 3c 63 75 |.s..5..k..).k.s. ..l.]m].0(.| -00000050 f1 37 92 e8 f7 f7 db 16 82 0e 01 60 9c 88 c4 18 |.7.........`....| -00000060 d5 e7 b2 7c 3e ba e5 df 40 12 77 83 2c c8 0a 59 |...|>...@.w.,..Y| -00000070 a1 cc 43 17 c5 3d 77 76 39 07 ea 4a 37 10 dd d2 |..C..=wv9..J7...| -00000080 cc a5 70 3b d6 d1 41 c6 67 1c 16 61 e3 32 f7 a0 |..p;..A.g..a.2..| -00000090 21 76 4d 3f c0 6a 9d 82 e8 0f b4 44 07 a4 c7 74 |!vM?.j.....D...t| -000000a0 e4 38 be d8 7d 61 f7 cc dc 61 0f 3b 81 f0 b7 4d |.8..}a...a.;...M| -000000b0 7c ac 85 0c 2b 93 6c 02 a4 76 c5 fe f2 c2 d6 81 ||...+.l..v......| -000000c0 18 9b f4 11 ae 8c e6 c4 7a 91 d2 f7 84 43 fc 22 |........z....C."| -000000d0 a1 85 90 cb 20 07 2e 91 87 e9 65 a1 2f 1f 5b |.... .....e./.[| ->>> Flow 5 (client to server) -00000000 17 03 03 00 13 6f bd 84 f6 9b 45 bc 84 ba 22 b0 |.....o....E...".| -00000010 ae 0f cf 02 fa f7 4e 15 17 03 03 00 13 c1 b9 70 |......N........p| -00000020 e4 13 f9 b1 dc 1c d6 6e 7f ca 2b 1e d5 ab 0f 9c |.......n..+.....| diff --git a/testdata/Client-TLSv13-X25519-ECDHE b/testdata/Client-TLSv13-X25519-ECDHE index c8ecf83..3dea0ac 100644 --- a/testdata/Client-TLSv13-X25519-ECDHE +++ b/testdata/Client-TLSv13-X25519-ECDHE @@ -16,74 +16,105 @@ 000000e0 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed |(.._.).0........| 000000f0 90 99 5f 58 cb 3b 74 |.._X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 89 a2 c7 e7 3a |....z...v......:| -00000010 1e 5c a5 51 bd ad 35 de 3d 36 f6 ac ce 57 d0 f1 |.\.Q..5.=6...W..| -00000020 e4 c4 42 3f 1d c3 2b 13 a7 0f 20 20 00 00 00 00 |..B?..+... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 ff 75 f5 a2 e7 |....z...v...u...| +00000010 a6 49 83 90 e7 aa ad d6 71 53 82 9d 1c 0b 4a 8a |.I......qS....J.| +00000020 ea 06 7d e6 95 72 d8 f5 52 31 9a 20 00 00 00 00 |..}..r..R1. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 94 |..+.....3.$... .| -00000060 b6 b9 7b 23 f1 28 d5 b6 96 5a ec e4 03 52 68 5a |..{#.(...Z...RhZ| -00000070 23 2e bf c3 cc 2b 0b e8 06 c1 b4 34 52 1f 28 14 |#....+.....4R.(.| -00000080 03 03 00 01 01 17 03 03 00 17 31 ef c3 81 8c d9 |..........1.....| -00000090 9d 98 71 b8 08 27 0e d6 c1 35 09 58 36 38 bc cc |..q..'...5.X68..| -000000a0 a9 17 03 03 02 6d 25 2e 10 a3 aa b1 6a cd 7c ed |.....m%.....j.|.| -000000b0 78 ab 43 5d c8 1f 60 51 00 83 49 59 ac 95 bd 87 |x.C]..`Q..IY....| -000000c0 98 a7 cd 1e 4d 65 d6 bd 76 78 a9 77 e5 0e 44 73 |....Me..vx.w..Ds| -000000d0 1f 5f 24 64 fc 05 02 9e 0d 70 de 04 dc b2 7e d3 |._$d.....p....~.| -000000e0 ee 8d 2e e4 1e 6d 02 dd 45 b8 69 14 46 f5 02 a6 |.....m..E.i.F...| -000000f0 f1 53 10 02 3a 84 1b 12 d9 cb 64 70 87 8b 1f f5 |.S..:.....dp....| -00000100 51 d7 02 a8 93 2c 48 14 f6 d6 bd f3 48 f0 7c 10 |Q....,H.....H.|.| -00000110 82 f7 b2 97 22 26 15 1a 67 4a 0e ca 7c 41 ee 08 |...."&..gJ..|A..| -00000120 78 b6 44 e1 17 78 9a a1 32 d6 68 99 9d a1 4f e1 |x.D..x..2.h...O.| -00000130 88 7e 3c 73 67 76 47 68 5c 88 21 e1 2b 5c 87 37 |.~.| -000001c0 76 71 d1 ba 52 2e 7c e8 01 49 b6 61 e0 e7 17 c1 |vq..R.|..I.a....| -000001d0 38 35 fd fa 4d 90 02 eb c6 b2 a4 d7 a1 ef 4a 4c |85..M.........JL| -000001e0 61 90 a3 0c 00 f2 9b d4 de ce 98 77 fc 54 ef 57 |a..........w.T.W| -000001f0 81 93 06 60 a1 9a da 9d 92 23 28 db 1e 60 3b 6e |...`.....#(..`;n| -00000200 15 18 2d 60 ee f6 60 ed e6 1a 41 a2 62 0a de f5 |..-`..`...A.b...| -00000210 c4 a1 53 d2 16 e8 92 dd 43 7b 6a 26 8b 83 27 42 |..S.....C{j&..'B| -00000220 85 36 6f 73 e9 e2 68 aa 32 e2 28 58 0a eb 1a 7e |.6os..h.2.(X...~| -00000230 d3 b1 cf e7 02 3f c4 25 85 89 80 ab 57 b4 82 2c |.....?.%....W..,| -00000240 90 2a f7 ea 2f 97 59 16 21 d1 79 a8 67 53 a3 61 |.*../.Y.!.y.gS.a| -00000250 1b fa 9a a4 4f dc 66 72 fd 0e ff 31 e0 8f 3a 54 |....O.fr...1..:T| -00000260 63 ee 13 2a d7 af 62 53 3c 19 b5 7d fc 8b 4b 12 |c..*..bS<..}..K.| -00000270 e1 a6 16 a7 28 54 b9 d9 a9 30 08 42 18 11 3b 53 |....(T...0.B..;S| -00000280 98 b1 72 9a 3e 46 9a b5 86 5e e2 6d d7 00 17 6b |..r.>F...^.m...k| -00000290 00 78 35 66 46 03 cb c7 6e 24 32 1b 1d 06 59 96 |.x5fF...n$2...Y.| -000002a0 43 e1 1a bb e5 b6 df 58 bd ec 90 bf b2 2f dd 79 |C......X...../.y| -000002b0 74 21 8d bd 6a ed 63 ee ed 19 43 96 58 c8 55 b5 |t!..j.c...C.X.U.| -000002c0 2f 6e a8 7f 5c fe cd 56 b0 9e e8 03 63 ab be e4 |/n..\..V....c...| -000002d0 45 e0 b8 a0 6c cb 37 dc b8 a4 a1 cd bc c5 09 78 |E...l.7........x| -000002e0 ea d7 00 26 bf f1 fb 02 1e 46 1a ce ca f5 5c 56 |...&.....F....\V| -000002f0 73 42 a7 32 20 09 70 4b 1c bb ca 79 6d ad 8a 6c |sB.2 .pK...ym..l| -00000300 3f 4a e1 b1 1e d4 76 9d 89 91 20 76 cd f6 99 92 |?J....v... v....| -00000310 de 64 00 17 03 03 00 99 7f af 97 d5 ba 57 8a e8 |.d...........W..| -00000320 c7 c7 7c a6 fc 46 50 80 aa 49 36 3a d0 61 42 7e |..|..FP..I6:.aB~| -00000330 8d 0e 3d b4 b2 82 d5 79 51 47 1c 72 79 ed 56 ff |..=....yQG.ry.V.| -00000340 0d 95 dd a5 84 b1 ac 6d 3d 87 66 ce bf 41 c9 64 |.......m=.f..A.d| -00000350 8f 6f 91 e7 24 ff 04 30 83 77 40 33 17 da 57 5b |.o..$..0.w@3..W[| -00000360 55 be a9 a6 bd 62 2c 24 56 c8 cb a1 68 24 73 97 |U....b,$V...h$s.| -00000370 2b ab d3 a8 3b 7d df ac 81 3c 85 d3 35 16 86 c8 |+...;}...<..5...| -00000380 92 a9 a6 95 f2 1d 40 7c a1 85 a9 6d ac 4a 44 82 |......@|...m.JD.| -00000390 ec 92 26 04 b8 e2 65 3e e9 dc cb e5 d1 0a 1f a7 |..&...e>........| -000003a0 2f a5 7a 9c 7c 62 0f 4e 8a 99 53 99 02 18 09 6f |/.z.|b.N..S....o| -000003b0 64 17 03 03 00 35 62 08 e9 3d d4 bc 4c 22 ef fb |d....5b..=..L"..| -000003c0 e0 30 cc fb 85 c9 0a 2d 71 f5 06 da 17 dc 94 e0 |.0.....-q.......| -000003d0 11 7d bb 45 cf b4 32 e5 56 1d 51 e1 74 11 ef 52 |.}.E..2.V.Q.t..R| -000003e0 27 e6 3f 18 3f 72 65 6d b3 79 7a |'.?.?rem.yz| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 37 |..+.....3.$... 7| +00000060 7b a6 43 94 9b 0f 95 5e 65 65 f3 50 25 27 d2 c6 |{.C....^ee.P%'..| +00000070 40 03 1e a3 2f f4 8f c3 a0 f5 62 21 86 0e 32 14 |@.../.....b!..2.| +00000080 03 03 00 01 01 17 03 03 00 17 4c 11 25 b7 37 16 |..........L.%.7.| +00000090 50 0f b8 58 72 30 37 e2 25 10 6c 39 9f 7b bf b5 |P..Xr07.%.l9.{..| +000000a0 53 17 03 03 02 6d 03 5c 76 8c 92 4d 9e f7 75 8b |S....m.\v..M..u.| +000000b0 31 48 b9 f9 43 c1 cf 87 3d 5e dc 10 e4 4a 57 86 |1H..C...=^...JW.| +000000c0 f4 45 f0 9f e2 c3 ac eb c0 c0 0e 9c d5 7f 8a 07 |.E..............| +000000d0 c7 ca d4 9a cd a0 7b 14 c7 b3 da d2 29 19 c6 e3 |......{.....)...| +000000e0 f5 78 e0 fc 61 4e 6a f1 1a 3d b1 ba 91 5b 5d c5 |.x..aNj..=...[].| +000000f0 77 51 13 6a 6b 6a 68 ba 76 11 df af 6f 75 cf e9 |wQ.jkjh.v...ou..| +00000100 08 a8 69 05 ae 1f d4 b2 aa a8 95 a2 22 2d 6e e5 |..i........."-n.| +00000110 fb 18 ac 8c 84 77 56 17 8d 94 c3 25 59 59 b9 c6 |.....wV....%YY..| +00000120 1a c1 f2 cd f9 41 75 64 3b 19 ff 1c 4e 7c fc 84 |.....Aud;...N|..| +00000130 bb 42 12 57 2c d4 e1 0f 73 ae 1a 80 af e5 66 9f |.B.W,...s.....f.| +00000140 24 93 68 ef 41 6e 52 c7 c4 8a 50 66 2c dd ec fb |$.h.AnR...Pf,...| +00000150 75 e7 cd c0 83 cd d3 ce fc 9c 2c af 2b 86 8d 58 |u.........,.+..X| +00000160 50 05 82 dd 03 5a 89 cd 59 13 aa d6 dd 50 86 48 |P....Z..Y....P.H| +00000170 64 a6 ad 12 90 6a 72 78 30 77 dc e1 f1 f5 30 a3 |d....jrx0w....0.| +00000180 d3 86 60 9c bc 7f ae 28 9a f6 0c 8a 54 0c 78 a8 |..`....(....T.x.| +00000190 e5 1f 61 73 a2 25 11 7a 92 50 59 af 67 e4 67 bf |..as.%.z.PY.g.g.| +000001a0 c6 36 02 fc 83 77 b4 2c b2 a3 ab f6 43 68 29 ff |.6...w.,....Ch).| +000001b0 28 1c 9c bb c9 bb dc 89 d1 fa b9 1d 54 d8 bf 2b |(...........T..+| +000001c0 98 8c c6 df 5c bf 22 db 2d 95 2a 22 89 aa 10 98 |....\.".-.*"....| +000001d0 66 a8 04 24 6d 44 19 2c 44 f5 80 fb be a5 84 41 |f..$mD.,D......A| +000001e0 17 ab 01 81 a4 3e 1f 6a fc d0 c2 af d4 fb 48 d3 |.....>.j......H.| +000001f0 d8 a7 d6 af e7 f6 0d 6f 84 76 e5 27 6d 61 a0 95 |.......o.v.'ma..| +00000200 cd 3c 72 c3 c3 12 61 d1 23 6f a3 3a 15 3c e1 56 |.| +00000290 ec b5 d2 15 9c 44 cd f6 f2 65 01 ac d4 b0 7b 31 |.....D...e....{1| +000002a0 96 5d d3 cb ee ba 29 ee da 20 dc 39 25 f9 b8 77 |.]....).. .9%..w| +000002b0 b1 56 e2 72 a2 1d ca 65 69 e6 31 79 b8 cd bb 70 |.V.r...ei.1y...p| +000002c0 00 15 0b 47 e3 b5 00 e1 f1 4e 83 ca e9 2d 84 c3 |...G.....N...-..| +000002d0 69 99 95 43 bf 89 b3 22 7b ca 17 9b 46 b6 fa 3f |i..C..."{...F..?| +000002e0 21 05 87 ea 60 f6 3b ea a8 e8 30 2a c8 aa d9 9a |!...`.;...0*....| +000002f0 e8 4f 15 48 f1 50 54 68 b3 4e 7b e8 8c f2 78 ea |.O.H.PTh.N{...x.| +00000300 32 7c ed e1 32 96 90 6e 46 be 28 bb e0 d6 60 4b |2|..2..nF.(...`K| +00000310 48 fe 5a 17 03 03 00 99 bc bd b8 1f c4 f4 be 7e |H.Z............~| +00000320 e0 cc 0d 79 fe d7 ed 73 d9 c4 80 f3 e3 0a d3 26 |...y...s.......&| +00000330 d5 d7 7d f4 5f c1 56 6a 2c 03 b4 70 46 4d 88 67 |..}._.Vj,..pFM.g| +00000340 d2 43 6c 67 4d 2f e1 89 ff bc 9d 70 c7 de 24 0f |.ClgM/.....p..$.| +00000350 01 53 82 53 d4 20 30 93 8d 70 5d 3f bd b1 a8 d3 |.S.S. 0..p]?....| +00000360 d3 46 aa fa d0 2b 9b 70 de 3c f3 1c a4 75 d8 a0 |.F...+.p.<...u..| +00000370 6a 14 7d ec ad 6f 01 c1 d4 e0 f2 33 1a 1b 71 a8 |j.}..o.....3..q.| +00000380 74 3d 4c dc 64 fe b9 3b 52 22 39 13 71 19 78 7c |t=L.d..;R"9.q.x|| +00000390 bf 9d 06 0d 0d 27 4d b6 35 8a 44 f4 4f b9 f7 55 |.....'M.5.D.O..U| +000003a0 d4 ba f5 ac 05 5b e5 ac 07 8e 49 7a 93 cf 3f 78 |.....[....Iz..?x| +000003b0 fe 17 03 03 00 35 07 76 8c 10 f4 e8 70 e9 c6 12 |.....5.v....p...| +000003c0 2d c8 ee 2f b3 6a 72 59 93 ae 8d af 00 8b 7e 5f |-../.jrY......~_| +000003d0 2a 33 87 dc 92 a9 7f e4 eb b4 09 8e 57 0f 02 16 |*3..........W...| +000003e0 31 13 32 fe c5 88 fc b2 28 56 e5 |1.2.....(V.| >>> Flow 3 (client to server) -00000000 17 03 03 00 35 92 2e 10 eb db 73 85 b8 85 d6 a3 |....5.....s.....| -00000010 87 c6 18 71 f7 63 06 ed 7e 54 3b 5b a6 dd a8 70 |...q.c..~T;[...p| -00000020 c4 94 12 e2 c3 cd 5c a5 af e2 64 9d eb 36 f5 dc |......\...d..6..| -00000030 16 f1 12 ea 5c 95 65 1e 4b dd 17 03 03 00 17 ba |....\.e.K.......| -00000040 be 5d 51 b5 c3 d6 b8 dc a5 38 85 4a 51 0e c7 ca |.]Q......8.JQ...| -00000050 a9 70 0b c7 1c 59 17 03 03 00 13 4d c9 3f 33 6b |.p...Y.....M.?3k| -00000060 27 87 88 73 da 3e 74 b2 18 fc 04 59 fc d9 |'..s.>t....Y..| +00000000 14 03 03 00 01 01 17 03 03 00 35 73 82 31 66 2c |..........5s.1f,| +00000010 6e 22 2d 6f b5 30 4d db eb f0 91 2e b1 11 6d 0e |n"-o.0M.......m.| +00000020 ca 50 e6 ce 92 bc 44 8c e4 e4 3b 8f 13 82 6e 9c |.P....D...;...n.| +00000030 bb 25 bc 36 e8 27 5a c1 8f ed 6d fc f1 8c 8a e1 |.%.6.'Z...m.....| +00000040 17 03 03 00 17 66 bb ee 75 14 79 25 af 92 97 ad |.....f..u.y%....| +00000050 ac 26 bf 2e 37 c1 12 e2 ab 65 1f ac |.&..7....e..| +>>> Flow 4 (server to client) +00000000 17 03 03 00 da 19 f9 46 cf 64 be 58 bf d0 24 37 |.......F.d.X..$7| +00000010 9d 7a 91 0d 24 60 d7 a7 b8 8f dc ca db e2 b3 c6 |.z..$`..........| +00000020 ec 6e 30 f6 88 8b c9 18 92 b8 f1 06 09 82 49 c5 |.n0...........I.| +00000030 89 9b a0 76 8e 55 e0 52 ca 12 88 ef dc 62 7c ad |...v.U.R.....b|.| +00000040 b1 66 cb 23 b9 3b 7f 4f d9 da 02 d8 9c c2 f8 66 |.f.#.;.O.......f| +00000050 26 60 57 a7 99 76 d2 de 15 98 e5 9f b5 b0 54 82 |&`W..v........T.| +00000060 a9 88 76 25 aa bd 10 7b 47 0b 3d e4 c4 a2 fd 5f |..v%...{G.=...._| +00000070 71 da aa 6b 4b e4 77 1e 85 7c f0 6d b8 f2 5b f3 |q..kK.w..|.m..[.| +00000080 df 73 1e df a0 60 bb 8e 53 4b 5b ac 16 49 aa 15 |.s...`..SK[..I..| +00000090 11 bf e1 91 a1 03 df 3d 5f 68 a0 93 08 53 c8 98 |.......=_h...S..| +000000a0 77 b9 22 70 63 44 21 23 22 0c 27 2f b3 22 fd 47 |w."pcD!#".'/.".G| +000000b0 a1 b9 27 8c 10 b0 e7 db 36 d1 0f 45 d4 59 24 cd |..'.....6..E.Y$.| +000000c0 84 db 5f e1 db 8f f8 a6 d7 11 04 6f b4 10 e7 48 |.._........o...H| +000000d0 f7 50 4e 32 f4 a0 ed 37 04 0d 6b f9 7d 30 e8 17 |.PN2...7..k.}0..| +000000e0 03 03 00 da 22 55 eb fb b6 0d 36 a1 46 10 2c 0a |...."U....6.F.,.| +000000f0 22 00 59 c0 e2 69 98 4d f8 38 4b 23 d0 49 a2 3e |".Y..i.M.8K#.I.>| +00000100 d6 f3 64 f7 e1 47 39 a4 90 a5 17 81 c4 9a 2a 0f |..d..G9.......*.| +00000110 6f e9 71 9a 9e e5 c6 e4 5b fe 91 4a 78 68 9b d7 |o.q.....[..Jxh..| +00000120 3e 2b c4 81 cd 0b 7a 1a a0 5d 85 5b 49 db 15 0b |>+....z..].[I...| +00000130 c8 90 34 e6 8e 5f 44 4e 85 07 23 4c aa 41 8a 94 |..4.._DN..#L.A..| +00000140 49 87 69 39 e3 0c 6f 80 19 7c 81 4a 8a 42 5b ed |I.i9..o..|.J.B[.| +00000150 1d 65 0b 7e f0 28 60 87 24 ce 23 4e 34 6e f2 10 |.e.~.(`.$.#N4n..| +00000160 91 85 b1 a0 10 6c ec 30 c0 c3 dd b7 d8 eb 59 71 |.....l.0......Yq| +00000170 80 20 8a 58 f1 79 f7 70 e9 fa d5 12 58 fd 68 06 |. .X.y.p....X.h.| +00000180 66 3e 0a 21 4d 9c aa df 92 fc b4 1f 20 e4 df 98 |f>.!M....... ...| +00000190 c4 11 e1 7b 1f 55 6c e5 75 c1 b9 b6 29 91 85 58 |...{.Ul.u...)..X| +000001a0 85 a0 7c 9f 29 ea 51 3e 4a 93 21 e6 3a ce 69 c5 |..|.).Q>J.!.:.i.| +000001b0 60 77 ca fc 04 13 f7 6e ce 14 73 8d 21 b1 |`w.....n..s.!.| +>>> Flow 5 (client to server) +00000000 17 03 03 00 13 03 3a 80 ef 54 48 49 d8 a1 d8 66 |......:..THI...f| +00000010 3d 5b 76 16 c0 d6 68 5e |=[v...h^| diff --git a/testdata/Server-TLSv12-P256 b/testdata/Server-TLSv12-P256 new file mode 100644 index 0000000..c97bae4 --- /dev/null +++ b/testdata/Server-TLSv12-P256 @@ -0,0 +1,85 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 8f 01 00 00 8b 03 03 74 08 f5 ee 24 |...........t...$| +00000010 cb c0 26 fc f1 11 c6 9d fb ac f5 ed d1 05 78 e6 |..&...........x.| +00000020 cf a6 cb f2 ed 1a 46 3a cf 25 8b 00 00 04 c0 2f |......F:.%...../| +00000030 00 ff 01 00 00 5e 00 00 00 0e 00 0c 00 00 09 31 |.....^.........1| +00000040 32 37 2e 30 2e 30 2e 31 00 0b 00 04 03 00 01 02 |27.0.0.1........| +00000050 00 0a 00 04 00 02 00 17 00 16 00 00 00 17 00 00 |................| +00000060 00 0d 00 30 00 2e 04 03 05 03 06 03 08 07 08 08 |...0............| +00000070 08 09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 |................| +00000080 06 01 03 03 02 03 03 01 02 01 03 02 02 02 04 02 |................| +00000090 05 02 06 02 |....| +>>> Flow 2 (server to client) +00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 00 c0 2f 00 00 |............./..| +00000030 05 ff 01 00 01 00 16 03 03 02 59 0b 00 02 55 00 |..........Y...U.| +00000040 02 52 00 02 4f 30 82 02 4b 30 82 01 b4 a0 03 02 |.R..O0..K0......| +00000050 01 02 02 09 00 e8 f0 9d 3f e2 5b ea a6 30 0d 06 |........?.[..0..| +00000060 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 1f 31 0b |.*.H........0.1.| +00000070 30 09 06 03 55 04 0a 13 02 47 6f 31 10 30 0e 06 |0...U....Go1.0..| +00000080 03 55 04 03 13 07 47 6f 20 52 6f 6f 74 30 1e 17 |.U....Go Root0..| +00000090 0d 31 36 30 31 30 31 30 30 30 30 30 30 5a 17 0d |.160101000000Z..| +000000a0 32 35 30 31 30 31 30 30 30 30 30 30 5a 30 1a 31 |250101000000Z0.1| +000000b0 0b 30 09 06 03 55 04 0a 13 02 47 6f 31 0b 30 09 |.0...U....Go1.0.| +000000c0 06 03 55 04 03 13 02 47 6f 30 81 9f 30 0d 06 09 |..U....Go0..0...| +000000d0 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 30 |*.H............0| +000000e0 81 89 02 81 81 00 db 46 7d 93 2e 12 27 06 48 bc |.......F}...'.H.| +000000f0 06 28 21 ab 7e c4 b6 a2 5d fe 1e 52 45 88 7a 36 |.(!.~...]..RE.z6| +00000100 47 a5 08 0d 92 42 5b c2 81 c0 be 97 79 98 40 fb |G....B[.....y.@.| +00000110 4f 6d 14 fd 2b 13 8b c2 a5 2e 67 d8 d4 09 9e d6 |Om..+.....g.....| +00000120 22 38 b7 4a 0b 74 73 2b c2 34 f1 d1 93 e5 96 d9 |"8.J.ts+.4......| +00000130 74 7b f3 58 9f 6c 61 3c c0 b0 41 d4 d9 2b 2b 24 |t{.X.la<..A..++$| +00000140 23 77 5b 1c 3b bd 75 5d ce 20 54 cf a1 63 87 1d |#w[.;.u]. T..c..| +00000150 1e 24 c4 f3 1d 1a 50 8b aa b6 14 43 ed 97 a7 75 |.$....P....C...u| +00000160 62 f4 14 c8 52 d7 02 03 01 00 01 a3 81 93 30 81 |b...R.........0.| +00000170 90 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 05 |.0...U..........| +00000180 a0 30 1d 06 03 55 1d 25 04 16 30 14 06 08 2b 06 |.0...U.%..0...+.| +00000190 01 05 05 07 03 01 06 08 2b 06 01 05 05 07 03 02 |........+.......| +000001a0 30 0c 06 03 55 1d 13 01 01 ff 04 02 30 00 30 19 |0...U.......0.0.| +000001b0 06 03 55 1d 0e 04 12 04 10 9f 91 16 1f 43 43 3e |..U..........CC>| +000001c0 49 a6 de 6d b6 80 d7 9f 60 30 1b 06 03 55 1d 23 |I..m....`0...U.#| +000001d0 04 14 30 12 80 10 48 13 49 4d 13 7e 16 31 bb a3 |..0...H.IM.~.1..| +000001e0 01 d5 ac ab 6e 7b 30 19 06 03 55 1d 11 04 12 30 |....n{0...U....0| +000001f0 10 82 0e 65 78 61 6d 70 6c 65 2e 67 6f 6c 61 6e |...example.golan| +00000200 67 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 |g0...*.H........| +00000210 03 81 81 00 9d 30 cc 40 2b 5b 50 a0 61 cb ba e5 |.....0.@+[P.a...| +00000220 53 58 e1 ed 83 28 a9 58 1a a9 38 a4 95 a1 ac 31 |SX...(.X..8....1| +00000230 5a 1a 84 66 3d 43 d3 2d d9 0b f2 97 df d3 20 64 |Z..f=C.-...... d| +00000240 38 92 24 3a 00 bc cf 9c 7d b7 40 20 01 5f aa d3 |8.$:....}.@ ._..| +00000250 16 61 09 a2 76 fd 13 c3 cc e1 0c 5c ee b1 87 82 |.a..v......\....| +00000260 f1 6c 04 ed 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 |.l..s..Cw.......| +00000270 40 83 61 c9 4c 72 2b 9d ae db 46 06 06 4d f4 c1 |@.a.Lr+...F..M..| +00000280 b3 3e c0 d1 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 |.>...B...=.`.\!.| +00000290 3b e9 fa e7 16 03 03 00 cd 0c 00 00 c9 03 00 17 |;...............| +000002a0 41 04 1e 18 37 ef 0d 19 51 88 35 75 71 b5 e5 54 |A...7...Q.5uq..T| +000002b0 5b 12 2e 8f 09 67 fd a7 24 20 3e b2 56 1c ce 97 |[....g..$ >.V...| +000002c0 28 5e f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 |(^.+-O....lK[.V.| +000002d0 32 42 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc |2B.X..I..h.A.Vk.| +000002e0 5a 89 08 04 00 80 7b f8 9c bb af 20 2b b4 44 40 |Z.....{.... +.D@| +000002f0 0d bc 31 37 53 26 d4 74 b6 0b 5b 79 f5 a9 ea 2f |..17S&.t..[y.../| +00000300 e7 4f 58 42 a1 d1 43 96 bf 74 dd 2e 33 28 bd b1 |.OXB..C..t..3(..| +00000310 0b 8a eb d7 6c 1d 7a 71 3d 61 0b f1 8e 8c f8 32 |....l.zq=a.....2| +00000320 7a ec 60 ed 4a 84 67 ad 23 f0 c8 68 27 4d 82 d9 |z.`.J.g.#..h'M..| +00000330 15 58 38 cf 0a ec 5a 15 b8 14 e2 95 c6 6c b5 f3 |.X8...Z......l..| +00000340 5b ee 01 1c f7 00 83 ae e4 c8 89 77 8b 64 7b 9a |[..........w.d{.| +00000350 52 a3 c0 1c 6c 19 bc 3d 28 19 24 04 8d 2d 1c 7e |R...l..=(.$..-.~| +00000360 4d 56 01 64 f6 3c 16 03 03 00 04 0e 00 00 00 |MV.d.<.........| +>>> Flow 3 (client to server) +00000000 16 03 03 00 46 10 00 00 42 41 04 06 a5 96 8c 26 |....F...BA.....&| +00000010 fb 4e 33 6d 4f 28 6a 84 af 17 7e 6c 36 ca be 3b |.N3mO(j...~l6..;| +00000020 a2 0b b1 82 1d 35 37 02 09 f3 f0 c4 88 a9 82 1f |.....57.........| +00000030 df b5 c2 09 ed a9 7a e5 80 71 76 14 a8 98 03 08 |......z..qv.....| +00000040 25 04 94 03 4a c0 2a cb 77 bd e2 14 03 03 00 01 |%...J.*.w.......| +00000050 01 16 03 03 00 28 f4 25 33 55 25 c7 6d c9 e5 68 |.....(.%3U%.m..h| +00000060 09 5c 05 c5 49 78 82 08 20 7b 96 1b f8 5c 1a 41 |.\..Ix.. {...\.A| +00000070 be a3 4d 4c 01 3d 16 fa 3a f6 dc 37 5e 3b |..ML.=..:..7^;| +>>> Flow 4 (server to client) +00000000 14 03 03 00 01 01 16 03 03 00 28 00 00 00 00 00 |..........(.....| +00000010 00 00 00 24 72 76 66 ac a0 75 a4 5b 80 c8 f8 52 |...$rvf..u.[...R| +00000020 4b e3 8f 5a 02 f1 44 16 18 e6 ef b8 d3 51 50 f0 |K..Z..D......QP.| +00000030 06 b7 22 17 03 03 00 25 00 00 00 00 00 00 00 01 |.."....%........| +00000040 a0 f8 ed 7c ec 72 b8 fb 2a 6f 8b 61 83 ce 10 a0 |...|.r..*o.a....| +00000050 0e 45 39 ce 20 c1 b4 6e e1 a9 a6 e9 13 15 03 03 |.E9. ..n........| +00000060 00 1a 00 00 00 00 00 00 00 02 ca ce 38 1c fe db |............8...| +00000070 f3 53 18 ff fd b2 31 17 07 4d 99 10 |.S....1..M..| diff --git a/testdata/Server-TLSv12-X25519-ECDHE-RSA-AES-GCM b/testdata/Server-TLSv12-X25519 similarity index 100% rename from testdata/Server-TLSv12-X25519-ECDHE-RSA-AES-GCM rename to testdata/Server-TLSv12-X25519 diff --git a/testdata/Server-TLSv13-AES128-SHA256 b/testdata/Server-TLSv13-AES128-SHA256 new file mode 100644 index 0000000..9e85403 --- /dev/null +++ b/testdata/Server-TLSv13-AES128-SHA256 @@ -0,0 +1,100 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 dc 01 00 00 d8 03 03 8f 2d ec dc ac |............-...| +00000010 28 76 2d d2 5e b8 34 2f 3f b9 96 46 31 8a 12 d5 |(v-.^.4/?..F1...| +00000020 6a 9f a0 bf 11 00 3e d1 4c ba 17 20 72 a7 88 94 |j.....>.L.. r...| +00000030 ad d2 b6 e8 86 d8 34 45 42 44 b7 36 50 9b 64 36 |......4EBD.6P.d6| +00000040 de 03 b0 e5 99 8b f9 5a 67 5b f6 72 00 04 13 01 |.......Zg[.r....| +00000050 00 ff 01 00 00 8b 00 00 00 0e 00 0c 00 00 09 31 |...............1| +00000060 32 37 2e 30 2e 30 2e 31 00 0b 00 04 03 00 01 02 |27.0.0.1........| +00000070 00 0a 00 0c 00 0a 00 1d 00 17 00 1e 00 19 00 18 |................| +00000080 00 16 00 00 00 17 00 00 00 0d 00 1e 00 1c 04 03 |................| +00000090 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b 08 04 |................| +000000a0 08 05 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 |...........+....| +000000b0 04 00 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 |..-.....3.&.$...| +000000c0 20 52 35 32 79 0e bf 01 91 5a b1 be 9b ff bf f4 | R52y....Z......| +000000d0 72 13 1a 3d a6 a8 15 9f ad c3 a9 b6 32 79 84 32 |r..=........2y.2| +000000e0 71 |q| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 72 a7 88 94 |........... r...| +00000030 ad d2 b6 e8 86 d8 34 45 42 44 b7 36 50 9b 64 36 |......4EBD.6P.d6| +00000040 de 03 b0 e5 99 8b f9 5a 67 5b f6 72 13 01 00 00 |.......Zg[.r....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 2a 27 a8 a8 aa f7 |..........*'....| +00000090 7f c4 74 12 f2 f5 b3 46 e3 fc 9f c6 8e 4d 81 4c |..t....F.....M.L| +000000a0 f2 17 03 03 02 6d 4c ad 3d 6f 2b c3 22 fc e0 3f |.....mL.=o+."..?| +000000b0 74 c2 f7 20 1a 37 ff 42 3e 5c c7 7e 0a 27 48 88 |t.. .7.B>\.~.'H.| +000000c0 23 77 d3 e9 96 d0 6c 44 67 e0 13 03 06 e3 f8 70 |#w....lDg......p| +000000d0 c0 e1 56 8f a3 18 58 8a d0 a0 f1 96 0a 4b 47 f8 |..V...X......KG.| +000000e0 a0 51 06 82 03 09 e8 82 e7 c1 91 5a fb 2e a4 a7 |.Q.........Z....| +000000f0 34 19 d8 c1 86 0d 56 e9 74 f1 28 7a 7e bf 50 30 |4.....V.t.(z~.P0| +00000100 e1 29 43 fa d9 67 6f d1 94 4c 7f 06 b9 b7 5d 6c |.)C..go..L....]l| +00000110 f1 a4 dc 48 53 de 7e d6 c2 8a 32 a3 78 94 2d 55 |...HS.~...2.x.-U| +00000120 76 0d 3c b8 93 76 98 70 36 c2 2e a2 b3 8c ec 32 |v.<..v.p6......2| +00000130 43 50 06 f8 76 28 19 3b a3 51 64 26 24 fa 97 43 |CP..v(.;.Qd&$..C| +00000140 65 12 aa 2f 55 c3 30 33 9a 88 dc 4c 86 e5 13 aa |e../U.03...L....| +00000150 4b 4d 85 e6 67 0c 87 61 26 cd 1b 7b 80 67 87 60 |KM..g..a&..{.g.`| +00000160 00 0d 7a eb 9a e4 d2 a6 72 b5 66 f4 5b 9c 2f 42 |..z.....r.f.[./B| +00000170 c1 4b d3 cf 9f e7 be bf a4 12 57 d4 15 83 ce 61 |.K........W....a| +00000180 c0 29 71 ed d5 c3 e3 68 a0 c7 02 ed 94 d7 1f b2 |.)q....h........| +00000190 11 c1 38 67 a6 42 d2 23 ae b8 16 ed 69 92 91 57 |..8g.B.#....i..W| +000001a0 ca b6 fd 93 8f 32 ab 2d 8b 74 f8 b0 bb 5a a0 16 |.....2.-.t...Z..| +000001b0 72 92 6e 9e 10 46 3a 7d 2f 55 de 0c d4 9d b6 d0 |r.n..F:}/U......| +000001c0 e1 f6 2d 10 de 97 c1 28 c8 d4 63 4a 5b f9 08 c7 |..-....(..cJ[...| +000001d0 8b 28 65 0b 07 e2 62 82 09 3e d2 dd 82 a6 72 79 |.(e...b..>....ry| +000001e0 1d 59 ef 58 87 5a b6 b1 38 20 3c 4c 55 c0 9d fb |.Y.X.Z..8 3.$oe7@..A_| +000003e0 43 3a dd 65 3d a7 b4 6c bf 21 f4 17 03 03 00 93 |C:.e=..l.!......| +000003f0 1a a6 3b b4 be dd c0 64 5f ae 2d 05 70 3b 5e fc |..;....d_.-.p;^.| +00000400 83 e0 ad 5b d0 b3 32 bc f9 98 b2 f5 9f 16 14 52 |...[..2........R| +00000410 37 2c 72 90 c1 be 97 49 a3 4d 10 97 0e d0 ec ff |7,r....I.M......| +00000420 98 50 87 90 ba f2 f0 81 08 14 ad f6 f9 3b d0 b8 |.P...........;..| +00000430 f8 c2 62 96 d1 4b 4f 5a 96 43 9f b6 96 6b 59 b8 |..b..KOZ.C...kY.| +00000440 f5 cc cf bc 79 1a a6 6e c6 7d 06 10 8f a0 21 39 |....y..n.}....!9| +00000450 67 5f 36 37 19 fa 0f 56 00 36 16 10 a2 80 9f 01 |g_67...V.6......| +00000460 0a 68 2d 50 a1 fc 67 c5 00 24 36 54 c2 5a 93 a4 |.h-P..g..$6T.Z..| +00000470 0a 6c cd aa 3f 22 bf ef f4 80 32 6a 14 e1 1e 6b |.l..?"....2j...k| +00000480 8a 38 40 |.8@| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 35 3c 0b 73 34 15 |..........5<.s4.| +00000010 e0 fc da 7f 3a 12 a0 50 95 09 0c ec 6a d5 7b 55 |....:..P....j.{U| +00000020 76 0f 7a 8e 25 e4 d2 b9 5f 5a 79 95 a5 a4 c6 9d |v.z.%..._Zy.....| +00000030 eb 0a ad 13 d1 97 a5 bd c4 d0 1e ce 59 59 04 16 |............YY..| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 9a 92 bf 83 9f 0b 36 66 2f 8e d5 |...........6f/..| +00000010 69 74 a7 a2 20 bb b2 d5 ac e8 99 b1 e6 df 4d 03 |it.. .........M.| +00000020 3e 9e 9c 17 03 03 00 13 7e 0c 85 34 9e 48 48 4a |>.......~..4.HHJ| +00000030 ce fa 96 dd 7b 7c 11 38 20 8d 33 |....{|.8 .3| diff --git a/testdata/Server-TLSv13-AES256-SHA384 b/testdata/Server-TLSv13-AES256-SHA384 new file mode 100644 index 0000000..60aa82d --- /dev/null +++ b/testdata/Server-TLSv13-AES256-SHA384 @@ -0,0 +1,103 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 dc 01 00 00 d8 03 03 70 b7 07 12 16 |...........p....| +00000010 50 d7 b9 c9 5f 02 47 2d ff 93 a7 2f e8 51 dc a0 |P..._.G-.../.Q..| +00000020 8f 0d c8 80 38 c7 af 7e da bb ed 20 67 73 58 d7 |....8..~... gsX.| +00000030 11 8b c6 0d 72 86 e0 08 3e 2d d9 b9 16 9f 85 6e |....r...>-.....n| +00000040 3c 87 fd 87 c3 95 f6 4c 76 21 50 af 00 04 13 02 |<......Lv!P.....| +00000050 00 ff 01 00 00 8b 00 00 00 0e 00 0c 00 00 09 31 |...............1| +00000060 32 37 2e 30 2e 30 2e 31 00 0b 00 04 03 00 01 02 |27.0.0.1........| +00000070 00 0a 00 0c 00 0a 00 1d 00 17 00 1e 00 19 00 18 |................| +00000080 00 16 00 00 00 17 00 00 00 0d 00 1e 00 1c 04 03 |................| +00000090 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b 08 04 |................| +000000a0 08 05 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 |...........+....| +000000b0 04 00 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 |..-.....3.&.$...| +000000c0 20 f4 08 51 f6 69 b7 d6 a9 3e 18 a7 ee c0 30 f3 | ..Q.i...>....0.| +000000d0 13 63 52 40 30 7c 79 6c 24 03 c9 89 25 bd a4 5f |.cR@0|yl$...%.._| +000000e0 64 |d| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 67 73 58 d7 |........... gsX.| +00000030 11 8b c6 0d 72 86 e0 08 3e 2d d9 b9 16 9f 85 6e |....r...>-.....n| +00000040 3c 87 fd 87 c3 95 f6 4c 76 21 50 af 13 02 00 00 |<......Lv!P.....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 cc b9 e4 43 5e f6 |.............C^.| +00000090 9a 5a 62 14 02 39 fb 13 76 e8 10 db 26 1c 07 ec |.Zb..9..v...&...| +000000a0 06 17 03 03 02 6d 39 e9 a0 33 ee 39 36 54 62 f1 |.....m9..3.96Tb.| +000000b0 e9 1d 32 45 0f 5a ca 72 f7 7e 43 d8 89 97 00 3d |..2E.Z.r.~C....=| +000000c0 59 70 08 b4 d1 e1 84 24 7a b8 45 3c b8 32 93 b5 |Yp.....$z.E<.2..| +000000d0 51 a5 58 60 3f 60 52 aa c1 ff 85 fb fd 50 87 38 |Q.X`?`R......P.8| +000000e0 47 7a 88 c6 d1 e6 3c b3 16 14 5b cb 23 50 26 7a |Gz....<...[.#P&z| +000000f0 1d 28 d1 d2 29 5d b0 40 97 2f 3b 58 7c 8a 76 1f |.(..)].@./;X|.v.| +00000100 1c c1 d2 2b 63 9d 53 bc fb c2 42 cb 40 0d d0 7c |...+c.S...B.@..|| +00000110 73 6c dc 63 90 89 e3 66 67 2b a2 70 af e0 af fe |sl.c...fg+.p....| +00000120 0c c0 db 41 76 d0 16 37 2a 09 7a 79 31 03 c6 4a |...Av..7*.zy1..J| +00000130 f4 06 22 ac 96 b4 25 1f 54 11 24 c8 67 22 8f 2a |.."...%.T.$.g".*| +00000140 56 0c 24 fa 20 ed a8 37 66 f7 38 44 43 e2 e6 e3 |V.$. ..7f.8DC...| +00000150 96 b5 d5 dd a5 2c 23 e4 57 57 7d 7a 59 e2 4f 66 |.....,#.WW}zY.Of| +00000160 c4 29 d6 d1 32 a3 9c 4c dd 63 b2 a6 dc ff 6f 61 |.)..2..L.c....oa| +00000170 c2 db 88 80 23 c1 27 d4 be dd 4f b4 c9 b8 56 4c |....#.'...O...VL| +00000180 65 b6 f8 32 b2 60 7b af 5f 54 71 61 20 db 25 85 |e..2.`{._Tqa .%.| +00000190 34 b6 58 9b 71 01 dd 53 cd 13 65 2e 23 69 96 0e |4.X.q..S..e.#i..| +000001a0 89 94 75 09 64 60 76 d2 65 85 38 3d f1 0e cb 47 |..u.d`v.e.8=...G| +000001b0 c1 2c 52 f8 ce 7a a6 9f dd 7c 39 7e a7 f9 a6 1b |.,R..z...|9~....| +000001c0 c1 23 81 a6 7a b1 6c d4 3c 1c f3 71 ce 72 24 01 |.#..z.l.<..q.r$.| +000001d0 4a 8d e9 24 47 51 73 67 dc 7a 9f 0b 63 7d 29 e1 |J..$GQsg.z..c}).| +000001e0 3e 5e ac 72 d7 c8 d9 c2 13 de 92 dd 04 cb 09 21 |>^.r...........!| +000001f0 ad 41 69 27 77 48 eb 87 cb 3b 23 ba 06 a3 68 96 |.Ai'wH...;#...h.| +00000200 ad 24 35 f6 a6 03 87 a7 4d 9f d4 bf e5 8b 9f 56 |.$5.....M......V| +00000210 54 dd 0e 08 da 29 ff eb 9b e1 0a a5 25 b1 85 be |T....)......%...| +00000220 f8 ae 63 f4 49 64 cc 0a 41 0e 26 8a 8e bc 6f c9 |..c.Id..A.&...o.| +00000230 f5 41 55 80 0d bd 70 ad 85 b0 d4 8d 33 ac b6 40 |.AU...p.....3..@| +00000240 3e 76 fc fb 8f d2 7d 06 14 d4 45 24 6e 36 46 1c |>v....}...E$n6F.| +00000250 06 d3 f7 f3 4c 3a a5 83 4f 75 72 77 b4 5e 37 49 |....L:..Ourw.^7I| +00000260 41 f1 9f e6 d1 46 87 56 c8 64 28 fd 38 f0 0f 9c |A....F.V.d(.8...| +00000270 d0 39 ff 4b 46 56 73 0d 12 7d bf 63 b4 b8 0d 33 |.9.KFVs..}.c...3| +00000280 6b 4a 2b f8 39 67 f1 ec 2d a6 0b 5c 91 2d d8 3e |kJ+.9g..-..\.-.>| +00000290 91 81 1a 37 29 c7 14 d2 be db 31 61 dc 5d b1 e4 |...7).....1a.]..| +000002a0 64 af 14 9c 93 85 e7 5b 0e 42 63 c7 5e b5 cc 51 |d......[.Bc.^..Q| +000002b0 ca 83 ca fa 52 bd 44 a1 1c 76 20 bc 3d 9f 82 79 |....R.D..v .=..y| +000002c0 20 5c 01 14 e3 07 02 4c f6 87 f7 46 b8 de 47 23 | \.....L...F..G#| +000002d0 5d 5c b3 8f cd 96 49 51 32 3f d2 5d 92 32 19 b5 |]\....IQ2?.].2..| +000002e0 10 33 46 37 f0 b5 82 23 a5 91 1f 60 fb 21 2c 08 |.3F7...#...`.!,.| +000002f0 c3 6e 17 72 0b 5d c9 7b cc 77 97 6f 20 d9 a6 fa |.n.r.].{.w.o ...| +00000300 cc 4a bb c6 3b 0e b1 66 ae 57 f5 1b 16 46 36 b7 |.J..;..f.W...F6.| +00000310 a5 94 ae 17 03 03 00 99 d7 86 a0 5f c0 d2 33 3e |..........._..3>| +00000320 ce ce ea db cb a1 a5 11 b7 cc a1 48 b6 86 f5 11 |...........H....| +00000330 d6 32 8c f9 e8 bb e3 3e ea 6f 1a df 64 cd c8 7d |.2.....>.o..d..}| +00000340 e9 cb e4 19 fe cd 75 74 03 4a fe 91 1d 87 28 65 |......ut.J....(e| +00000350 25 79 3a 19 13 ba 67 16 aa 7e 8e c0 e6 53 4f bb |%y:...g..~...SO.| +00000360 98 ed cc 59 db 5e 73 23 d4 a9 a7 2a 6d 01 73 4a |...Y.^s#...*m.sJ| +00000370 e6 65 2e c0 34 49 c1 d8 70 2e 70 1b 10 97 74 23 |.e..4I..p.p...t#| +00000380 fe 6b 5d cd fa 71 c8 43 c3 5b 42 5c 7b e0 9e 3f |.k]..q.C.[B\{..?| +00000390 a8 3d a9 d1 97 17 87 80 af 7c 5d 8b 70 ba 87 06 |.=.......|].p...| +000003a0 67 dd 29 df f3 ca 9a f4 c8 93 e8 f8 ac c0 df 8e |g.).............| +000003b0 c5 17 03 03 00 45 40 a4 26 66 29 18 b8 d6 a7 87 |.....E@.&f).....| +000003c0 91 5f 6d 79 13 f8 7a 47 cf ac 93 7c 11 cb 4a b2 |._my..zG...|..J.| +000003d0 24 a6 40 fb d4 ed 71 ec 19 53 ba ae e0 bb e6 cf |$.@...q..S......| +000003e0 d6 8a a6 3c 6a 4e a3 6f 6c d7 2d e1 8a a4 6c da |.....q=....| +00000410 dc 2f 4a 62 c2 9f e2 e5 16 51 ff 35 a7 70 df 12 |./Jb.....Q.5.p..| +00000420 23 d6 f7 6c 96 91 7f 0f 6d d4 45 5f c6 8c c5 93 |#..l....m.E_....| +00000430 b1 b7 46 ef f0 f4 a3 68 35 ff 09 38 8d 6d c6 84 |..F....h5..8.m..| +00000440 d3 1c 4d 48 4e fc 4a c0 46 06 b1 a5 1c 74 a0 44 |..MHN.J.F....t.D| +00000450 69 68 20 33 df 70 60 69 57 c7 85 bd 3e ed 55 d0 |ih 3.p`iW...>.U.| +00000460 56 84 8f 19 03 5a 54 9a d5 3e 5d 37 98 40 4c f0 |V....ZT..>]7.@L.| +00000470 5e f1 26 e5 97 01 fc 0f 2a 09 e9 7a 51 69 c0 8e |^.&.....*..zQi..| +00000480 d4 25 80 f4 ca 91 f3 a7 5c 0c 96 ba ec a8 b5 ee |.%......\.......| +00000490 ab ec 05 cb 99 30 78 48 1b 78 bf 3d b9 f4 e8 33 |.....0xH.x.=...3| +000004a0 4d 45 d1 |ME.| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 54 0e c1 aa 95 |..........ET....| +00000010 fd c5 d2 8b a0 ae 40 a1 9a b8 87 39 17 53 f7 10 |......@....9.S..| +00000020 62 6f 55 18 42 cf 75 cb 05 de 32 28 c4 a0 f1 17 |boU.B.u...2(....| +00000030 f1 55 ae 2c 97 9e dd d2 d0 a7 6b c6 51 51 c6 0c |.U.,......k.QQ..| +00000040 81 3f 04 db 94 e6 68 f0 a1 80 10 39 06 99 25 e2 |.?....h....9..%.| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e e4 4f d5 b0 e7 a0 e2 13 69 75 7c |......O......iu|| +00000010 b1 84 93 be 99 ea 27 20 dd 08 89 6c e2 5a c6 bc |......' ...l.Z..| +00000020 b8 41 3d 17 03 03 00 13 cf 64 ad ad d9 84 87 36 |.A=......d.....6| +00000030 b9 ea b8 76 97 93 c1 03 44 c5 de |...v....D..| diff --git a/testdata/Server-TLSv13-ALPN b/testdata/Server-TLSv13-ALPN new file mode 100644 index 0000000..4ac9f1d --- /dev/null +++ b/testdata/Server-TLSv13-ALPN @@ -0,0 +1,104 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 f8 01 00 00 f4 03 03 65 16 78 26 cc |...........e.x&.| +00000010 27 bc 06 a0 4c f5 a3 e3 cd c2 f0 42 8c 61 0e e9 |'...L......B.a..| +00000020 8b 2b 52 ca a3 07 d6 58 96 4f f1 20 c3 7f e3 22 |.+R....X.O. ..."| +00000030 2c 27 94 91 ab cc e5 56 b1 31 fb eb ed b4 84 3e |,'.....V.1.....>| +00000040 ae 93 6e 6e a9 5c d2 47 6e 5b 0c 43 00 08 13 02 |..nn.\.Gn[.C....| +00000050 13 03 13 01 00 ff 01 00 00 a3 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 23 00 00 00 10 00 10 00 0e 06 70 |.....#.........p| +00000090 72 6f 74 6f 32 06 70 72 6f 74 6f 31 00 16 00 00 |roto2.proto1....| +000000a0 00 17 00 00 00 0d 00 1e 00 1c 04 03 05 03 06 03 |................| +000000b0 08 07 08 08 08 09 08 0a 08 0b 08 04 08 05 08 06 |................| +000000c0 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 2d 00 |.......+......-.| +000000d0 02 01 01 00 33 00 26 00 24 00 1d 00 20 76 1d a9 |....3.&.$... v..| +000000e0 43 43 a4 98 96 39 59 80 b0 7e 13 29 2a ea 53 e7 |CC...9Y..~.)*.S.| +000000f0 34 73 7a 10 0c f5 b0 92 b1 ab e2 26 17 |4sz........&.| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 c3 7f e3 22 |........... ..."| +00000030 2c 27 94 91 ab cc e5 56 b1 31 fb eb ed b4 84 3e |,'.....V.1.....>| +00000040 ae 93 6e 6e a9 5c d2 47 6e 5b 0c 43 13 02 00 00 |..nn.\.Gn[.C....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 24 1a dd ed 59 79 84 |.........$...Yy.| +00000090 d6 2e 17 81 75 e0 ee b3 98 8c 04 a3 ea 7c 46 f0 |....u........|F.| +000000a0 76 58 78 5a 37 99 a6 32 ad c6 5a 5a 3a ce 17 03 |vXxZ7..2..ZZ:...| +000000b0 03 02 6d 31 3b 00 34 ef 22 53 8a 31 f5 88 fb 3f |..m1;.4."S.1...?| +000000c0 e4 72 a8 20 65 ef be c6 78 84 4e 93 6a 8a fa 01 |.r. e...x.N.j...| +000000d0 10 b0 dd 0e 7d 8f 07 b8 da 29 4b 0a 5b 32 de cf |....}....)K.[2..| +000000e0 31 66 04 9c c6 d8 ab f0 07 f0 aa c3 b6 3e bf d4 |1f...........>..| +000000f0 0e 53 5d a4 4f aa 19 cf f4 3d 60 5b 19 ec e3 e2 |.S].O....=`[....| +00000100 71 1b 54 20 48 41 68 32 f5 28 06 e2 b7 29 89 c3 |q.T HAh2.(...)..| +00000110 d5 eb 07 f3 49 fb 0b f5 81 0a f2 65 70 24 a9 bc |....I......ep$..| +00000120 6b e7 70 58 7c f2 0a 91 3e f4 26 ea 1a 22 15 24 |k.pX|...>.&..".$| +00000130 5a 28 43 89 ac 1c 9b 39 1a 93 ec 32 5e ba cb f4 |Z(C....9...2^...| +00000140 57 a1 ca 03 8e 2e 0b 96 e7 7f e5 c5 30 22 ec fd |W...........0"..| +00000150 fe 6d 5f 01 e9 7a 5e b3 68 67 ee e9 23 d5 72 46 |.m_..z^.hg..#.rF| +00000160 77 05 b7 27 26 78 fe f9 cc c8 c2 fe a8 4e 93 04 |w..'&x.......N..| +00000170 56 bc 64 f1 55 ff 92 8d cb 81 46 cb 2d db 9b 41 |V.d.U.....F.-..A| +00000180 59 76 0c b5 65 7a e1 09 2f b6 3b d4 92 87 7c a6 |Yv..ez../.;...|.| +00000190 06 d7 37 aa db bc 07 12 a4 2e 38 be 97 83 80 80 |..7.......8.....| +000001a0 86 05 3a 4b 89 25 7f ef 5e 54 42 4a 89 99 f2 95 |..:K.%..^TBJ....| +000001b0 70 92 fb ac 2f ae b4 1f a0 5c 8c bf 45 2d 54 91 |p.../....\..E-T.| +000001c0 01 88 d5 9b a3 da af 67 1c ce 2e 9c 05 4c 68 d8 |.......g.....Lh.| +000001d0 b5 ee 98 06 a4 18 c8 c0 2d 7c bf 6e e2 eb 0d aa |........-|.n....| +000001e0 5b c6 f8 27 ad 3a 1a cf ac 35 f4 55 41 3c e0 8c |[..'.:...5.UA<..| +000001f0 3e 26 56 95 33 c4 f1 05 5a e7 9d 6e 33 90 d1 37 |>&V.3...Z..n3..7| +00000200 03 77 1f 76 1a 35 43 c1 a4 8c 5a 68 f5 bc 6c 7a |.w.v.5C...Zh..lz| +00000210 43 27 37 cd d9 55 76 69 bd 78 47 4e 2e 25 96 e6 |C'7..Uvi.xGN.%..| +00000220 8f 46 a3 70 ff b8 55 f2 66 46 2c 59 ad b9 b7 9a |.F.p..U.fF,Y....| +00000230 a1 dc a4 8b 2b fa 14 17 dd bf 46 c6 9a ef 50 54 |....+.....F...PT| +00000240 6e b8 d3 d7 13 d4 74 dd a5 ef 16 5f 2a fa ea 9b |n.....t...._*...| +00000250 59 7c 41 f8 6d 00 b5 01 9d c8 35 34 1e 1c 3f 64 |Y|A.m.....54..?d| +00000260 6a da 1e c4 64 4d e5 2e c7 28 f8 14 70 e6 72 4b |j...dM...(..p.rK| +00000270 ab 8a 22 5e 2b 5c aa b3 02 72 80 0c 80 11 cd 18 |.."^+\...r......| +00000280 b8 e1 8c 54 54 72 fd 68 71 66 ef bc 3e 03 ca a4 |...TTr.hqf..>...| +00000290 ae f4 ad 7b 29 08 ff 49 07 09 bc a1 cd e3 14 69 |...{)..I.......i| +000002a0 47 0e b0 c0 a8 89 3a 7b 71 e5 ba 32 36 e8 b5 0a |G.....:{q..26...| +000002b0 9e f6 9f 6f 12 89 f5 36 5c 96 28 e1 2d 6b b3 06 |...o...6\.(.-k..| +000002c0 d6 68 d3 99 f4 3d 27 b2 61 df 75 29 a0 24 8a ba |.h...='.a.u).$..| +000002d0 48 c4 5c 8c 36 21 3a 3e bf 92 4f 73 cc bd a1 b1 |H.\.6!:>..Os....| +000002e0 e7 00 c6 05 94 1e 8e 73 d3 52 aa 4d 02 40 3b 50 |.......s.R.M.@;P| +000002f0 5f f0 37 b6 61 43 9f 39 63 64 ad 37 12 97 2a 0c |_.7.aC.9cd.7..*.| +00000300 5e d9 20 e0 78 da f3 80 d8 29 ea b3 c5 52 55 cc |^. .x....)...RU.| +00000310 3d e0 91 b7 f8 f9 b0 29 5a b3 e9 65 04 31 5c 6c |=......)Z..e.1\l| +00000320 17 03 03 00 99 7d d6 2e 45 d8 e2 5b f8 c1 21 86 |.....}..E..[..!.| +00000330 8a 31 78 88 5d 61 ca 8c e5 23 07 d7 85 da cb 04 |.1x.]a...#......| +00000340 be c3 24 2b 27 42 bb a1 1e 4f 8b bb a2 5d 3b 1e |..$+'B...O...];.| +00000350 8a 64 f0 2a 2f 79 51 cc 1b 34 99 b6 33 75 31 c9 |.d.*/yQ..4..3u1.| +00000360 2e ea 70 ef 97 c4 bb 4c ec aa cf 11 6c 88 96 c4 |..p....L....l...| +00000370 9b b9 df b9 ef 10 bb 36 65 1f 8d 7e 22 e8 67 80 |.......6e..~".g.| +00000380 80 6e 2b 34 94 a4 5f b1 5d 88 11 2e bf 22 f9 fe |.n+4.._.]...."..| +00000390 be 76 e8 86 da 40 76 8c 9c 40 b6 b4 50 41 92 f5 |.v...@v..@..PA..| +000003a0 ce 8c bd 13 ea f0 6f 56 c2 1c c6 ed 08 33 71 36 |......oV.....3q6| +000003b0 a4 16 b6 ca bf ba 0e 65 b0 a2 2b 35 39 c7 17 03 |.......e..+59...| +000003c0 03 00 45 3b 7a 67 26 15 b4 9b 0f ba 61 5d d0 4c |..E;zg&.....a].L| +000003d0 60 27 29 03 fb da 90 ea 0c 64 22 24 ac 60 74 02 |`')......d"$.`t.| +000003e0 0e 99 e0 e1 55 35 da c2 75 19 82 0c fa f8 f0 09 |....U5..u.......| +000003f0 35 1e ca de d1 e1 17 8e d2 f7 fb f9 94 d1 03 fb |5...............| +00000400 b5 8a 32 f6 8f 02 5f fa 17 03 03 00 a3 21 96 04 |..2..._......!..| +00000410 46 58 eb 83 db 06 a7 ba f2 9e 5c 8a 35 0d 87 78 |FX........\.5..x| +00000420 29 17 4f 7a 95 21 1f b4 f3 fa bb de 93 b7 e7 1c |).Oz.!..........| +00000430 24 40 06 6b 9f b5 12 49 36 39 01 b9 17 cb 5c 99 |$@.k...I69....\.| +00000440 93 71 dc 8f c5 54 c0 dd ff 36 92 24 cd b3 ac 40 |.q...T...6.$...@| +00000450 c0 57 76 c3 2a a0 d3 07 af 00 4b df c5 f9 34 77 |.Wv.*.....K...4w| +00000460 ed cc 14 e1 50 bf 41 1e b5 39 5d 92 a8 e4 f5 a6 |....P.A..9].....| +00000470 b2 12 08 56 b6 43 cf dc eb a9 0e 9e 0e 8a 97 63 |...V.C.........c| +00000480 f8 92 a8 1b 74 f3 65 60 6a f3 f0 e7 54 fd d3 08 |....t.e`j...T...| +00000490 20 ce b4 16 ab c9 e1 7a 49 9c bf d6 3a a7 2b 5c | ......zI...:.+\| +000004a0 1b 1c a7 89 f3 6a 6d 3d 0a 07 16 b4 c1 c2 4b 2e |.....jm=......K.| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 90 6e 35 6d 4e |..........E.n5mN| +00000010 3b 8a 39 88 85 99 ac 05 fe 2c e3 a8 31 46 4e c2 |;.9......,..1FN.| +00000020 ea fe a2 ff 41 5b 64 77 bc 0c 6d 72 f7 c8 f3 07 |....A[dw..mr....| +00000030 ce 29 c2 6e 7c b5 88 13 35 f8 c0 90 98 ab 0f f9 |.).n|...5.......| +00000040 e2 8e 57 7e 23 7b 57 17 b6 13 11 9e 52 67 44 26 |..W~#{W.....RgD&| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 98 55 d6 42 d5 d4 01 c9 be 70 27 |......U.B.....p'| +00000010 9e 5a d5 7d fc 41 1e ec fe fd d5 0f 01 16 56 82 |.Z.}.A........V.| +00000020 13 13 c7 17 03 03 00 13 bb 71 20 65 f8 af 42 ea |.........q e..B.| +00000030 42 73 b8 24 d8 dc 79 7c 71 32 35 |Bs.$..y|q25| diff --git a/testdata/Server-TLSv13-ALPN-NoMatch b/testdata/Server-TLSv13-ALPN-NoMatch new file mode 100644 index 0000000..84c38ac --- /dev/null +++ b/testdata/Server-TLSv13-ALPN-NoMatch @@ -0,0 +1,104 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 f8 01 00 00 f4 03 03 b6 62 6e 7c 66 |............bn|f| +00000010 e0 73 6f bc ce d7 e3 5c 3a 39 c5 c9 5e f3 8f 76 |.so....\:9..^..v| +00000020 f0 ed 0e 30 fd 80 a0 79 74 fd d4 20 6b 6e f8 9d |...0...yt.. kn..| +00000030 30 1b ee fa 7c 5f 64 e0 da 81 26 7a 85 d2 f9 79 |0...|_d...&z...y| +00000040 e7 09 71 f8 2a 4c 41 74 02 a9 0c d2 00 08 13 02 |..q.*LAt........| +00000050 13 03 13 01 00 ff 01 00 00 a3 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 23 00 00 00 10 00 10 00 0e 06 70 |.....#.........p| +00000090 72 6f 74 6f 32 06 70 72 6f 74 6f 31 00 16 00 00 |roto2.proto1....| +000000a0 00 17 00 00 00 0d 00 1e 00 1c 04 03 05 03 06 03 |................| +000000b0 08 07 08 08 08 09 08 0a 08 0b 08 04 08 05 08 06 |................| +000000c0 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 2d 00 |.......+......-.| +000000d0 02 01 01 00 33 00 26 00 24 00 1d 00 20 8d 7d e2 |....3.&.$... .}.| +000000e0 55 da a7 1b 29 fc a4 d3 b0 62 51 43 d9 d6 cd 79 |U...)....bQC...y| +000000f0 a4 f9 3c f2 4e 03 87 1f 38 29 35 c3 36 |..<.N...8)5.6| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 6b 6e f8 9d |........... kn..| +00000030 30 1b ee fa 7c 5f 64 e0 da 81 26 7a 85 d2 f9 79 |0...|_d...&z...y| +00000040 e7 09 71 f8 2a 4c 41 74 02 a9 0c d2 13 02 00 00 |..q.*LAt........| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 4c a1 99 6c 86 b8 |..........L..l..| +00000090 1a 1a eb ec 89 37 bf 5a ae 87 3c 81 ce cf b2 49 |.....7.Z..<....I| +000000a0 66 17 03 03 02 6d 40 06 a4 17 6a 48 78 76 a5 63 |f....m@...jHxv.c| +000000b0 82 c4 5b e9 6e dc 54 de 95 12 15 a7 3d 83 94 4d |..[.n.T.....=..M| +000000c0 57 26 82 ea f3 d5 e1 4a d7 6e dc 27 f6 02 1c 16 |W&.....J.n.'....| +000000d0 21 68 c5 32 ff 02 e9 b5 44 2c f4 e9 4d b2 9d 3d |!h.2....D,..M..=| +000000e0 34 e1 6a db 73 61 eb 5c 00 e9 e8 00 bc 82 2a 17 |4.j.sa.\......*.| +000000f0 25 f7 c4 09 2f 6c 3e c6 09 5a 33 61 49 df 4d 47 |%.../l>..Z3aI.MG| +00000100 95 16 c5 6e a4 b3 94 44 4c 8b 5d d6 2c c9 26 a1 |...n...DL.].,.&.| +00000110 01 e8 cc 20 9c 19 d3 3e eb d5 7c 97 4e 1e af 7b |... ...>..|.N..{| +00000120 68 0e 7b eb bb 91 81 60 a2 c8 37 96 84 f2 cd fe |h.{....`..7.....| +00000130 7f 22 7f 7f 22 6a c7 23 68 79 48 ae 35 47 27 4b |.".."j.#hyH.5G'K| +00000140 c0 ce e7 9c 7f 23 fd 44 e1 a5 da 9f 61 94 46 1f |.....#.D....a.F.| +00000150 6c ea b9 50 53 c2 35 70 d4 77 d7 2d d5 54 fb d7 |l..PS.5p.w.-.T..| +00000160 90 4b f9 bb 98 67 cc 5b 97 56 ef ff 5d c9 08 9c |.K...g.[.V..]...| +00000170 26 cd cf ba 51 6f a5 f4 20 34 83 85 ef 71 98 1b |&...Qo.. 4...q..| +00000180 dd 41 f9 51 f3 59 77 d7 b5 f5 98 40 fd 78 ef b6 |.A.Q.Yw....@.x..| +00000190 47 8c 27 e3 c8 ae 9d c3 47 92 dc 97 23 82 2f 80 |G.'.....G...#./.| +000001a0 2f 0f 17 17 17 f1 49 ec c3 1c 73 02 38 b3 a6 6d |/.....I...s.8..m| +000001b0 89 5f 55 30 ea 10 5d fe a7 6e 88 fb cc fd 9a 01 |._U0..]..n......| +000001c0 10 f8 4e 6a 7f ba 62 ab 15 85 7a 8d fc de 92 f7 |..Nj..b...z.....| +000001d0 91 9a d8 dc f3 de 3e 36 19 45 44 8c d7 03 67 c8 |......>6.ED...g.| +000001e0 14 24 09 33 1b f3 2f 2d a6 a5 9a 6c e2 04 da 4b |.$.3../-...l...K| +000001f0 18 13 57 12 83 86 46 8f af 35 f4 0a 1b 09 1c 25 |..W...F..5.....%| +00000200 bb 1e 22 fb 71 48 3f 34 47 d4 52 ec 3c 81 dd 5b |..".qH?4G.R.<..[| +00000210 0d a0 b4 74 a7 60 5f 60 14 ee d3 08 54 92 45 42 |...t.`_`....T.EB| +00000220 52 82 8d 54 84 ee c0 1d a7 a9 b4 a0 13 82 75 cd |R..T..........u.| +00000230 f6 a7 bc aa 0a e9 0a c5 36 ea 6f c1 8b 56 22 81 |........6.o..V".| +00000240 0a 8e 81 3d bf 34 f4 cc 80 02 d2 01 b5 2c b8 6b |...=.4.......,.k| +00000250 4b e8 06 06 cf e1 69 50 59 ea b2 a5 b0 06 96 02 |K.....iPY.......| +00000260 0e 45 8c 8c 46 ae 24 a0 80 92 75 46 7b cd 9e de |.E..F.$...uF{...| +00000270 a2 a0 d5 f4 68 ef 34 82 37 08 64 62 e8 eb 41 a4 |....h.4.7.db..A.| +00000280 32 a8 d4 c3 ee 16 67 2c 47 08 ef 23 c7 27 4a 21 |2.....g,G..#.'J!| +00000290 5c 66 36 93 6c 8c 8c fd 04 9a d9 84 e0 be 45 50 |\f6.l.........EP| +000002a0 0c 42 a2 d3 ba 5a 92 14 86 75 d2 33 6f 8b 69 a3 |.B...Z...u.3o.i.| +000002b0 b2 da 7e 19 e0 a6 0d 8e cb 21 bf f6 fa 5c 41 de |..~......!...\A.| +000002c0 d8 56 f7 d0 53 66 54 d2 5c e7 b5 20 af 0d 01 5a |.V..SfT.\.. ...Z| +000002d0 09 d0 ed 7f f1 1d d7 32 55 a8 c2 5a ba d8 e1 46 |.......2U..Z...F| +000002e0 fb 32 39 8b 8c 94 73 44 85 64 d6 c7 9f 6a d5 4e |.29...sD.d...j.N| +000002f0 fc 16 a2 10 cb 06 43 10 da a5 b2 71 e7 04 a6 3f |......C....q...?| +00000300 83 79 2c cb 2e 40 ab c8 53 18 11 95 3a f5 b9 b7 |.y,..@..S...:...| +00000310 df 99 d7 17 03 03 00 99 c0 29 f3 15 df b1 dc 36 |.........).....6| +00000320 a9 78 21 ed ba 5a 85 11 51 23 3f e9 b4 b3 bb b3 |.x!..Z..Q#?.....| +00000330 27 92 8e 9c a0 f8 b3 38 35 ef 9f bf 2b 31 82 cd |'......85...+1..| +00000340 de 3a 0c 0c b1 09 65 77 00 4c af 8c fe ff 2c 75 |.:....ew.L....,u| +00000350 62 48 13 96 63 5c 73 00 13 1f ef 27 f5 b2 4c fe |bH..c\s....'..L.| +00000360 8e 2a ff ab 94 68 5e 7c 02 19 d5 f3 68 07 b8 a1 |.*...h^|....h...| +00000370 2a 48 fc 4e ad b9 1c 95 13 d9 19 9d 47 7f 07 4d |*H.N........G..M| +00000380 b8 75 79 e7 da 6f 46 3e eb 27 c4 6f da ab bb fd |.uy..oF>.'.o....| +00000390 0a 04 08 15 c4 45 c4 1a 09 db 48 ca 3d 8e 63 af |.....E....H.=.c.| +000003a0 d8 0d 6b a2 04 22 eb 6d ed bf b6 45 d2 c8 b9 ee |..k..".m...E....| +000003b0 02 17 03 03 00 45 5c ef 9a 1c 12 95 25 da 79 21 |.....E\.....%.y!| +000003c0 6c 74 a2 64 cf bf aa cd 53 a4 43 48 d7 f3 b2 35 |lt.d....S.CH...5| +000003d0 da f2 0e d4 1c 14 23 63 8f 7a e5 5a 98 46 71 ad |......#c.z.Z.Fq.| +000003e0 19 a2 8f 22 b1 c5 93 89 0b 7f cd 38 09 9a ea f1 |...".......8....| +000003f0 51 6b 46 0f 8b 00 8d c2 1a 97 de 17 03 03 00 a3 |QkF.............| +00000400 32 88 68 5e f9 90 07 5d 4d 04 3d 1d 26 ac a2 1b |2.h^...]M.=.&...| +00000410 54 d0 37 7c 9f e7 8f ee c5 a6 bc b6 a9 78 08 40 |T.7|.........x.@| +00000420 f3 07 2f f5 b4 1f 08 c6 af 2d 4f 2e 87 4e 5f 95 |../......-O..N_.| +00000430 c9 b7 42 3a b5 ef ff 43 41 05 7c 7d 64 3f 56 ec |..B:...CA.|}d?V.| +00000440 ee b6 04 61 0a 56 79 77 5f 1c be e2 24 a2 cb 81 |...a.Vyw_...$...| +00000450 96 6f 95 6e a7 5a 2c 9e a0 e6 30 e5 f7 02 ff 10 |.o.n.Z,...0.....| +00000460 33 28 6e d7 ec 34 98 bf 26 2e 56 1d 99 e9 50 94 |3(n..4..&.V...P.| +00000470 71 be 0e 05 d3 86 95 db b9 4f 42 80 8a 12 2e ff |q........OB.....| +00000480 b6 be 81 f2 6f 4c 6a 00 a0 b8 53 c7 d7 fa 94 c6 |....oLj...S.....| +00000490 b2 b5 80 4b 3e e9 88 42 36 52 23 ca e4 48 b6 03 |...K>..B6R#..H..| +000004a0 13 7d 69 |.}i| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 1d 07 22 a7 34 |..........E..".4| +00000010 0d a7 a0 e5 8c ed 58 d4 5c 39 d2 96 43 73 eb 8c |......X.\9..Cs..| +00000020 5f c1 0c 90 67 6f ae b1 ae ee 6c dd cd 47 31 83 |_...go....l..G1.| +00000030 be b1 f2 50 ec 31 54 ba 21 82 c4 bd aa 51 0a 7a |...P.1T.!....Q.z| +00000040 0d 25 18 68 00 18 8b 51 c3 ca ae b1 fa 20 e0 0b |.%.h...Q..... ..| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 1a 08 af cf 27 80 23 d8 94 0a fe |.........'.#....| +00000010 44 1c 78 f2 76 ac 9b 90 db 5c b6 8d c0 73 36 62 |D.x.v....\...s6b| +00000020 82 5d 8a 17 03 03 00 13 1a 2b 70 c9 14 dc c8 df |.].......+p.....| +00000030 e2 01 4e 69 e8 d7 13 0c 94 96 75 |..Ni......u| diff --git a/testdata/Server-TLSv13-CHACHA20-SHA256 b/testdata/Server-TLSv13-CHACHA20-SHA256 new file mode 100644 index 0000000..760c597 --- /dev/null +++ b/testdata/Server-TLSv13-CHACHA20-SHA256 @@ -0,0 +1,100 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 dc 01 00 00 d8 03 03 7f d6 02 2f 2d |............../-| +00000010 ed b1 3c f2 c2 48 5e d5 f4 57 c9 8c ba 81 36 52 |..<..H^..W....6R| +00000020 85 3e 79 de 79 cc 36 6a f9 88 89 20 db e1 89 a5 |.>y.y.6j... ....| +00000030 26 4c 2a 2d 0f 33 e2 3f 57 05 cc 74 cd 4c 96 be |&L*-.3.?W..t.L..| +00000040 91 94 ef 54 1c 1f 01 ef d4 36 75 2f 00 04 13 03 |...T.....6u/....| +00000050 00 ff 01 00 00 8b 00 00 00 0e 00 0c 00 00 09 31 |...............1| +00000060 32 37 2e 30 2e 30 2e 31 00 0b 00 04 03 00 01 02 |27.0.0.1........| +00000070 00 0a 00 0c 00 0a 00 1d 00 17 00 1e 00 19 00 18 |................| +00000080 00 16 00 00 00 17 00 00 00 0d 00 1e 00 1c 04 03 |................| +00000090 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b 08 04 |................| +000000a0 08 05 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 |...........+....| +000000b0 04 00 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 |..-.....3.&.$...| +000000c0 20 30 20 a8 d0 3d ea df 38 aa 65 6f dd c8 25 13 | 0 ..=..8.eo..%.| +000000d0 03 c4 a2 24 d4 a8 0d 1a a6 65 32 75 83 ef 71 70 |...$.....e2u..qp| +000000e0 30 |0| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 db e1 89 a5 |........... ....| +00000030 26 4c 2a 2d 0f 33 e2 3f 57 05 cc 74 cd 4c 96 be |&L*-.3.?W..t.L..| +00000040 91 94 ef 54 1c 1f 01 ef d4 36 75 2f 13 03 00 00 |...T.....6u/....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 f4 9a 6e ea 99 81 |............n...| +00000090 59 33 26 a6 6a 40 1d a9 59 67 31 35 09 b0 ed 15 |Y3&.j@..Yg15....| +000000a0 83 17 03 03 02 6d 56 59 69 c8 6d 45 c6 2f 58 3d |.....mVYi.mE./X=| +000000b0 db 87 dd 56 0f 2d d9 21 1b 97 94 77 f2 72 28 0d |...V.-.!...w.r(.| +000000c0 48 04 79 83 7e 2e a1 c9 30 56 d7 9c c8 0a 37 65 |H.y.~...0V....7e| +000000d0 b6 6b 31 ae 9a 5f ff 13 15 94 99 7c 92 e1 32 80 |.k1.._.....|..2.| +000000e0 28 3c ab b1 cc fe ba 92 3c 03 bb fd b8 55 f5 f2 |(<......<....U..| +000000f0 ba be 28 90 c5 7e 07 48 d5 45 b6 84 80 02 2d cd |..(..~.H.E....-.| +00000100 14 27 81 b6 4e b4 7f 5f 78 a3 26 c2 0c af 12 d6 |.'..N.._x.&.....| +00000110 e9 14 22 c8 ee 2e 5e fc c3 ca 8f 01 9b 37 6a b0 |.."...^......7j.| +00000120 f8 53 b2 8e 31 d7 1f 34 f6 35 ed 81 e0 f7 6f e1 |.S..1..4.5....o.| +00000130 90 cf 1a 4f 44 50 d5 cd 96 c3 4a 22 7a 54 28 bd |...ODP....J"zT(.| +00000140 88 56 5c 77 67 eb a6 78 5c 8b 82 39 03 13 55 c3 |.V\wg..x\..9..U.| +00000150 20 68 45 26 7a 96 fe 1c f9 33 14 1e 1d 8a 5f 51 | hE&z....3...._Q| +00000160 c3 2f 17 91 ba 37 63 49 e1 65 89 bf e8 a1 27 5f |./...7cI.e....'_| +00000170 fd 59 46 80 f7 9b 45 89 50 ab cd 9b aa b4 45 04 |.YF...E.P.....E.| +00000180 b5 1b 85 88 1c 59 ba b2 d6 50 0b fd 5c d9 59 83 |.....Y...P..\.Y.| +00000190 7a 6c 9b ad 27 33 a0 49 74 eb a6 cd a8 e8 4b d7 |zl..'3.It.....K.| +000001a0 71 ef 63 64 ff 24 a7 09 2e b7 f6 6f 9d 9f 75 84 |q.cd.$.....o..u.| +000001b0 97 0a 76 bf 72 ed ff e8 1a 49 ca 0b 0d f5 2c fb |..v.r....I....,.| +000001c0 69 c2 5c fe db 58 0a a1 9c d4 47 6a 8f a6 bd ec |i.\..X....Gj....| +000001d0 32 fb 40 6a 71 9d 19 37 e6 fd d4 3d fa 5b f3 53 |2.@jq..7...=.[.S| +000001e0 43 df d5 fa 53 29 40 70 77 a6 9e f7 03 7d 08 8b |C...S)@pw....}..| +000001f0 5a 71 73 e5 af 45 58 56 9f 56 ad 73 aa d2 b3 7c |Zqs..EXV.V.s...|| +00000200 92 99 c8 04 16 bf ca f2 81 2e 29 c3 79 21 f1 11 |..........).y!..| +00000210 92 f4 1d 34 24 73 e3 82 28 5a 31 70 45 da 8d 94 |...4$s..(Z1pE...| +00000220 38 75 31 bc f9 e5 2b 11 7e fd bc 19 fe 65 ad 53 |8u1...+.~....e.S| +00000230 e5 e6 17 b8 69 ea 54 fd 92 a9 41 7a 8c 7f da 4f |....i.T...Az...O| +00000240 ba f1 9f a2 e2 5b e7 7a 23 17 9e 29 95 7e 72 79 |.....[.z#..).~ry| +00000250 22 67 c5 68 0a 4d fb e9 64 61 3a 53 18 e7 dd 7d |"g.h.M..da:S...}| +00000260 5b 16 b9 fa 69 95 82 eb ee 1a 30 97 93 97 fc ee |[...i.....0.....| +00000270 9e 2b 22 64 08 7d 25 05 77 5e d7 bd 0e c3 9f a4 |.+"d.}%.w^......| +00000280 f4 bf 77 3d 56 84 c8 a1 10 1c e0 5b da 39 3d 2d |..w=V......[.9=-| +00000290 92 80 9a 07 b2 29 c5 ab e0 e1 1c ad ba 3e fa 4e |.....).......>.N| +000002a0 65 4f 31 63 de 33 6a 5c af e0 88 70 fc 6e 6a a2 |eO1c.3j\...p.nj.| +000002b0 ca da 2f 14 1d 4f 8c 7d 8d da 36 9b ea 7f 7e 79 |../..O.}..6...~y| +000002c0 9c dc 4a 3b 69 d9 50 31 bb f2 f8 8a 7f 6e 73 bc |..J;i.P1.....ns.| +000002d0 41 7c 3a 86 10 91 9b 3a 8e 3e c8 bc 6a c4 4d f2 |A|:....:.>..j.M.| +000002e0 45 87 49 49 d2 2f aa 4d d0 6f e9 1e a4 d6 06 63 |E.II./.M.o.....c| +000002f0 ac 90 ce 9a cb f7 97 55 2b e8 8c 8d 55 f6 32 26 |.......U+...U.2&| +00000300 55 d4 60 0e c0 0b da 0e ac c9 4c c3 95 03 54 d7 |U.`.......L...T.| +00000310 99 ec e1 17 03 03 00 99 c4 65 5e 67 e3 a1 98 d6 |.........e^g....| +00000320 f8 34 15 ed a9 55 80 c7 c0 e7 ca 67 f1 cb 58 e2 |.4...U.....g..X.| +00000330 6e 4d d4 9e 18 c3 37 c2 ff 72 bc cb 8e 6a 97 e2 |nM....7..r...j..| +00000340 b5 83 75 34 2a 75 9f 7f 8e 1e 47 e6 cd 53 85 c5 |..u4*u....G..S..| +00000350 69 b6 c0 46 9f 46 a8 09 6a 21 d5 af 36 d2 d0 ba |i..F.F..j!..6...| +00000360 65 0f da a5 af eb 3a 0c 8b 85 00 2a dd 11 71 28 |e.....:....*..q(| +00000370 5b 71 a9 df 69 20 8a d9 27 1e 4f 02 89 03 6f 27 |[q..i ..'.O...o'| +00000380 20 e1 37 17 69 c2 62 3e 46 39 43 2d 64 43 f3 cc | .7.i.b>F9C-dC..| +00000390 14 5f a0 73 06 bf 42 cb da 79 21 28 b1 a1 c4 de |._.s..B..y!(....| +000003a0 39 98 83 ad 3a d6 05 fd 58 b0 2c 97 bf 48 74 0e |9...:...X.,..Ht.| +000003b0 25 17 03 03 00 35 69 10 76 25 e3 9e 63 10 76 73 |%....5i.v%..c.vs| +000003c0 f5 fc 90 2c 95 e5 dc 29 79 a0 ed 0a 3a 72 58 38 |...,...)y...:rX8| +000003d0 bf b9 17 af 77 9f 05 92 af d4 a7 c7 d6 56 77 01 |....w........Vw.| +000003e0 da 94 31 d2 be be 95 e1 b1 95 75 17 03 03 00 93 |..1.......u.....| +000003f0 f9 fa a9 41 89 d3 e8 3b cb 11 63 76 56 fe 28 86 |...A...;..cvV.(.| +00000400 87 b0 0f d0 4d a8 fb 22 e9 89 f6 40 8a db 51 be |....M.."...@..Q.| +00000410 2c 9f 9c 39 f4 43 bc 1f b0 32 9b 9c 8e a6 6e e1 |,..9.C...2....n.| +00000420 f3 f7 f0 91 ed 56 6f 2d be 37 6b 3b ed f7 5b a6 |.....Vo-.7k;..[.| +00000430 d3 14 0a f9 58 b8 7b 37 fc 15 97 57 79 16 8c 0c |....X.{7...Wy...| +00000440 d2 93 7a 58 b8 48 51 f7 58 82 7d a0 4b e1 41 f6 |..zX.HQ.X.}.K.A.| +00000450 e1 44 12 1e ea 80 f3 b6 d0 72 ec 5c 84 01 6a b3 |.D.......r.\..j.| +00000460 f7 83 b5 47 22 0b e7 03 60 09 a7 23 23 20 5e 6b |...G"...`..## ^k| +00000470 f6 25 34 64 11 ad 46 90 db cb 13 f5 10 0a 75 e8 |.%4d..F.......u.| +00000480 3e c8 03 |>..| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 35 27 f0 39 68 fc |..........5'.9h.| +00000010 9f 6c a4 fd a7 cf 1f 25 67 54 3c e6 9e 7c 99 5a |.l.....%gT<..|.Z| +00000020 e9 b7 3c 0c f2 dc b6 22 36 0d 43 a3 ee 76 4b a9 |..<...."6.C..vK.| +00000030 6a cb b8 f6 8a c8 58 91 79 19 95 7c 83 a0 87 57 |j.....X.y..|...W| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e d5 8a ef 04 f9 6c 27 62 0a f1 a4 |..........l'b...| +00000010 4b 7f e4 e4 ff 53 f3 61 20 b9 56 96 30 f9 06 c9 |K....S.a .V.0...| +00000020 cc 9c ed 17 03 03 00 13 4a 83 cd 86 98 97 20 45 |........J..... E| +00000030 ab 2f c5 72 15 f6 ed a8 8c 8c 0e |./.r.......| diff --git a/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven b/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven new file mode 100644 index 0000000..c26e3c2 --- /dev/null +++ b/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven @@ -0,0 +1,184 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 e0 01 00 00 dc 03 03 93 c7 00 24 7c |..............$|| +00000010 18 0f ec 3a 26 e2 8c 6b 54 d4 34 c0 5d 1e 0d 37 |...:&..kT.4.]..7| +00000020 d1 cd 67 7a 48 59 0a 11 c3 bf d6 20 f3 37 6c 43 |..gzHY..... .7lC| +00000030 00 91 4d e9 b4 27 39 77 6e 75 4b bf 41 68 b8 0c |..M..'9wnuK.Ah..| +00000040 31 53 bc 48 55 a6 27 71 09 30 01 36 00 08 13 02 |1S.HU.'q.0.6....| +00000050 13 03 13 01 00 ff 01 00 00 8b 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 16 00 00 00 17 00 00 00 0d 00 1e |................| +00000090 00 1c 04 03 05 03 06 03 08 07 08 08 08 09 08 0a |................| +000000a0 08 0b 08 04 08 05 08 06 04 01 05 01 06 01 00 2b |...............+| +000000b0 00 03 02 03 04 00 2d 00 02 01 01 00 33 00 26 00 |......-.....3.&.| +000000c0 24 00 1d 00 20 95 28 2e 63 cf 81 4b cd 4b 64 73 |$... .(.c..K.Kds| +000000d0 19 19 82 2d b7 f5 54 08 4d f4 72 70 21 3e a0 d6 |...-..T.M.rp!>..| +000000e0 7d 96 92 ac 63 |}...c| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 f3 37 6c 43 |........... .7lC| +00000030 00 91 4d e9 b4 27 39 77 6e 75 4b bf 41 68 b8 0c |..M..'9wnuK.Ah..| +00000040 31 53 bc 48 55 a6 27 71 09 30 01 36 13 02 00 00 |1S.HU.'q.0.6....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 db 3b a3 78 48 c0 |...........;.xH.| +00000090 4e d1 ad 99 4d 73 e3 84 27 ff 42 de f6 c9 c9 b5 |N...Ms..'.B.....| +000000a0 49 17 03 03 00 3c 77 b8 16 13 1d cb 0a 6b 3e 41 |I....A| +000000b0 24 8a 03 b9 88 48 6f b3 d7 61 66 f4 33 67 86 8c |$....Ho..af.3g..| +000000c0 2f ad 4f f1 40 ad 63 10 35 ee f7 15 d2 0e e9 31 |/.O.@.c.5......1| +000000d0 b8 d9 b2 32 28 05 1e 73 3d bd a2 12 26 32 5a bc |...2(..s=...&2Z.| +000000e0 0c ea 17 03 03 02 6d e0 8f 50 e0 54 85 74 f0 b8 |......m..P.T.t..| +000000f0 31 25 df 87 fd 8b 5b 52 d4 fe b0 8e 61 44 b5 28 |1%....[R....aD.(| +00000100 1d 0e 8a 07 56 bb 77 5d 60 d8 c1 a0 95 ff 5c e9 |....V.w]`.....\.| +00000110 a2 ca 17 20 3d b1 b1 8e 76 31 2f 0d c9 e3 ee b5 |... =...v1/.....| +00000120 e6 fe fd dc 2e b9 e5 44 77 d3 fe 7a d5 9f 0e ab |.......Dw..z....| +00000130 75 b0 ff 2a 7b aa 64 75 62 ec 15 bd 2e 0c a4 54 |u..*{.dub......T| +00000140 e6 12 cd 31 13 83 6c 98 e8 00 b3 b6 c6 7b cb 87 |...1..l......{..| +00000150 82 3a f9 15 50 6b 4d c2 5b 6a 91 42 ce e8 25 14 |.:..PkM.[j.B..%.| +00000160 0d 5d 17 04 c3 cf d6 23 ad 9e 0e 3b 1c aa 2e 88 |.].....#...;....| +00000170 02 dc 63 12 3e 33 29 3d f8 b2 ec f2 15 d6 13 d3 |..c.>3)=........| +00000180 c9 88 a1 ad a9 27 fd 7c c4 5e f9 73 eb 45 a7 5f |.....'.|.^.s.E._| +00000190 a1 4f be d7 0f e9 d0 da 30 67 3b 9d 63 2d ef b4 |.O......0g;.c-..| +000001a0 89 3e de 19 20 af 62 52 7c e7 80 96 93 6e ca bf |.>.. .bR|....n..| +000001b0 c3 48 e2 c5 23 8d cf b0 a2 e5 dd a8 51 21 6f 99 |.H..#.......Q!o.| +000001c0 24 03 c8 d8 e0 dd e6 d4 ef 7f 74 17 85 14 ca 81 |$.........t.....| +000001d0 91 4e c6 5d 80 86 63 6f 97 55 ab 80 1c ab 63 c8 |.N.]..co.U....c.| +000001e0 01 ca df 11 28 68 b8 75 06 22 33 ba 9c b8 14 a1 |....(h.u."3.....| +000001f0 7a 1d cb 24 7c 90 44 b1 ed 33 e7 9d 80 6d ce b7 |z..$|.D..3...m..| +00000200 0a 74 bd 29 53 a2 bb 06 67 4d 4d 53 cc 1c 66 76 |.t.)S...gMMS..fv| +00000210 a9 4f 86 be 7a da ba 35 23 b6 6f c4 7d 02 2a 9f |.O..z..5#.o.}.*.| +00000220 2d 81 3d e2 16 3d 4b 78 ba cb f3 91 c7 39 9c 3d |-.=..=Kx.....9.=| +00000230 2e 4d a0 f6 6d 3d ba 15 bd cf 60 3b 8a 4a 18 9f |.M..m=....`;.J..| +00000240 87 e4 ee 1a ac f2 b2 bc a6 9f af b2 9e ca be 60 |...............`| +00000250 3f 36 54 84 d0 cd 31 d8 60 3b 4e 7e 6c 80 d5 25 |?6T...1.`;N~l..%| +00000260 1c 1b 1e fb 0f e7 ad b0 30 0d 13 be 27 f8 c3 6a |........0...'..j| +00000270 93 d3 f0 55 cb e9 73 6b e9 72 aa bb ea 24 05 f7 |...U..sk.r...$..| +00000280 c7 51 d5 66 77 32 53 82 fb 6c 2e fc fb 83 2d f4 |.Q.fw2S..l....-.| +00000290 5d a1 cc 75 fa d1 ee c2 5b 5d 48 e5 6d 69 87 54 |]..u....[]H.mi.T| +000002a0 1c b1 03 bd 06 66 7b 6d b7 46 33 56 b9 1c 62 a1 |.....f{m.F3V..b.| +000002b0 fd d3 61 50 42 ef 66 f8 97 26 5b 17 82 52 89 09 |..aPB.f..&[..R..| +000002c0 48 b8 68 50 63 d6 d4 83 7e 1f 5d 9d ad 69 2a 3c |H.hPc...~.]..i*<| +000002d0 d6 ab b7 33 1b 07 bc 44 92 d7 23 07 00 64 3f 64 |...3...D..#..d?d| +000002e0 98 e9 52 11 69 fc 21 04 65 1d f8 0d 06 dd 54 14 |..R.i.!.e.....T.| +000002f0 93 ae ca 30 06 db 4b 70 00 0b 3a cb 11 19 1a c6 |...0..Kp..:.....| +00000300 a7 f0 1c 9f 31 f9 30 ec 5f 1c 4e 74 d0 1c 9b 49 |....1.0._.Nt...I| +00000310 ab 42 c3 72 7d 11 e0 07 3d 3f 51 7a 99 07 32 0f |.B.r}...=?Qz..2.| +00000320 d6 b7 b7 ac 83 2e 3b c4 ce 81 1d 1a e0 e8 ba d7 |......;.........| +00000330 12 d1 14 a9 62 c3 58 30 0d ac 30 6c 7d 06 be 96 |....b.X0..0l}...| +00000340 e1 e4 14 6b 56 16 17 84 52 32 4c aa ec 83 1d 6c |...kV...R2L....l| +00000350 d1 b0 1f 63 17 03 03 00 99 c9 7d 79 9c 0f 73 20 |...c......}y..s | +00000360 0b 93 09 a6 6e 46 fd 56 12 08 0a 8c 1b 9c b0 9f |....nF.V........| +00000370 0a d4 d9 33 e9 22 0e 90 d4 7c b3 4d 5a 95 e9 90 |...3."...|.MZ...| +00000380 14 69 e5 d2 ad 2e b4 f1 a0 98 7d 24 fa b2 a4 2a |.i........}$...*| +00000390 f8 af 6a e3 9d a7 64 cc ea 51 73 d1 40 23 98 df |..j...d..Qs.@#..| +000003a0 9f cc 70 bb c5 3b 8b fc 95 6f ca 04 6d 7d cd 77 |..p..;...o..m}.w| +000003b0 ba b3 d3 e1 50 38 9c 16 60 d7 2b be 82 b3 a5 70 |....P8..`.+....p| +000003c0 76 c4 fb ba 7e 78 5c 97 a3 47 fe 23 80 b7 d4 f1 |v...~x\..G.#....| +000003d0 1f a6 dc 08 68 b4 d7 bb 09 6f 45 37 e5 1d 2b 2f |....h....oE7..+/| +000003e0 e1 57 84 4e 95 c1 bc b4 14 a4 45 04 69 ae 79 01 |.W.N......E.i.y.| +000003f0 07 42 17 03 03 00 45 00 a8 d1 03 76 56 7f b3 7e |.B....E....vV..~| +00000400 ec 82 94 7f b7 66 8a 01 c3 ab 50 13 20 f3 ea 3e |.....f....P. ..>| +00000410 27 56 e7 49 14 6a d0 2e f4 04 d1 54 c0 b1 4d 5e |'V.I.j.....T..M^| +00000420 2a a5 f1 89 55 f6 b0 ee e2 15 26 13 ec a4 4c ca |*...U.....&...L.| +00000430 ef 1a c7 ff 3e 5e f3 88 15 57 47 43 |....>^...WGC| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 02 1e cd 5f bd ff 6b |............_..k| +00000010 f7 c8 70 4b cc c8 84 44 c2 d0 7d ea 39 78 5a 6f |..pK...D..}.9xZo| +00000020 7a 72 0e 55 d0 76 7c 48 d8 cc 32 b4 08 bf f7 a8 |zr.U.v|H..2.....| +00000030 32 99 4a c5 83 79 4d 39 ea 0d 63 33 da 89 57 30 |2.J..yM9..c3..W0| +00000040 ab 31 95 90 f4 8d 4a 63 34 13 c6 4e d6 80 37 b8 |.1....Jc4..N..7.| +00000050 9b 28 8b 8f e5 b5 2a 16 e1 82 63 6f 1b ca 3a b4 |.(....*...co..:.| +00000060 b3 0b 36 56 09 d8 1e ab b4 fb aa 07 df 76 d3 b2 |..6V.........v..| +00000070 07 8d 56 38 f9 15 c2 1b c9 97 50 6a c4 23 6f 39 |..V8......Pj.#o9| +00000080 7b b3 69 b5 c2 6e 29 b4 14 17 9c 3d b7 c5 5f 12 |{.i..n)....=.._.| +00000090 25 73 89 22 99 1f 77 9d 9c a4 f6 fc 0a 8b af 24 |%s."..w........$| +000000a0 9b fc c1 b3 c3 cd 88 55 b5 81 8a 6e 73 83 cc da |.......U...ns...| +000000b0 fa 64 fe 3b 20 31 75 9a ce 35 ad a6 4b 3f 6f 49 |.d.; 1u..5..K?oI| +000000c0 e0 ae 21 23 ac c5 86 bb ec 91 13 37 76 d9 06 40 |..!#.......7v..@| +000000d0 ce 32 84 41 3e c0 5c 6d 93 0c 2f af ac af 5e ef |.2.A>.\m../...^.| +000000e0 ab 65 fc cc 00 a4 11 94 27 0e 11 ac 2a 00 dc c3 |.e......'...*...| +000000f0 dc fc 68 ff b3 32 bf 75 ff d0 35 e1 a3 44 68 6e |..h..2.u..5..Dhn| +00000100 21 39 ab 68 93 11 50 3b 30 1c 32 2a 03 9a 2a 9c |!9.h..P;0.2*..*.| +00000110 ff 2a bf 10 b3 ae 28 33 43 3c b2 04 a3 5d 49 21 |.*....(3C<...]I!| +00000120 db c4 4e 90 2f bd 20 03 d1 99 78 48 1a fd f2 a8 |..N./. ...xH....| +00000130 1b 06 1b 4e d1 5f 7c ed ba 04 3c ad 9c 20 4f 5e |...N._|...<.. O^| +00000140 37 5b 75 8e fc 40 2a 09 1c 78 f7 b2 15 ad a6 24 |7[u..@*..x.....$| +00000150 29 98 74 42 e2 80 28 80 0b 78 22 72 75 e3 33 75 |).tB..(..x"ru.3u| +00000160 a0 57 37 00 f1 69 bd ab 22 74 2d 6c 4a 1e 46 5b |.W7..i.."t-lJ.F[| +00000170 64 e0 47 d7 77 85 18 6b 10 67 6f 83 eb 98 e4 31 |d.G.w..k.go....1| +00000180 00 35 1d c3 1f d9 7a 86 27 27 3f 2d 0d cb 53 8f |.5....z.''?-..S.| +00000190 f4 52 e7 5a ba 02 67 44 a8 19 71 1a 7b f2 b1 80 |.R.Z..gD..q.{...| +000001a0 c9 82 d0 4b 63 0e d0 e0 bd a1 cc 5e 55 80 9a 51 |...Kc......^U..Q| +000001b0 21 bf 32 ce 8f 74 ea ed a6 cd ee b4 8f 3b 8f 6c |!.2..t.......;.l| +000001c0 41 5e 3d 1f 00 0b d4 a4 09 9a 8e c3 3f b1 b7 4c |A^=.........?..L| +000001d0 7b 6b 57 3f 94 3d ed d7 60 5c d4 04 b0 7b 62 06 |{kW?.=..`\...{b.| +000001e0 f7 06 f6 f0 f8 44 80 55 97 22 60 e6 dc f3 ec 7d |.....D.U."`....}| +000001f0 d2 22 e0 07 5d 52 0c 63 4d 77 f8 c5 16 06 67 5b |."..]R.cMw....g[| +00000200 9e 96 f4 1e fa 8e dd f8 42 85 7f 1e dc f9 dc b8 |........B.......| +00000210 b1 91 b0 c3 04 0d e1 dd c9 c4 0d fb b7 74 cb e5 |.............t..| +00000220 57 38 b7 82 8c d1 20 d1 0f 17 03 03 00 a4 79 ad |W8.... .......y.| +00000230 66 39 e1 10 c9 96 2c d3 7f 11 c6 7e c4 36 56 4c |f9....,....~.6VL| +00000240 70 c3 8f a4 da c2 a5 53 9b 28 25 82 69 d8 90 f0 |p......S.(%.i...| +00000250 79 52 29 cb e1 d4 48 49 dd 00 82 37 b1 ac 3b 1c |yR)...HI...7..;.| +00000260 2c b9 a7 c4 08 ac 08 fd 42 47 79 1f 64 82 57 2a |,.......BGy.d.W*| +00000270 63 c0 78 54 55 69 f2 05 9e 8d 81 6e d9 b5 31 08 |c.xTUi.....n..1.| +00000280 d3 0d 61 61 4f 70 a4 57 67 eb 9d 09 ca 51 01 ff |..aaOp.Wg....Q..| +00000290 53 d2 6d 9e 49 ce 40 1f c9 ab a2 52 e6 56 0c d3 |S.m.I.@....R.V..| +000002a0 63 b4 44 d7 fe 97 1d d2 55 8d 13 df 23 71 68 b6 |c.D.....U...#qh.| +000002b0 79 26 a8 a6 cd ca a1 19 6b 21 e8 b6 30 34 b6 6f |y&......k!..04.o| +000002c0 66 2d ab 1d 16 7f c6 b1 53 c9 2a 40 87 9d 7d 48 |f-......S.*@..}H| +000002d0 c9 6a 17 03 03 00 45 43 bf 6e f3 e2 76 56 69 2f |.j....EC.n..vVi/| +000002e0 9b c5 d2 46 4f 24 d2 e2 61 13 2b ad b6 3e d8 89 |...FO$..a.+..>..| +000002f0 1b 31 7c ec 14 44 39 7c b4 08 44 9d 31 d9 a1 5f |.1|..D9|..D.1.._| +00000300 2e 8f a9 8e 5b 5a 91 e2 f5 61 f5 63 be 5c 14 e3 |....[Z...a.c.\..| +00000310 70 8e 2e 9e fd 6c 54 85 ba ef 85 b7 |p....lT.....| +>>> Flow 4 (server to client) +00000000 17 03 03 02 a8 02 f0 98 42 d8 ab 9d 92 8c 11 ac |........B.......| +00000010 16 4d b1 c0 2e 3b 0f ac 53 f8 aa 15 01 36 03 fd |.M...;..S....6..| +00000020 1b e1 0f 87 62 5f d4 4e fc 0d 88 13 30 4f 5e fc |....b_.N....0O^.| +00000030 46 1b 3a 22 cc ff a9 5e 29 24 15 67 08 1b 28 18 |F.:"...^)$.g..(.| +00000040 d3 70 46 fa 92 89 de 69 62 f1 c7 47 d1 24 a2 98 |.pF....ib..G.$..| +00000050 8d 78 d0 f2 cc 3f fb 4c 3c 5e 03 0c 4e a8 a3 b7 |.x...?.L<^..N...| +00000060 c5 69 49 19 43 da 07 b4 be 6e 7d cd 12 c3 bf d7 |.iI.C....n}.....| +00000070 74 9a 3e 30 cd 9d 8e a4 27 bb 66 d1 95 50 ad f7 |t.>0....'.f..P..| +00000080 91 52 e4 be d5 61 fc 28 fb 33 02 bc f4 fb fb 7f |.R...a.(.3......| +00000090 0c 9a dc e4 63 86 c6 f8 f6 bc 67 60 c6 ac b2 52 |....c.....g`...R| +000000a0 65 3e 0d f7 15 e0 d4 f2 7b 36 ed e2 2e c3 ab 44 |e>......{6.....D| +000000b0 e4 06 d1 09 e6 c6 9e c3 dd df e9 3b 9c 22 cb 48 |...........;.".H| +000000c0 1a 18 22 da 8c e7 11 e0 36 0b a9 73 be d8 22 db |..".....6..s..".| +000000d0 8b 95 f5 3e cc c0 11 6f db 40 57 4c 07 14 2b fc |...>...o.@WL..+.| +000000e0 9e 6b f8 07 96 9f 3d 8e cc d2 c3 b5 a8 e1 64 33 |.k....=.......d3| +000000f0 b6 ab 17 4b aa b2 e0 b6 fe b6 49 69 7d 0b 8e cd |...K......Ii}...| +00000100 19 a3 d8 5e 22 5a 02 64 c2 68 ec 69 55 2d fd aa |...^"Z.d.h.iU-..| +00000110 1f f6 35 bf b2 14 a5 f9 a0 49 59 a4 84 ff 41 a5 |..5......IY...A.| +00000120 fb a1 e4 97 72 88 00 98 dd 5a 6f 7b 00 a7 59 fa |....r....Zo{..Y.| +00000130 83 73 e7 ca 8f dd 31 e8 ca 02 13 c9 fa 2b 8c 5e |.s....1......+.^| +00000140 b5 7b 85 da 2b 1a 75 da e3 db b7 34 58 c4 da 15 |.{..+.u....4X...| +00000150 b3 3a f9 a7 b3 7f 15 d2 01 b2 26 b4 c1 fe 83 af |.:........&.....| +00000160 d6 f7 8b fb 92 3d 32 ae 4a 1b a2 50 60 70 a6 34 |.....=2.J..P`p.4| +00000170 98 3f 2d bf 27 2e d3 a0 91 d9 c8 f9 a9 27 f2 23 |.?-.'........'.#| +00000180 7c 3c 17 96 19 99 6f 09 a7 bd da 2d 94 9e f9 6b ||<....o....-...k| +00000190 bb 93 fd bb b1 c0 89 6f b4 8f 90 86 e1 85 59 98 |.......o......Y.| +000001a0 ba 98 7c 6c 26 be 98 30 5f cf 46 bf e9 c6 a4 bd |..|l&..0_.F.....| +000001b0 08 14 2a 5c 05 d8 c2 0e ba 46 af 23 e8 f0 71 77 |..*\.....F.#..qw| +000001c0 78 78 ec c2 af 4a 63 93 2e b1 ed 56 3d b7 7c a5 |xx...Jc....V=.|.| +000001d0 63 99 2f df 15 d3 ce 79 0e 49 d0 16 ac 3e f3 fa |c./....y.I...>..| +000001e0 cd e7 0e e5 ee 4a cd 49 20 f6 9f fa d1 df cb cc |.....J.I .......| +000001f0 1b 73 83 12 47 52 69 3c 93 bb 1f 65 64 1e 79 15 |.s..GRi<...ed.y.| +00000200 72 85 e8 fd fa d6 be d5 61 44 35 bb 75 a7 17 1f |r.......aD5.u...| +00000210 dd 7b 60 17 78 1f 11 72 7f ac e7 52 1e 94 13 35 |.{`.x..r...R...5| +00000220 ab 97 69 17 09 6c 4b 46 cd 34 2d 7e 55 8a 16 d3 |..i..lKF.4-~U...| +00000230 c2 59 e8 d8 67 9b 29 af bc f1 31 39 d9 ff 06 d5 |.Y..g.)...19....| +00000240 80 b8 8d 50 80 5f 2c 0a 30 84 28 32 3d 4c 45 f2 |...P._,.0.(2=LE.| +00000250 2f 8b b5 d9 3a 7a 47 05 55 22 7a a4 61 c8 8c d1 |/...:zG.U"z.a...| +00000260 1c 1b 78 e0 87 37 5e 36 88 5c 32 ca 7a d3 76 63 |..x..7^6.\2.z.vc| +00000270 ee 94 83 9c 9e 5e 9b 01 42 03 e1 e5 0f a8 43 53 |.....^..B.....CS| +00000280 cd 3d 76 01 88 ba bf 78 b8 d7 b2 e9 8f 69 d1 35 |.=v....x.....i.5| +00000290 88 44 f1 ef 20 cd 42 c6 99 99 0c a5 25 ec dc 88 |.D.. .B.....%...| +000002a0 1e b5 28 dd e4 a1 12 20 03 fa ce 38 8a 17 03 03 |..(.... ...8....| +000002b0 00 1e bc 9a e0 0d 88 a2 71 15 c3 0d 54 d3 13 d8 |........q...T...| +000002c0 d9 96 ad 95 ee 47 2c c6 ba e9 f9 50 b1 8e 1e 0b |.....G,....P....| +000002d0 17 03 03 00 13 d2 56 e3 48 c0 fa 0f 9a 95 22 e9 |......V.H.....".| +000002e0 51 c1 98 64 b4 03 09 5a |Q..d...Z| diff --git a/testdata/Server-TLSv13-ClientAuthRequestedAndGiven b/testdata/Server-TLSv13-ClientAuthRequestedAndGiven new file mode 100644 index 0000000..cbd8c75 --- /dev/null +++ b/testdata/Server-TLSv13-ClientAuthRequestedAndGiven @@ -0,0 +1,180 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 c6 01 00 00 c2 03 03 9f dd 5a e8 c2 |.............Z..| +00000010 fa 2f 38 45 33 8d f2 ab 67 03 f6 cc ba 9d 8b 33 |./8E3...g......3| +00000020 69 c8 c6 50 f4 2e 1b 2b dc 2b 2d 20 ab eb f9 db |i..P...+.+- ....| +00000030 71 a7 b4 eb 9a e0 17 04 2e a8 d2 c7 65 51 71 a3 |q...........eQq.| +00000040 9a a3 5a 64 38 45 49 dc e9 e9 e2 96 00 08 13 02 |..Zd8EI.........| +00000050 13 03 13 01 00 ff 01 00 00 71 00 00 00 0e 00 0c |.........q......| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 16 00 00 00 17 00 00 00 0d 00 04 |................| +00000090 00 02 08 04 00 2b 00 03 02 03 04 00 2d 00 02 01 |.....+......-...| +000000a0 01 00 33 00 26 00 24 00 1d 00 20 08 a9 6d 37 e7 |..3.&.$... ..m7.| +000000b0 3b e8 ab 4c d3 81 41 6e ac 3d dc 45 94 72 9c 9d |;..L..An.=.E.r..| +000000c0 43 32 f7 d0 de 5a e0 6b b3 11 23 |C2...Z.k..#| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 ab eb f9 db |........... ....| +00000030 71 a7 b4 eb 9a e0 17 04 2e a8 d2 c7 65 51 71 a3 |q...........eQq.| +00000040 9a a3 5a 64 38 45 49 dc e9 e9 e2 96 13 02 00 00 |..Zd8EI.........| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 0f f6 f3 45 0e 04 |.............E..| +00000090 df 70 96 7c 7a a6 a7 31 7a 7f b8 43 53 ab 02 32 |.p.|z..1z..CS..2| +000000a0 23 17 03 03 00 3c bc 1f 27 c5 81 3d d3 25 22 34 |#....<..'..=.%"4| +000000b0 af e3 a4 6f 22 14 e0 e8 2b 9e 91 6b b5 a5 19 b7 |...o"...+..k....| +000000c0 32 5d a9 2a 7a ff 30 71 7b a8 32 01 00 b8 52 cc |2].*z.0q{.2...R.| +000000d0 5e 46 ab 4d c0 10 a6 8d 0d 04 8a 26 5c d1 3a 62 |^F.M.......&\.:b| +000000e0 67 07 17 03 03 02 6d 54 af e4 20 90 dd 21 b4 04 |g.....mT.. ..!..| +000000f0 46 0c 01 7f 5c c4 4b 08 87 4f f0 fd 9f 64 34 55 |F...\.K..O...d4U| +00000100 3e 30 81 52 3a c7 a6 3c 7a 0d 3e e8 b0 9c 38 df |>0.R:.....8.| +00000110 2a bf 29 e0 cb 13 04 0a d0 ab 65 fc d1 0c 6a ae |*.).......e...j.| +00000120 36 03 81 56 7b dd 1d 15 a8 81 de e2 85 25 5c e5 |6..V{........%\.| +00000130 a8 38 44 dd 04 d7 52 18 0e 27 8c a3 be c3 54 f7 |.8D...R..'....T.| +00000140 54 a2 ec df 6d cb ae cf dd 77 78 01 e0 0c 02 76 |T...m....wx....v| +00000150 65 e3 da da 5b 96 2c 57 fa c5 a2 6e 3f 9f 93 f5 |e...[.,W...n?...| +00000160 af b3 fa 27 d5 46 94 c1 8c 4e 0b d5 c7 f8 21 07 |...'.F...N....!.| +00000170 08 09 27 87 a6 19 5c b1 a8 d5 c1 66 3d 0a d9 bb |..'...\....f=...| +00000180 80 77 2b 24 cf 2e 7a 51 84 37 e1 e7 05 cb e9 90 |.w+$..zQ.7......| +00000190 47 0e 5f 32 25 60 81 2c 93 43 a5 1a f5 b0 84 13 |G._2%`.,.C......| +000001a0 2f e8 37 d6 b6 4b bc 4a ad 23 41 77 b0 b7 7e a7 |/.7..K.J.#Aw..~.| +000001b0 74 db d2 13 e5 12 ab 43 51 68 da 9a d6 68 f2 82 |t......CQh...h..| +000001c0 aa 73 49 6e e4 2e 24 41 e3 5c 22 c4 88 8b 03 8b |.sIn..$A.\".....| +000001d0 2d 14 b9 55 12 60 50 a2 d3 8a a9 8f 7c c5 d9 f6 |-..U.`P.....|...| +000001e0 f2 23 93 a2 a6 55 eb 27 3a c5 f5 f8 82 0e 23 43 |.#...U.':.....#C| +000001f0 bd 3a 2d b5 e3 e3 8f d3 a6 eb 30 56 a4 7f 1c 08 |.:-.......0V....| +00000200 72 85 77 22 36 f5 7a b8 d4 b8 9c e2 1f 47 f6 81 |r.w"6.z......G..| +00000210 d6 c7 76 4e 97 51 dd 1e 89 b5 b5 12 88 f9 2d ca |..vN.Q........-.| +00000220 2e 85 c8 cc cc 95 0d 7e a8 7e c3 59 85 b2 ca 14 |.......~.~.Y....| +00000230 d7 cc 50 3b 5e 03 52 77 d3 50 8d e4 50 76 e2 36 |..P;^.Rw.P..Pv.6| +00000240 82 df b2 69 a2 cf ee 1b fb 1d 5c a1 83 8b c9 97 |...i......\.....| +00000250 23 a6 7f 85 87 df d5 59 fc d5 ad 86 c7 2c 9a 92 |#......Y.....,..| +00000260 b6 1d d1 ee 92 83 92 f9 d8 9e dd e7 d7 05 c5 c8 |................| +00000270 a5 c2 10 b3 2f 99 4a 4b fb 8a 5b c7 26 06 18 7a |..../.JK..[.&..z| +00000280 1b d4 c1 f4 d4 2c cf a1 5e d2 f0 90 3d a4 2c b7 |.....,..^...=.,.| +00000290 d4 0a 7b e4 7f 16 29 1a ad d1 45 d5 b8 9b 07 4a |..{...)...E....J| +000002a0 ab 61 32 bb 27 ac 61 c6 74 56 ec fd 93 01 a0 53 |.a2.'.a.tV.....S| +000002b0 6b 0c 8b 3f 55 3d 53 fd cf f6 da d7 5a c6 8e 8f |k..?U=S.....Z...| +000002c0 c9 e1 fd 79 6c 85 22 08 2a a4 bc 82 ea f6 53 d6 |...yl.".*.....S.| +000002d0 80 02 a7 f5 49 0c 1f c3 4c 44 f2 7f 56 3a 5f 65 |....I...LD..V:_e| +000002e0 d1 4e 62 17 61 6b f9 75 94 e7 f9 5b da 8f 65 dd |.Nb.ak.u...[..e.| +000002f0 d0 98 99 72 35 b7 0e 79 3c b5 94 2b a2 19 94 e3 |...r5..y<..+....| +00000300 7b 31 cb 74 e4 41 c6 c3 92 0b 7a 2e 48 b5 50 2b |{1.t.A....z.H.P+| +00000310 23 b6 c1 de 6c 5e 57 c9 36 e8 a1 07 4d d1 73 a8 |#...l^W.6...M.s.| +00000320 c0 7b 67 1f fb 70 01 da 86 fb e0 73 ad 79 8c 9f |.{g..p.....s.y..| +00000330 7f 28 61 e9 2c d5 f0 d5 85 e4 e9 db 87 26 f9 dc |.(a.,........&..| +00000340 af e1 ed 4d 79 f0 5d 14 10 08 70 70 66 6d 5b 32 |...My.]...ppfm[2| +00000350 22 09 7f 78 17 03 03 00 99 16 32 bb fc 9a 38 88 |"..x......2...8.| +00000360 17 0f d1 03 15 b2 70 f3 ee d7 86 ec 67 f0 f6 aa |......p.....g...| +00000370 df 63 cf 4e 4c e3 f5 7f 67 3f ef 80 b0 68 b3 d2 |.c.NL...g?...h..| +00000380 a6 91 59 1a dd 9c 9b 26 7a 4e f1 e4 cb df cf 9f |..Y....&zN......| +00000390 51 26 76 88 02 73 e7 99 15 58 06 af cb 14 52 1e |Q&v..s...X....R.| +000003a0 18 4f 81 f9 62 2b 4b bd dc e6 3b fc 5f ff e6 4b |.O..b+K...;._..K| +000003b0 b7 4b 47 39 70 69 69 89 2b ca 9a 5e 32 91 7d e9 |.KG9pii.+..^2.}.| +000003c0 2f ae d4 b2 f8 13 89 57 4c 59 55 1e e5 41 66 34 |/......WLYU..Af4| +000003d0 b3 1e c3 e9 b0 79 7b 14 f8 c0 b5 16 c9 e3 7e ce |.....y{.......~.| +000003e0 3a 2c 38 85 ea ca 91 3f cf c0 fb 61 4d 24 b4 c5 |:,8....?...aM$..| +000003f0 b5 6a 17 03 03 00 45 3a 7a af a4 51 1c f9 07 39 |.j....E:z..Q...9| +00000400 73 d5 ca e2 6f ab 7c f3 ef b0 16 ea 17 0d 03 cb |s...o.|.........| +00000410 07 fb 40 1b ae 9a 5c e9 1f c1 aa c9 e5 f5 1b 4d |..@...\........M| +00000420 1b 4b 2c 0b 8d 86 24 06 9a 64 ba a5 fd e3 69 dd |.K,...$..d....i.| +00000430 53 e5 ac 9a 2f 37 fc fd e3 c1 b4 b7 |S.../7......| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 02 11 1c af 9f 29 61 |..............)a| +00000010 e3 1f bf c8 44 89 cf 28 10 cb e5 63 05 0c fa cf |....D..(...c....| +00000020 38 79 7c 63 5d 1d 6b 40 68 ea 54 41 3d 3a 39 83 |8y|c].k@h.TA=:9.| +00000030 8b e2 29 e9 f6 4d 4e e4 14 33 36 78 b2 bb 01 e1 |..)..MN..36x....| +00000040 84 c4 59 30 01 65 9b 6b b1 35 2d 3e 02 fa 9b db |..Y0.e.k.5->....| +00000050 51 d1 25 bc 4d fa a1 e8 24 e9 7e cc 97 b0 f2 40 |Q.%.M...$.~....@| +00000060 92 0f b0 1c 0a 0a 24 3e 77 d5 4f 0f c0 54 e7 f5 |......$>w.O..T..| +00000070 56 87 ff 46 0a 12 7f 49 18 76 40 3d ce 64 53 a8 |V..F...I.v@=.dS.| +00000080 f8 1a 95 70 dc 8f 1c b0 2d ba 55 42 89 1d fa 9a |...p....-.UB....| +00000090 cf d5 ba f0 fb f8 fe ad c8 5f e0 47 28 ce 48 2f |........._.G(.H/| +000000a0 a3 6c 7c 05 04 5f 3f 0a 95 ca 04 2f 6a b3 02 9c |.l|.._?..../j...| +000000b0 f3 23 d9 fd 13 75 45 5d a6 22 3f 72 6d 7e 35 60 |.#...uE]."?rm~5`| +000000c0 bd c1 b3 8d d4 42 4a b8 69 31 82 0c 83 94 84 76 |.....BJ.i1.....v| +000000d0 77 5e ca 19 8c d2 4f b1 94 71 2d 3d e9 34 3b 39 |w^....O..q-=.4;9| +000000e0 7f f0 b1 0b 8c e7 18 7e 37 89 c9 98 38 31 21 39 |.......~7...81!9| +000000f0 a4 52 b8 d0 0e 09 fb eb c1 e2 ef f1 37 4f d2 29 |.R..........7O.)| +00000100 13 4b 87 f9 88 19 71 bd d7 48 c9 8f 94 a3 51 4e |.K....q..H....QN| +00000110 65 4b 66 8a 48 9b 33 bf 14 70 24 24 e3 1c b3 6c |eKf.H.3..p$$...l| +00000120 0d f3 b1 74 5a bd a6 a4 f3 e9 1f 95 81 88 6d cb |...tZ.........m.| +00000130 19 44 67 b6 ee f7 65 af bf ec 0a 55 13 a6 65 41 |.Dg...e....U..eA| +00000140 49 4f be 8f c5 f2 a7 7c 27 ac ad fa 02 a5 75 54 |IO.....|'.....uT| +00000150 53 a5 a9 b5 7f b9 7d 70 2e 2d 48 27 fe 63 e6 ab |S.....}p.-H'.c..| +00000160 ea 13 47 0e 8f a5 8d 19 42 0f 8c 26 ba cd a2 98 |..G.....B..&....| +00000170 f5 e3 28 a7 a1 6d 56 95 0b 7f a1 c2 5e 77 56 81 |..(..mV.....^wV.| +00000180 5d c8 7f a8 00 4c a4 09 c1 ed 43 0e a2 65 8f 66 |]....L....C..e.f| +00000190 47 02 0f 0d 46 d5 42 d8 f5 e8 a7 f2 50 1b 09 02 |G...F.B.....P...| +000001a0 4d a9 39 78 6b fc 24 23 4b 2a 49 ef b7 60 70 78 |M.9xk.$#K*I..`px| +000001b0 f3 6f a0 2e 8f e3 20 b6 b9 76 ce 4d e4 56 e0 f3 |.o.... ..v.M.V..| +000001c0 b8 9f d2 02 f7 63 e9 80 ed 43 16 49 c9 3a c2 41 |.....c...C.I.:.A| +000001d0 8c f9 98 b7 3a 31 cb e6 78 3b ad ee 5f 52 c3 0a |....:1..x;.._R..| +000001e0 d7 dc 5f 67 89 6a 0a db 1f 7f 4b fc 08 0e a2 e1 |.._g.j....K.....| +000001f0 23 4b d6 a0 36 10 c7 e5 95 71 86 cb 1a 70 89 55 |#K..6....q...p.U| +00000200 2c 58 8a 55 f8 26 89 b1 40 1e 11 b0 b5 3e 0d eb |,X.U.&..@....>..| +00000210 33 cb 37 1c 80 6c b7 0e 84 96 a0 67 17 03 03 00 |3.7..l.....g....| +00000220 99 ae 4c b5 06 1e 69 cb 7d 28 42 7f 47 c8 1b bf |..L...i.}(B.G...| +00000230 8c 0a af 18 fc 5a 4d db 2c c5 b3 7d cc e5 28 be |.....ZM.,..}..(.| +00000240 ec 3a f7 e4 ec b1 11 01 67 f6 3b 0e a6 55 03 67 |.:......g.;..U.g| +00000250 76 8c 3f d3 0a cc 97 90 f2 51 d4 ee 58 3e 9c 78 |v.?......Q..X>.x| +00000260 e1 b4 57 4d 42 c1 fd e1 4c c5 6e 1f 5e 8e d9 fd |..WMB...L.n.^...| +00000270 f9 71 86 c9 63 7c 42 df 53 b0 99 06 3d 21 3e 06 |.q..c|B.S...=!>.| +00000280 d7 56 2f 90 b8 09 f5 77 8b 8a 4b 7e f5 78 05 73 |.V/....w..K~.x.s| +00000290 85 10 e7 b4 71 02 77 a0 2c cb db 76 53 0b b4 34 |....q.w.,..vS..4| +000002a0 56 37 7f 45 13 b4 72 f0 24 24 e4 47 1b ce b2 78 |V7.E..r.$$.G...x| +000002b0 44 82 73 f6 3a 77 68 5c ce 02 17 03 03 00 45 17 |D.s.:wh\......E.| +000002c0 d8 40 a5 44 fe 96 82 bc 27 1c 2f c6 c5 6e 0c 47 |.@.D....'./..n.G| +000002d0 52 9d 90 cd f6 43 03 d5 f0 1b 4a 11 38 56 f3 0b |R....C....J.8V..| +000002e0 73 cb 01 d3 69 33 1a 95 4b 5e 75 55 99 a9 a2 fe |s...i3..K^uU....| +000002f0 28 58 4e 54 92 5e 08 71 4b 40 42 a1 e6 94 ec c0 |(XNT.^.qK@B.....| +00000300 bc ac 82 8e |....| +>>> Flow 4 (server to client) +00000000 17 03 03 02 9b bf 6f 39 51 ff 9a ee ff 16 51 98 |......o9Q.....Q.| +00000010 49 e5 88 3d b3 ea b4 14 1d a7 8c ae 11 da 7b 08 |I..=..........{.| +00000020 99 ad 7d 23 e7 3a 78 8f b1 ca c1 2c b5 f7 84 bf |..}#.:x....,....| +00000030 0d 48 0b 1e 3f 6d 56 d7 7c 84 df f0 39 ee 77 ff |.H..?mV.|...9.w.| +00000040 af 7b f5 f2 6e 59 dc 4e 92 a8 b5 d0 64 03 5a 87 |.{..nY.N....d.Z.| +00000050 9d 4b 0c d7 00 0c e7 7e 2d 4a e0 da 63 10 cc a6 |.K.....~-J..c...| +00000060 a0 8e 8b ff 04 e2 49 75 01 4f b9 6a cd 5c 90 82 |......Iu.O.j.\..| +00000070 3c e3 67 d0 a0 93 b7 9b 4d f3 f8 b6 67 d3 fd f6 |<.g.....M...g...| +00000080 e3 d2 d0 dd 0f 6c 89 92 95 4f b6 74 56 5c f8 f5 |.....l...O.tV\..| +00000090 a1 33 3d e6 31 05 93 d8 09 d8 3c 0b e3 a7 9f b9 |.3=.1.....<.....| +000000a0 4b c7 0a de 1c 71 8a d6 63 44 b8 7d 11 6f 1e 8d |K....q..cD.}.o..| +000000b0 d8 7f 3f 9f 39 77 8b 2d 7a fd 01 e1 9e 45 58 b6 |..?.9w.-z....EX.| +000000c0 f8 eb f6 48 9b f2 fc 95 ba 75 56 42 5c 01 22 39 |...H.....uVB\."9| +000000d0 ab df c2 2d 32 9c de f6 fa 51 00 d0 77 a8 47 34 |...-2....Q..w.G4| +000000e0 b2 cf dd 9e d5 d6 c2 fd 0e db 98 71 6a 30 82 4e |...........qj0.N| +000000f0 4a 36 ce 6c c8 27 a0 92 77 ec 04 e8 ed 20 0d f4 |J6.l.'..w.... ..| +00000100 1e 9a 5c ae 71 db 06 6a ed ba 18 0e 65 94 dc f1 |..\.q..j....e...| +00000110 60 67 34 d4 6a 9d 4b ed 4b 80 69 2e 52 8b e2 ba |`g4.j.K.K.i.R...| +00000120 17 aa b7 75 0f 02 bf b9 95 f1 05 83 2c 2a e8 7d |...u........,*.}| +00000130 62 17 0e 89 c5 40 fb bb 98 14 98 f4 68 09 af 73 |b....@......h..s| +00000140 e2 f9 35 68 19 d7 56 66 dd 36 1f 8e 6e 1c 73 e4 |..5h..Vf.6..n.s.| +00000150 98 ef b0 f3 31 ae 58 de 91 56 a6 eb ee 4c f6 57 |....1.X..V...L.W| +00000160 5b 6c e7 f9 c3 51 c7 2c 78 40 c0 37 14 0d c4 12 |[l...Q.,x@.7....| +00000170 18 4c 96 24 69 19 53 de 07 a3 50 b4 00 fa cd 47 |.L.$i.S...P....G| +00000180 e4 a3 4f 3a 0c 44 82 b7 90 7d 55 6d 6f b1 68 04 |..O:.D...}Umo.h.| +00000190 02 3d 60 14 80 8b 4b 7d 13 55 5c 1b d2 73 f2 03 |.=`...K}.U\..s..| +000001a0 31 a1 12 f3 cc df 5f 2e 14 5d 15 7b 6c a8 66 10 |1....._..].{l.f.| +000001b0 3d ee 11 e0 bd 0f ff b6 d9 9d 2b b8 59 0c b5 f5 |=.........+.Y...| +000001c0 ec 78 80 bd 11 85 6b b7 67 01 25 5d 1f 14 26 4c |.x....k.g.%]..&L| +000001d0 60 48 0e 40 7f 2e a5 d9 09 25 e9 45 87 6e b3 a9 |`H.@.....%.E.n..| +000001e0 e2 19 5a 58 4c 3e 53 0e 1f d1 55 42 3f bc d0 26 |..ZXL>S...UB?..&| +000001f0 4e 9a dc 00 ac 2e 8b ac 4d e2 76 d0 80 80 09 87 |N.......M.v.....| +00000200 8b fe c6 9b c5 43 2d 56 b6 13 e2 eb 91 94 d9 0c |.....C-V........| +00000210 40 4f e6 96 af b2 c5 fb 75 9d 51 24 09 b0 8d 4f |@O......u.Q$...O| +00000220 68 c5 b1 7a 0e 22 03 84 21 14 b5 db f7 97 d4 60 |h..z."..!......`| +00000230 c9 ee 49 a0 9a 14 d4 bb 3c 54 91 61 ac 78 40 0f |..I......j.c9| +000002c0 64 e8 05 17 03 03 00 13 3b b0 06 df 04 01 7a 90 |d.......;.....z.| +000002d0 46 4a 2e 57 1c 66 26 f0 d8 4c ea |FJ.W.f&..L.| diff --git a/testdata/Server-TLSv13-ClientAuthRequestedNotGiven b/testdata/Server-TLSv13-ClientAuthRequestedNotGiven new file mode 100644 index 0000000..c9c8728 --- /dev/null +++ b/testdata/Server-TLSv13-ClientAuthRequestedNotGiven @@ -0,0 +1,109 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 e0 01 00 00 dc 03 03 d7 9c 79 99 50 |.............y.P| +00000010 c9 4b 3a e0 a1 36 a8 fc 40 bb 51 a9 71 a6 ba 2f |.K:..6..@.Q.q../| +00000020 1b ba 13 f3 b6 8b 2b 77 f1 60 27 20 a6 a3 e8 5a |......+w.`' ...Z| +00000030 4b cb 7c 64 05 b4 77 3b af 66 4b e3 5a b3 cb 57 |K.|d..w;.fK.Z..W| +00000040 84 d3 fa 5d 7f 5a cd 94 62 79 31 4a 00 08 13 02 |...].Z..by1J....| +00000050 13 03 13 01 00 ff 01 00 00 8b 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 16 00 00 00 17 00 00 00 0d 00 1e |................| +00000090 00 1c 04 03 05 03 06 03 08 07 08 08 08 09 08 0a |................| +000000a0 08 0b 08 04 08 05 08 06 04 01 05 01 06 01 00 2b |...............+| +000000b0 00 03 02 03 04 00 2d 00 02 01 01 00 33 00 26 00 |......-.....3.&.| +000000c0 24 00 1d 00 20 c6 c0 3a af 99 9f ef 6d 59 6b bd |$... ..:....mYk.| +000000d0 c3 b0 8a 94 02 c8 fb 13 7d cb a8 3a f4 f1 e0 40 |........}..:...@| +000000e0 03 15 7a 95 06 |..z..| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 a6 a3 e8 5a |........... ...Z| +00000030 4b cb 7c 64 05 b4 77 3b af 66 4b e3 5a b3 cb 57 |K.|d..w;.fK.Z..W| +00000040 84 d3 fa 5d 7f 5a cd 94 62 79 31 4a 13 02 00 00 |...].Z..by1J....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 d8 15 a1 e7 a9 00 |................| +00000090 bf 9d 8d 63 5d ba b1 5a 08 c2 de 57 7e 73 61 5d |...c]..Z...W~sa]| +000000a0 2f 17 03 03 00 3c 59 ed f4 2a 62 56 2a 02 73 4f |/.......r....4| +00000350 2f 45 81 fe 17 03 03 00 99 ef 4a 43 25 8d dd 0d |/E........JC%...| +00000360 e5 af 9e e3 46 e1 84 de f1 68 5f 9b f6 70 17 6f |....F....h_..p.o| +00000370 7e 86 33 45 b6 13 f0 a8 a2 fd 08 1b 4a 4f 92 3f |~.3E........JO.?| +00000380 45 ef db 03 ff 1f 54 55 28 cc de 0e f5 6c af 5c |E.....TU(....l.\| +00000390 86 cc b1 e2 c7 0e ea 24 47 fb e0 37 e8 a2 e7 47 |.......$G..7...G| +000003a0 cd 9e da 02 e5 37 1f a9 b2 ea 57 f8 6f 63 be 5e |.....7....W.oc.^| +000003b0 38 be 1a 09 38 23 46 52 df cf 79 bc ce c1 da 23 |8...8#FR..y....#| +000003c0 34 97 c8 ce 81 74 d5 03 f4 71 ff 4b 17 e0 99 7c |4....t...q.K...|| +000003d0 31 bd c9 1e d5 2b d3 d4 ff dc 56 82 07 f5 a6 57 |1....+....V....W| +000003e0 0e ab 18 cf db 38 26 ff d9 51 c2 8f 70 b8 5b 84 |.....8&..Q..p.[.| +000003f0 80 27 17 03 03 00 45 95 7b 2b 46 29 0a 03 4f c6 |.'....E.{+F)..O.| +00000400 37 0c 31 e8 72 8a aa 00 db 90 e8 d3 1f c1 e1 eb |7.1.r...........| +00000410 03 02 bc ae dd 03 a7 28 55 7e 19 0d 5f 76 e6 fa |.......(U~.._v..| +00000420 03 91 c2 5a 10 1d c0 a0 85 3d d2 32 ec 65 af 83 |...Z.....=.2.e..| +00000430 25 d1 77 0f 41 d9 e7 43 56 04 4e fe |%.w.A..CV.N.| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 19 6c b2 53 5f 6e |...........l.S_n| +00000010 a9 6a b2 48 da d7 d5 b2 56 81 47 a9 7d a8 5c 6d |.j.H....V.G.}.\m| +00000020 7a a8 23 db 17 03 03 00 45 88 80 32 38 19 22 fd |z.#.....E..28.".| +00000030 09 5c a2 40 50 ba 9c 34 ad 4e 4c 70 7c 4d f0 0e |.\.@P..4.NLp|M..| +00000040 68 3f da d6 c0 6e 6e 29 fa ec d8 11 2e 20 94 38 |h?...nn)..... .8| +00000050 12 b9 08 27 3c e3 0a 8f 9a da cb 1f ab c9 f5 0e |...'<...........| +00000060 da a9 8c 66 24 de 2f b2 92 22 68 53 2f 68 |...f$./.."hS/h| +>>> Flow 4 (server to client) +00000000 17 03 03 00 a3 38 95 dc 12 b1 b8 df 96 ef 91 88 |.....8..........| +00000010 d4 d5 dc 35 ec 19 32 a3 2d 90 0b d5 03 f4 b2 b9 |...5..2.-.......| +00000020 4e 5f 4d b2 18 ae 44 d6 21 f1 7f ef a2 ab 3a 60 |N_M...D.!.....:`| +00000030 df a3 f3 6c 90 68 66 12 8c 3c c2 25 13 36 6c 1d |...l.hf..<.%.6l.| +00000040 51 e7 7e 75 f1 ac 54 fd ae 1b e0 b3 03 6f 0e 96 |Q.~u..T......o..| +00000050 91 5e 88 f5 a7 b6 f0 c5 3c ec a4 e1 3a 46 cd 41 |.^......<...:F.A| +00000060 60 dc 6f 13 d0 eb 76 7e b4 46 31 0f 23 22 0f b1 |`.o...v~.F1.#"..| +00000070 c8 91 14 42 ac 67 6f 83 92 a7 5b 2c 88 16 fc cf |...B.go...[,....| +00000080 ef 97 56 2f 2b 64 92 7d 1a ae a7 94 66 5d 35 f3 |..V/+d.}....f]5.| +00000090 77 63 c2 ef 82 d7 33 6d 0e 60 b2 a3 6b 01 aa 84 |wc....3m.`..k...| +000000a0 32 d0 df 47 e1 01 52 15 17 03 03 00 1e 05 90 37 |2..G..R........7| +000000b0 26 ed e0 a9 8d b1 07 26 42 6d 77 7c 19 aa c2 56 |&......&Bmw|...V| +000000c0 f1 92 eb de 96 46 f2 25 d9 93 df 17 03 03 00 13 |.....F.%........| +000000d0 ed b0 6c 70 1e 85 32 0d 8b ef 55 32 8c d6 fe 1d |..lp..2...U2....| +000000e0 c5 b0 4f |..O| diff --git a/testdata/Server-TLSv13-ECDHE-ECDSA-AES b/testdata/Server-TLSv13-ECDHE-ECDSA-AES new file mode 100644 index 0000000..d2b0250 --- /dev/null +++ b/testdata/Server-TLSv13-ECDHE-ECDSA-AES @@ -0,0 +1,96 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 dc 01 00 00 d8 03 03 90 bc cf 62 d0 |..............b.| +00000010 bc 89 6b 84 ad 18 87 f5 9c 96 0e 02 3f ae a5 4b |..k.........?..K| +00000020 80 70 f8 54 47 b1 78 03 48 4d 06 20 ae 9e 3c 17 |.p.TG.x.HM. ..<.| +00000030 1a c6 fa 52 84 da ea a9 9c 08 e7 10 65 3a 65 4e |...R........e:eN| +00000040 d1 65 61 40 bf 7c ee db d4 f2 73 ff 00 04 13 01 |.ea@.|....s.....| +00000050 00 ff 01 00 00 8b 00 00 00 0e 00 0c 00 00 09 31 |...............1| +00000060 32 37 2e 30 2e 30 2e 31 00 0b 00 04 03 00 01 02 |27.0.0.1........| +00000070 00 0a 00 0c 00 0a 00 1d 00 17 00 1e 00 19 00 18 |................| +00000080 00 16 00 00 00 17 00 00 00 0d 00 1e 00 1c 04 03 |................| +00000090 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b 08 04 |................| +000000a0 08 05 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 |...........+....| +000000b0 04 00 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 |..-.....3.&.$...| +000000c0 20 ad 11 a7 07 20 9c cb 33 96 f4 0d 78 a1 89 55 | .... ..3...x..U| +000000d0 6c af 70 f4 ac d6 cb d9 0d 1b 13 fa 50 de 68 17 |l.p.........P.h.| +000000e0 1d |.| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 ae 9e 3c 17 |........... ..<.| +00000030 1a c6 fa 52 84 da ea a9 9c 08 e7 10 65 3a 65 4e |...R........e:eN| +00000040 d1 65 61 40 bf 7c ee db d4 f2 73 ff 13 01 00 00 |.ea@.|....s.....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 f1 16 14 8f 0a b5 |................| +00000090 92 fa 55 d7 fb 6c 33 04 ae c6 ed 3b 90 27 e9 ae |..U..l3....;.'..| +000000a0 e8 17 03 03 02 22 ca b1 97 19 9d da 2e 1d 12 f4 |....."..........| +000000b0 05 af 35 28 1e 85 9d 28 81 f0 5a 83 46 9c df f7 |..5(...(..Z.F...| +000000c0 58 2e 30 fa b9 07 00 cf fe 69 37 5e f2 75 a0 ef |X.0......i7^.u..| +000000d0 f3 ab 60 0b c5 09 72 bd b4 42 2f 45 24 3e 82 d0 |..`...r..B/E$>..| +000000e0 f1 a1 dd 3a de 6a b9 9d 85 2b 83 75 47 c9 d2 c3 |...:.j...+.uG...| +000000f0 25 91 85 c2 a1 97 6a 62 dd aa 19 11 94 e2 6b f9 |%.....jb......k.| +00000100 7d 5a bc 5e d4 64 bc 74 44 85 d1 7a eb 3a ef d5 |}Z.^.d.tD..z.:..| +00000110 96 f4 22 64 61 2b 79 77 ac 8b 61 69 cc eb ad fd |.."da+yw..ai....| +00000120 38 5e 61 74 d9 4f 70 82 06 3b 3e f8 a8 53 7c e8 |8^at.Op..;>..S|.| +00000130 9d 98 43 a1 af 86 ba d9 64 64 f0 e0 b0 8f 39 6b |..C.....dd....9k| +00000140 16 d6 92 09 8d 5b d0 34 f4 14 60 69 a0 28 73 3a |.....[.4..`i.(s:| +00000150 24 7f 81 4e 8b d1 50 49 1a c0 60 92 fd 02 47 6d |$..N..PI..`...Gm| +00000160 d8 97 62 b2 b4 57 8b d7 d1 b6 bf 19 40 cb 13 09 |..b..W......@...| +00000170 ef d6 55 66 39 88 29 e0 14 2d 06 98 d6 b6 bf a6 |..Uf9.)..-......| +00000180 04 10 47 d5 64 fe 38 69 db 33 a4 fc 12 de 83 5b |..G.d.8i.3.....[| +00000190 c9 8e 76 56 bc f7 dd ac 96 c6 a0 ed e5 43 0b 13 |..vV.........C..| +000001a0 1e 78 94 18 fd 57 50 79 08 91 18 aa 84 63 4e 46 |.x...WPy.....cNF| +000001b0 53 db e0 f3 9a 0b d6 13 20 36 aa 56 dd 7a 62 d9 |S....... 6.V.zb.| +000001c0 3f f6 bd 87 74 3c 86 d1 94 a1 04 79 a8 54 e4 8e |?...t<.....y.T..| +000001d0 11 d6 52 42 5c 4b 77 18 b9 d7 db f7 48 9a 69 e1 |..RB\Kw.....H.i.| +000001e0 2d b9 38 38 e4 e8 94 5e b1 7e 2c 81 96 6a a0 ed |-.88...^.~,..j..| +000001f0 bb 35 6a 8c 93 f2 6d 38 70 df 79 54 d9 45 c8 b8 |.5j...m8p.yT.E..| +00000200 b2 9c 0f 9f 70 34 8f ac b3 08 f5 3e b1 d2 5a d7 |....p4.....>..Z.| +00000210 7b ee f3 dc 9a d1 12 c3 77 24 76 9b bf 09 50 a7 |{.......w$v...P.| +00000220 3c ab 7f 1f 99 b5 02 8c ac 5e 85 cc 53 fd ca e0 |<........^..S...| +00000230 c7 e2 41 08 fd cb b0 79 0c 8b 02 4f 80 92 c2 cd |..A....y...O....| +00000240 6c a1 aa 75 d2 4c d1 25 40 7c 14 41 a7 15 20 a3 |l..u.L.%@|.A.. .| +00000250 a6 81 64 7c c0 c7 2d dd 82 84 ad 2a f4 06 f9 61 |..d|..-....*...a| +00000260 23 1c dd c6 ef 72 da 6b eb be 41 f0 b4 5f 9a 02 |#....r.k..A.._..| +00000270 ee a8 f3 bb 05 48 ec 50 a3 ff f3 94 bb d8 a9 6d |.....H.P.......m| +00000280 92 49 7c bf a1 eb 55 26 08 26 d3 80 d6 cb 05 ea |.I|...U&.&......| +00000290 d1 db bf 97 3d 10 ff 4e f6 05 33 23 68 95 31 42 |....=..N..3#h.1B| +000002a0 5a d5 30 61 79 c4 88 7f e1 be 28 ad 72 bb 78 36 |Z.0ay.....(.r.x6| +000002b0 ba bb 38 75 fb 97 33 b6 28 8c a2 f4 46 fe 37 d8 |..8u..3.(...F.7.| +000002c0 b0 67 63 97 c1 51 0c 61 17 03 03 00 a4 20 15 70 |.gc..Q.a..... .p| +000002d0 7a 69 b1 33 c2 e1 f5 9c 2b b2 06 1e 01 a6 7f 03 |zi.3....+.......| +000002e0 cd 00 13 02 3b 0c 2b 3f 85 d8 ed 6d 81 7e e9 b2 |....;.+?...m.~..| +000002f0 b6 be 7b 77 51 30 dd b5 fc 93 08 91 9e 46 e2 85 |..{wQ0.......F..| +00000300 74 3c 9a 04 26 86 b8 6c 98 99 57 7e 36 54 0d 90 |t<..&..l..W~6T..| +00000310 4c 55 65 77 69 59 b2 e5 5b a3 19 4a b0 72 3d 91 |LUewiY..[..J.r=.| +00000320 2e 5d 9b 8c 52 a1 e6 f5 22 c6 3c 0d 9b d8 9c b9 |.]..R...".<.....| +00000330 cb 90 51 bc 16 69 06 30 22 16 62 08 3b 3f 05 99 |..Q..i.0".b.;?..| +00000340 60 2a cc cf 29 f5 e1 b0 84 81 c8 63 00 d4 d4 13 |`*..)......c....| +00000350 b5 5d 4c 63 8a 60 3e 44 24 03 30 85 91 4c 3d f2 |.]Lc.`>D$.0..L=.| +00000360 2c c2 78 f2 c3 4c bb 90 60 0b 66 18 02 e7 5c 85 |,.x..L..`.f...\.| +00000370 19 17 03 03 00 35 49 76 5f ff 32 3a 09 7a 4b f2 |.....5Iv_.2:.zK.| +00000380 fe f3 38 b6 76 f4 12 f2 aa a3 ed b6 02 ab 0b b9 |..8.v...........| +00000390 3b 9d 00 51 f1 5c 96 23 6b 49 f8 32 9f 74 30 32 |;..Q.\.#kI.2.t02| +000003a0 4d af af ef d5 55 2c ff 2b a0 45 17 03 03 00 93 |M....U,.+.E.....| +000003b0 6e e0 6a f9 44 af c0 af 95 ab 1e ff fd 97 38 f5 |n.j.D.........8.| +000003c0 7b 24 70 da e2 4e 8b dc 9b 49 84 fe 73 0a b0 7e |{$p..N...I..s..~| +000003d0 cf 14 f7 8a 67 e7 74 bd ee 82 93 c6 27 a2 bd 1e |....g.t.....'...| +000003e0 cb 71 06 af 65 dd f0 d9 91 81 b0 f8 21 34 48 d1 |.q..e.......!4H.| +000003f0 c4 e0 e3 19 a8 b4 48 b7 3a be 52 e5 7c a8 a3 c2 |......H.:.R.|...| +00000400 08 6c ac 66 4d 36 cf a1 9d 1f 72 c5 09 20 db 05 |.l.fM6....r.. ..| +00000410 e5 0a 44 af 4a d8 32 38 19 7d 28 e3 05 23 99 66 |..D.J.28.}(..#.f| +00000420 f6 ad 77 02 7e 00 67 c1 71 58 b9 89 3c 93 15 95 |..w.~.g.qX..<...| +00000430 ee 38 e2 ea c0 73 fe da e4 75 6d 38 ca 54 0b bf |.8...s...um8.T..| +00000440 f0 af 86 |...| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 35 23 02 12 13 f1 |..........5#....| +00000010 db fa 70 c0 92 85 8a d3 fa 80 1b 5c a6 22 ff 20 |..p........\.". | +00000020 5d bf 1d 61 58 34 c0 48 6f e1 26 a6 bf bc 76 c7 |]..aX4.Ho.&...v.| +00000030 8b da ee 54 64 30 c4 5c b1 61 67 82 29 bb 3f 4b |...Td0.\.ag.).?K| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 95 c0 53 e2 37 94 09 83 1e 7e 23 |.......S.7....~#| +00000010 dc 9f 02 5e 91 19 b6 f9 72 0d 38 3f 25 ae b2 5f |...^....r.8?%.._| +00000020 4b f2 78 17 03 03 00 13 d2 ad 73 d6 f3 21 ab 7c |K.x.......s..!.|| +00000030 02 dd 63 ff cf d7 34 ca 71 3d 70 |..c...4.q=p| diff --git a/testdata/Server-TLSv13-ExportKeyingMaterial b/testdata/Server-TLSv13-ExportKeyingMaterial new file mode 100644 index 0000000..078739c --- /dev/null +++ b/testdata/Server-TLSv13-ExportKeyingMaterial @@ -0,0 +1,103 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 e4 01 00 00 e0 03 03 40 53 50 a3 f5 |...........@SP..| +00000010 3a 20 4f 16 ef 9c a4 1c a3 10 1d 93 cb ea 1f 69 |: O............i| +00000020 6b aa 50 ae a8 01 7e 65 d9 7b 5c 20 8c 9b cc d4 |k.P...~e.{\ ....| +00000030 6b 07 4d 1e d9 69 d2 d8 a0 a0 d5 b7 75 d8 e3 d8 |k.M..i......u...| +00000040 c4 ac f7 d2 6f e5 f5 8f 46 9a bf 85 00 08 13 02 |....o...F.......| +00000050 13 03 13 01 00 ff 01 00 00 8f 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 23 00 00 00 16 00 00 00 17 00 00 |.....#..........| +00000090 00 0d 00 1e 00 1c 04 03 05 03 06 03 08 07 08 08 |................| +000000a0 08 09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 |................| +000000b0 06 01 00 2b 00 03 02 03 04 00 2d 00 02 01 01 00 |...+......-.....| +000000c0 33 00 26 00 24 00 1d 00 20 81 67 45 ec b4 08 4d |3.&.$... .gE...M| +000000d0 a6 50 79 b4 d4 a9 d1 35 51 2b db 8d b7 e7 7c 3c |.Py....5Q+....|<| +000000e0 fd 0f 4b 47 87 e1 bb fb 2d |..KG....-| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 8c 9b cc d4 |........... ....| +00000030 6b 07 4d 1e d9 69 d2 d8 a0 a0 d5 b7 75 d8 e3 d8 |k.M..i......u...| +00000040 c4 ac f7 d2 6f e5 f5 8f 46 9a bf 85 13 02 00 00 |....o...F.......| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 d2 bf e0 2f ba e9 |............./..| +00000090 84 f5 8b 96 93 ac de 94 3b 92 03 ca db 43 f4 55 |........;....C.U| +000000a0 12 17 03 03 02 6d 54 36 b6 78 fb bf 9f 36 02 78 |.....mT6.x...6.x| +000000b0 b3 92 50 c9 ab 85 b6 57 69 18 10 c1 fe da d4 05 |..P....Wi.......| +000000c0 89 db 62 bd 83 b0 82 38 29 5f ce 53 88 2d f2 cd |..b....8)_.S.-..| +000000d0 6a d7 1d c0 c5 03 e7 e4 4b ec eb bf 95 8e d5 9b |j.......K.......| +000000e0 65 45 09 52 ef 29 60 7b 22 61 6f ca 1b 3d 30 a4 |eE.R.)`{"ao..=0.| +000000f0 c4 c4 06 55 39 5e 3a ef a2 62 61 35 6c c4 fc 8b |...U9^:..ba5l...| +00000100 19 dc c1 b0 8d dd ba d0 9e 87 65 1c 8d 73 6c 82 |..........e..sl.| +00000110 e4 45 e9 a9 53 94 20 ba 19 7e 4e 7e fb 14 dc 5d |.E..S. ..~N~...]| +00000120 86 19 0b fe f8 9c 7e 61 8e 17 e6 59 12 c2 e0 6a |......~a...Y...j| +00000130 52 c0 25 05 30 c8 f7 d6 54 69 15 ca c9 8e 96 1d |R.%.0...Ti......| +00000140 42 55 1f 9a 9b 03 95 af 74 05 be 5e 51 35 8b 1f |BU......t..^Q5..| +00000150 24 0a 13 03 90 fc c0 c4 22 c3 f0 8a f2 60 a8 ff |$......."....`..| +00000160 7b 04 48 10 3e 42 da e5 c2 7b 72 9c e1 d6 b5 56 |{.H.>B...{r....V| +00000170 f7 69 ce 46 67 33 e4 d3 e5 61 43 b2 57 e8 b2 43 |.i.Fg3...aC.W..C| +00000180 84 ac 75 15 d1 cb 70 53 99 1c 29 9a 21 bb c0 d3 |..u...pS..).!...| +00000190 66 8a be 16 b1 67 1b 60 d3 2f c6 a3 7e f3 3b 4f |f....g.`./..~.;O| +000001a0 78 4d ec 1f 9f 6d 46 1c 43 2f 50 ad 44 75 93 49 |xM...mF.C/P.Du.I| +000001b0 e2 29 c4 be aa 22 51 f1 17 1a 20 97 8a 23 06 2c |.)..."Q... ..#.,| +000001c0 93 b6 9d 11 5a 55 34 d9 f1 a4 c6 5b 84 f6 bb 0c |....ZU4....[....| +000001d0 a0 7c a2 25 47 df a6 22 c8 df e5 ae 74 1c f3 db |.|.%G.."....t...| +000001e0 3c 04 6f fa 86 76 c9 be ae 2a e0 64 65 d2 8f 9a |<.o..v...*.de...| +000001f0 7b a2 38 4d 74 8d 44 ad ef c1 12 0b ca 64 6c b5 |{.8Mt.D......dl.| +00000200 13 03 2c b4 6a e8 78 ba 57 d5 ef 9a d1 1d 7e 92 |..,.j.x.W.....~.| +00000210 58 52 78 c2 c5 e2 f8 e9 2d 06 28 88 19 d4 19 7b |XRx.....-.(....{| +00000220 7f 41 ea ed f9 9e 14 f1 9b 3f dc f7 bc 35 20 ca |.A.......?...5 .| +00000230 fc 8f b8 df ee ef 83 50 c4 41 91 ae 83 4b bd d1 |.......P.A...K..| +00000240 00 e1 3f 70 5d cb 40 a6 77 70 cd 9a 09 5b 05 14 |..?p].@.wp...[..| +00000250 83 b9 7c 8d 1c e1 7f 6e 41 1a b9 8c 70 2a 95 01 |..|....nA...p*..| +00000260 ef 19 0c 59 7d 47 b4 64 7b 91 5e 9b 02 c5 ed ee |...Y}G.d{.^.....| +00000270 d4 9b ad 12 70 d1 d9 6b 02 26 b5 48 4e 23 bb 61 |....p..k.&.HN#.a| +00000280 ae c7 82 74 a9 68 59 b1 66 07 b8 e3 93 0f 2c 9f |...t.hY.f.....,.| +00000290 8d 8d f1 e8 3f b7 2c 64 90 4f 88 7f 41 78 66 ba |....?.,d.O..Axf.| +000002a0 26 eb 1c 8b 70 47 f5 78 cb fe 66 34 6f 74 b1 98 |&...pG.x..f4ot..| +000002b0 ca 12 f5 91 8c cb 15 85 eb 77 ad af 76 f8 3f 3f |.........w..v.??| +000002c0 cb 86 82 fe 1e 78 1e d3 16 c2 b7 e6 a6 2b a0 6c |.....x.......+.l| +000002d0 da 99 3f dd 3b 0b 10 3b 16 bd d9 4f 45 c3 12 b5 |..?.;..;...OE...| +000002e0 14 1b 53 33 56 c1 f4 7c 4a 47 b9 c2 b0 bd 4e 78 |..S3V..|JG....Nx| +000002f0 e1 6f 76 05 d1 e3 af 01 f8 b4 e6 23 12 11 cf 43 |.ov........#...C| +00000300 91 9d eb be d8 6b 9c d2 fd 3b b5 3b 8c 52 4e 12 |.....k...;.;.RN.| +00000310 df 26 42 17 03 03 00 99 fc fb 50 ba e0 83 07 bb |.&B.......P.....| +00000320 13 4f 7c 1e 5f 35 e5 2f b9 c0 40 cb 51 9a 38 a6 |.O|._5./..@.Q.8.| +00000330 bf 1a 22 e3 ea 8b 5e 30 e0 b2 2b 40 aa 76 62 bc |.."...^0..+@.vb.| +00000340 c5 e3 3c f3 2a 10 2e 35 58 2b 5e c1 56 da 78 a9 |..<.*..5X+^.V.x.| +00000350 57 b5 46 1f d8 ad 59 3c 5a b8 37 be 66 86 d0 ad |W.F...Y..]_V| +000003b0 05 17 03 03 00 45 81 1e e7 bb e8 81 f4 41 12 af |.....E.......A..| +000003c0 fb f0 8f bd d0 d6 b3 10 a5 1e d6 0c f7 aa 01 15 |................| +000003d0 9d 30 5b 65 e1 fd 3e 72 3d 43 62 21 02 0e ec da |.0[e..>r=Cb!....| +000003e0 ec 74 2c e2 22 84 c9 90 18 71 f8 ef db 3f 05 d6 |.t,."....q...?..| +000003f0 91 09 46 c2 5c 2b f7 03 39 2b 3e 17 03 03 00 a3 |..F.\+..9+>.....| +00000400 53 cc 75 04 8c c5 25 70 1f 4b 9c 04 92 af 1a 3f |S.u...%p.K.....?| +00000410 26 1e 00 98 fa e3 c2 25 63 ca d4 03 fd 6c 94 a0 |&......%c....l..| +00000420 0a 87 5f 68 63 52 72 25 69 3f 21 66 f6 a6 00 2a |.._hcRr%i?!f...*| +00000430 25 e3 1e 95 f3 bd a8 22 bc 9a 74 f0 41 5d b1 30 |%......"..t.A].0| +00000440 36 ff 13 09 d9 69 7f 16 35 11 34 0e 65 2e e7 52 |6....i..5.4.e..R| +00000450 b4 6e a1 dc 06 fe a3 3e 3b eb 79 fe d0 e1 e8 76 |.n.....>;.y....v| +00000460 e2 0e 49 78 c3 cf c5 31 ce 7f 9b d6 c5 6d 3f 7b |..Ix...1.....m?{| +00000470 79 9a 5d a7 c3 3b 58 eb a2 43 55 c6 42 7a a8 34 |y.]..;X..CU.Bz.4| +00000480 6e c9 47 aa 5e 44 4a bd 4b 89 28 ab ac 5a 95 dc |n.G.^DJ.K.(..Z..| +00000490 96 99 28 dc 29 04 10 f3 8c 49 45 b7 29 69 3d 9e |..(.)....IE.)i=.| +000004a0 dd fe 4a |..J| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 3f e6 f9 73 13 |..........E?..s.| +00000010 98 fa c1 e1 84 7a 0c 10 eb 9a bf 2b df c1 44 26 |.....z.....+..D&| +00000020 36 1a 95 02 b4 12 67 7c e2 7d f3 1e 54 79 7b 51 |6.....g|.}..Ty{Q| +00000030 e6 13 94 cb 00 cc 25 fb 6e 8a 35 4e f0 f0 95 34 |......%.n.5N...4| +00000040 53 fd 7e 37 d2 a8 0a 71 a7 2d 8d 58 2e ae 27 34 |S.~7...q.-.X..'4| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 07 34 2c 55 6a c5 14 e7 0a 51 94 |......4,Uj....Q.| +00000010 74 ad e1 c0 4d e8 1c 3e ad 3e 8e 71 e5 60 9c d8 |t...M..>.>.q.`..| +00000020 6a 44 ac 17 03 03 00 13 09 9e 97 ff 3d b8 f1 a6 |jD..........=...| +00000030 5d f9 8f b0 65 93 31 6b 9d 81 76 |]...e.1k..v| diff --git a/testdata/Server-TLSv13-HelloRetryRequest b/testdata/Server-TLSv13-HelloRetryRequest new file mode 100644 index 0000000..96a5488 --- /dev/null +++ b/testdata/Server-TLSv13-HelloRetryRequest @@ -0,0 +1,129 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 da 01 00 00 d6 03 03 ab e7 6d 22 09 |.............m".| +00000010 bf 08 ef a1 7e 7c 8d ea fd a5 39 43 62 84 67 a8 |....~|....9Cb.g.| +00000020 df b1 a1 3a d7 37 dc 0d ef 27 54 20 20 f3 5b 41 |...:.7...'T .[A| +00000030 67 3e 30 d8 8e 2d 0f a1 c2 df 86 48 8c 05 bb d7 |g>0..-.....H....| +00000040 73 30 80 86 cf 2c 85 d1 2a fe 21 36 00 08 13 02 |s0...,..*.!6....| +00000050 13 03 13 01 00 ff 01 00 00 85 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 06 00 04 00 1d 00 17 00 16 |................| +00000080 00 00 00 17 00 00 00 0d 00 1e 00 1c 04 03 05 03 |................| +00000090 06 03 08 07 08 08 08 09 08 0a 08 0b 08 04 08 05 |................| +000000a0 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 |.........+......| +000000b0 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 1a |-.....3.&.$... .| +000000c0 ae 88 dd 6c 7c 4c fb e5 65 ca 8e 63 a1 97 4c d3 |...l|L..e..c..L.| +000000d0 33 ff 00 95 db 0b ce 67 62 26 78 27 52 f0 5c |3......gb&x'R.\| +>>> Flow 2 (server to client) +00000000 16 03 03 00 58 02 00 00 54 03 03 cf 21 ad 74 e5 |....X...T...!.t.| +00000010 9a 61 11 be 1d 8c 02 1e 65 b8 91 c2 a2 11 16 7a |.a......e......z| +00000020 bb 8c 5e 07 9e 09 e2 c8 a8 33 9c 20 20 f3 5b 41 |..^......3. .[A| +00000030 67 3e 30 d8 8e 2d 0f a1 c2 df 86 48 8c 05 bb d7 |g>0..-.....H....| +00000040 73 30 80 86 cf 2c 85 d1 2a fe 21 36 13 02 00 00 |s0...,..*.!6....| +00000050 0c 00 2b 00 02 03 04 00 33 00 02 00 17 14 03 03 |..+.....3.......| +00000060 00 01 01 |...| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 16 03 03 00 fb 01 00 00 f7 03 |................| +00000010 03 ab e7 6d 22 09 bf 08 ef a1 7e 7c 8d ea fd a5 |...m".....~|....| +00000020 39 43 62 84 67 a8 df b1 a1 3a d7 37 dc 0d ef 27 |9Cb.g....:.7...'| +00000030 54 20 20 f3 5b 41 67 3e 30 d8 8e 2d 0f a1 c2 df |T .[Ag>0..-....| +00000040 86 48 8c 05 bb d7 73 30 80 86 cf 2c 85 d1 2a fe |.H....s0...,..*.| +00000050 21 36 00 08 13 02 13 03 13 01 00 ff 01 00 00 a6 |!6..............| +00000060 00 00 00 0e 00 0c 00 00 09 31 32 37 2e 30 2e 30 |.........127.0.0| +00000070 2e 31 00 0b 00 04 03 00 01 02 00 0a 00 06 00 04 |.1..............| +00000080 00 1d 00 17 00 16 00 00 00 17 00 00 00 0d 00 1e |................| +00000090 00 1c 04 03 05 03 06 03 08 07 08 08 08 09 08 0a |................| +000000a0 08 0b 08 04 08 05 08 06 04 01 05 01 06 01 00 2b |...............+| +000000b0 00 03 02 03 04 00 2d 00 02 01 01 00 33 00 47 00 |......-.....3.G.| +000000c0 45 00 17 00 41 04 22 3e 1f 4b 0f 2e f4 af bf 6c |E...A.">.K.....l| +000000d0 d7 35 69 72 23 00 3f 16 6a 8e 00 3e 2b 8f f8 60 |.5ir#.?.j..>+..`| +000000e0 17 e8 e8 80 f3 28 5d cd 1f f7 99 88 59 01 a5 d7 |.....(].....Y...| +000000f0 34 d0 d9 38 5b 73 3e d6 3c c8 9e 39 8f 45 d0 37 |4..8[s>.<..9.E.7| +00000100 aa 5b 8e 59 2f 0c |.[.Y/.| +>>> Flow 4 (server to client) +00000000 16 03 03 00 9b 02 00 00 97 03 03 00 00 00 00 00 |................| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 20 f3 5b 41 |........... .[A| +00000030 67 3e 30 d8 8e 2d 0f a1 c2 df 86 48 8c 05 bb d7 |g>0..-.....H....| +00000040 73 30 80 86 cf 2c 85 d1 2a fe 21 36 13 02 00 00 |s0...,..*.!6....| +00000050 4f 00 2b 00 02 03 04 00 33 00 45 00 17 00 41 04 |O.+.....3.E...A.| +00000060 1e 18 37 ef 0d 19 51 88 35 75 71 b5 e5 54 5b 12 |..7...Q.5uq..T[.| +00000070 2e 8f 09 67 fd a7 24 20 3e b2 56 1c ce 97 28 5e |...g..$ >.V...(^| +00000080 f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 |.+-O....lK[.V.2B| +00000090 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |.X..I..h.A.Vk.Z.| +000000a0 17 03 03 00 17 4c 08 ad d8 7f 86 a1 1f b2 dc 89 |.....L..........| +000000b0 38 bf d4 75 ff 9e db 74 59 3c 86 5c 17 03 03 02 |8..u...tY<.\....| +000000c0 6d f3 65 9c 3b 80 4f c0 c4 a6 e5 e1 32 49 06 13 |m.e.;.O.....2I..| +000000d0 b8 60 18 50 c4 1c 38 f7 1a 42 89 49 14 40 4c fc |.`.P..8..B.I.@L.| +000000e0 7c 3c 2b 70 2d 8b e7 99 f8 2e 1d 50 c8 b3 8b cd ||<+p-......P....| +000000f0 59 a8 f7 89 4d 93 c6 1e f9 94 e3 69 25 92 48 61 |Y...M......i%.Ha| +00000100 06 4a 89 f5 4b 57 93 a7 20 23 0b bb e5 00 8a 43 |.J..KW.. #.....C| +00000110 fb 98 29 08 df 32 89 1a d6 87 f0 97 dc 8b f5 3f |..)..2.........?| +00000120 e2 54 32 2e 23 04 c4 87 0a 0f 99 ef c5 28 64 13 |.T2.#........(d.| +00000130 6c 62 29 e1 3a 21 84 bb 56 f9 92 24 58 75 48 8b |lb).:!..V..$XuH.| +00000140 25 59 9f e1 a5 aa ee 44 3e 64 e5 af ac 0e 6e 18 |%Y.....D>d....n.| +00000150 6e dc 43 87 4d bd 26 1e c1 0a 5f 8b a7 2d 8c cc |n.C.M.&..._..-..| +00000160 94 25 60 59 33 ef 38 93 a3 d1 63 5b 9b ae 10 2f |.%`Y3.8...c[.../| +00000170 63 af 27 32 35 b8 db 75 e8 e6 19 09 8e f3 b1 4d |c.'25..u.......M| +00000180 b6 8a 83 6c 88 41 3a d9 1e da ad b3 06 3b ba 41 |...l.A:......;.A| +00000190 f9 fd 23 46 a5 9e 8a 11 31 d9 f6 8c 56 32 eb a8 |..#F....1...V2..| +000001a0 7f c1 0a d1 78 c7 46 cb b5 f7 3f 7e 56 39 75 45 |....x.F...?~V9uE| +000001b0 5b fb 84 b4 16 28 14 4c 45 9d f4 8d 65 38 5d 93 |[....(.LE...e8].| +000001c0 53 ab 5e ae bc 9c 73 4b cb d2 85 cd d8 a7 00 67 |S.^...sK.......g| +000001d0 f8 0c c3 81 0b fc 5b f8 74 4f 6a 2f 3c 57 68 22 |......[.tOj/......,b..x.L| +00000450 99 cb 38 ad ef a4 00 42 51 04 3b b8 4b 06 89 ee |..8....BQ.;.K...| +00000460 33 48 3e c7 72 9c de f2 e4 23 5f 76 33 db cb 92 |3H>.r....#_v3...| +00000470 92 b0 90 ea 25 4f 05 68 b3 8e 59 9c 36 8b 1b b0 |....%O.h..Y.6...| +00000480 02 73 96 bf e6 fe 80 2c 32 26 ac 91 33 af cd 86 |.s.....,2&..3...| +00000490 57 cc de d3 a2 eb 9e 43 ea 5b d4 56 f0 1b 95 3b |W......C.[.V...;| +000004a0 a1 da 33 21 cb 0b 48 92 35 73 0c 33 01 c4 6d 79 |..3!..H.5s.3..my| +000004b0 7a bb 39 a1 32 3a 85 18 9f 91 a7 e1 42 0a |z.9.2:......B.| +>>> Flow 5 (client to server) +00000000 17 03 03 00 45 b7 e2 1a d9 6a aa c1 54 e3 9a 42 |....E....j..T..B| +00000010 11 cd 13 c2 dc 5a b0 fa e3 62 09 a1 4b 9a a1 b3 |.....Z...b..K...| +00000020 84 7b 63 29 69 47 5c bf ca c6 36 2f ae e0 2f 6e |.{c)iG\...6/../n| +00000030 1b 42 c4 c9 65 17 e8 bd c4 97 5b e4 5f 27 86 d2 |.B..e.....[._'..| +00000040 1f 97 1f 68 9a 1f ee 09 04 82 |...h......| +>>> Flow 6 (server to client) +00000000 17 03 03 00 1e ed fb 39 62 34 b9 5d a3 db 30 fe |.......9b4.]..0.| +00000010 ed 5e 92 77 44 7e fb 77 84 5e 54 6b 11 7c 27 99 |.^.wD~.w.^Tk.|'.| +00000020 80 66 a5 17 03 03 00 13 9b 78 92 3b 84 3d cb 69 |.f.......x.;.=.i| +00000030 86 2b d1 db cc 91 d3 00 55 43 2f |.+......UC/| diff --git a/testdata/Server-TLSv13-IssueTicket b/testdata/Server-TLSv13-IssueTicket new file mode 100644 index 0000000..1a8b384 --- /dev/null +++ b/testdata/Server-TLSv13-IssueTicket @@ -0,0 +1,103 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 e4 01 00 00 e0 03 03 26 46 4d 2d 7d |...........&FM-}| +00000010 5c dc ef fb 2b 8b f7 15 4b ba 8b 1a 26 da f6 9b |\...+...K...&...| +00000020 e6 3c c6 8c a0 f9 6c 60 f6 11 81 20 53 f8 00 fb |.<....l`... S...| +00000030 8b be ff 98 74 c9 d9 3d aa 40 4d 0e 05 96 f9 30 |....t..=.@M....0| +00000040 d6 f5 7b f1 bc 31 18 30 5f 24 03 a8 00 08 13 02 |..{..1.0_$......| +00000050 13 03 13 01 00 ff 01 00 00 8f 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 23 00 00 00 16 00 00 00 17 00 00 |.....#..........| +00000090 00 0d 00 1e 00 1c 04 03 05 03 06 03 08 07 08 08 |................| +000000a0 08 09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 |................| +000000b0 06 01 00 2b 00 03 02 03 04 00 2d 00 02 01 01 00 |...+......-.....| +000000c0 33 00 26 00 24 00 1d 00 20 b6 ad 52 4d 37 b1 eb |3.&.$... ..RM7..| +000000d0 1e 57 2b a8 5d e7 43 b9 a0 98 47 8b ff 40 a9 14 |.W+.].C...G..@..| +000000e0 9e 23 26 c7 47 a7 cb f6 47 |.#&.G...G| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 53 f8 00 fb |........... S...| +00000030 8b be ff 98 74 c9 d9 3d aa 40 4d 0e 05 96 f9 30 |....t..=.@M....0| +00000040 d6 f5 7b f1 bc 31 18 30 5f 24 03 a8 13 02 00 00 |..{..1.0_$......| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 b9 4a b7 2a b5 48 |...........J.*.H| +00000090 bc ba 18 3e 1a 99 bd fa 0d fc 2a 5d 52 93 b5 97 |...>......*]R...| +000000a0 5c 17 03 03 02 6d 30 8f 19 00 1c fa 90 a7 6c 08 |\....m0.......l.| +000000b0 6f 5a e8 d8 e0 3e 81 30 f1 11 85 7e 35 47 b3 d0 |oZ...>.0...~5G..| +000000c0 48 95 ce af e6 2f fc 22 0a 5f 56 bd 1c 7d 8c 48 |H..../."._V..}.H| +000000d0 f3 ad b7 5b 2e 4b d8 d1 16 46 7a ba c3 71 02 3c |...[.K...Fz..q.<| +000000e0 54 75 b8 92 02 b1 b9 cc 15 c4 fa d1 2d ba 0d 9f |Tu..........-...| +000000f0 65 a1 78 0d 8f d6 1c be fa 42 1f d7 48 1a 8e 11 |e.x......B..H...| +00000100 64 4c 12 ef bd 65 9d b4 31 18 4f 2a 77 c4 1f 1b |dL...e..1.O*w...| +00000110 90 90 37 ea 59 aa 05 bf 45 04 fb e8 a9 3f f9 11 |..7.Y...E....?..| +00000120 f9 25 95 fc d4 8e 5c 84 19 f3 4c e4 05 c3 db 8c |.%....\...L.....| +00000130 07 f9 b3 b0 6d ce d3 14 aa 78 17 f9 2f 14 1b bc |....m....x../...| +00000140 4b 23 29 f1 2e 7c 3b 71 9b cf 0b d5 02 48 5e ce |K#)..|;q.....H^.| +00000150 9c 43 dd 29 17 42 0b 9d 0e a7 a7 93 e1 37 cc 97 |.C.).B.......7..| +00000160 df 0f 2d d3 f7 01 08 34 5f bd ad 12 12 6f 87 56 |..-....4_....o.V| +00000170 4e 99 16 f6 6e 61 5c f0 0e 30 0b d5 38 37 70 97 |N...na\..0..87p.| +00000180 ed e1 79 74 00 cc 55 be a9 32 7d 72 50 27 42 c9 |..yt..U..2}rP'B.| +00000190 99 64 ea bd 3e c8 4f b0 cc 31 ef 10 57 9f c1 02 |.d..>.O..1..W...| +000001a0 ca db f6 d6 53 94 d2 83 57 71 e9 06 7a dd 46 3b |....S...Wq..z.F;| +000001b0 b1 2c f8 87 1c 8b 8a 04 05 2f d0 32 54 9a 80 33 |.,......./.2T..3| +000001c0 b2 95 e5 62 71 e9 1a 3b ea 64 ee 81 29 c4 ea 53 |...bq..;.d..)..S| +000001d0 de 6b 27 b1 04 48 27 ba 7f 28 aa 9e 15 82 49 a9 |.k'..H'..(....I.| +000001e0 43 3d d3 33 82 50 a9 4e 38 ed 8d f8 e8 0e 11 ab |C=.3.P.N8.......| +000001f0 8b 6e 63 e9 c1 cf ee 45 4f a0 62 e7 2e 00 b8 61 |.nc....EO.b....a| +00000200 2a 29 5e 04 e2 81 11 b3 64 f3 b5 b0 ec ae 63 6c |*)^.....d.....cl| +00000210 27 56 ac f2 09 d3 a4 c8 18 4a 55 c8 ff fd 8b 42 |'V.......JU....B| +00000220 63 00 3a c9 25 40 b7 8d 17 f3 95 76 7b 01 cf bc |c.:.%@.....v{...| +00000230 9b a7 4c 03 4a 7d 3c 54 16 8f 84 ca 2f 1a f5 12 |..L.J}.| +00000330 f1 1e 11 c7 72 f5 65 b4 03 38 f2 48 16 a9 20 31 |....r.e..8.H.. 1| +00000340 c2 52 4c 33 92 70 45 91 19 f4 5c 08 77 49 af 25 |.RL3.pE...\.wI.%| +00000350 8e b5 bd 3f e3 93 dc e6 26 b0 8a 30 69 f1 86 17 |...?....&..0i...| +00000360 72 31 66 87 2f d4 42 70 4c e0 58 61 6e b2 38 0b |r1f./.BpL.Xan.8.| +00000370 13 ad 32 83 14 81 d4 af dd 9f 17 09 af 3b 64 78 |..2..........;dx| +00000380 c8 63 da 05 70 47 54 f9 c6 f5 f8 e6 97 e1 d0 87 |.c..pGT.........| +00000390 aa 5a e7 5b d3 a3 b3 ce be 56 30 e7 4d ad 43 bd |.Z.[.....V0.M.C.| +000003a0 5e 88 9a ef 34 78 06 eb 6f 8f 04 39 47 6a c2 3d |^...4x..o..9Gj.=| +000003b0 ba 17 03 03 00 45 89 37 db 55 b2 9e 6e 31 a0 9b |.....E.7.U..n1..| +000003c0 97 51 27 13 b0 7e 2e 85 4a 9b 72 b0 fe c5 e4 12 |.Q'..~..J.r.....| +000003d0 fd ea 29 d5 bb ae a2 24 e2 0d b4 cd 28 92 5c 88 |..)....$....(.\.| +000003e0 98 b4 e4 8e a8 46 c6 a0 0e c0 73 ba f7 62 3a 43 |.....F....s..b:C| +000003f0 1a c7 d3 4b 5b 47 7b 44 8b bb 7b 17 03 03 00 a3 |...K[G{D..{.....| +00000400 f1 5f 26 2b 1c 99 6d 1d 55 bc a7 2f ae c8 3a ed |._&+..m.U../..:.| +00000410 5a 16 3c 83 e8 d4 18 7e 84 fa ba 21 0f 30 b0 05 |Z.<....~...!.0..| +00000420 ec 45 92 53 80 7a 78 d4 9e e0 02 e9 11 74 a6 e2 |.E.S.zx......t..| +00000430 87 7e 43 26 c0 18 46 6b 28 e5 f4 92 89 5c 0d b5 |.~C&..Fk(....\..| +00000440 8d 90 55 4f 3b 0a f4 ba 1b fb 60 54 46 23 03 28 |..UO;.....`TF#.(| +00000450 6e c3 3b 4d 69 62 65 d5 4e 95 46 c9 f2 8d ae f9 |n.;Mibe.N.F.....| +00000460 53 a6 65 da ca 1e b7 f7 80 a8 97 97 ca 38 14 a5 |S.e..........8..| +00000470 34 81 e2 68 12 fb 45 90 c2 f9 c9 70 fe 28 b8 b5 |4..h..E....p.(..| +00000480 6c 1d 2c d4 07 69 1d eb 1f 4b df ba ca 5e e0 65 |l.,..i...K...^.e| +00000490 ad ee be 41 02 78 23 19 b9 ea 1d 65 20 43 0e 3d |...A.x#....e C.=| +000004a0 11 03 b3 |...| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 88 0d 45 f0 61 |..........E..E.a| +00000010 a3 d0 7b 33 9e 17 c5 c3 6f 8f f6 67 b8 03 65 5f |..{3....o..g..e_| +00000020 bf 94 e9 1d 58 eb 4d 12 68 8a 96 42 6f 08 08 b8 |....X.M.h..Bo...| +00000030 be ce 2c f0 c4 00 d4 22 e6 94 09 05 f2 a7 77 0f |..,...."......w.| +00000040 48 e9 5c 6c e9 b2 9a d6 ff 48 2b 08 9a ea 23 1a |H.\l.....H+...#.| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 2a f5 09 7f 7b 5f 8a ff d3 cc 16 |.....*...{_.....| +00000010 d1 d3 38 76 5c f7 e3 ee f3 72 b5 92 8e f9 bf 37 |..8v\....r.....7| +00000020 7e dc 61 17 03 03 00 13 66 ba 9e ff 3a 9f 25 74 |~.a.....f...:.%t| +00000030 44 35 70 f4 cf ae dc b0 3c 28 44 |D5p.....<(D| diff --git a/testdata/Server-TLSv13-IssueTicketPreDisable b/testdata/Server-TLSv13-IssueTicketPreDisable new file mode 100644 index 0000000..ed3f55a --- /dev/null +++ b/testdata/Server-TLSv13-IssueTicketPreDisable @@ -0,0 +1,103 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 e4 01 00 00 e0 03 03 4a ec fd a5 c5 |...........J....| +00000010 ef 77 88 18 25 40 50 c8 24 60 45 85 e6 3e 55 86 |.w..%@P.$`E..>U.| +00000020 d1 ea 0e 5f 0b d1 66 7a 1c 90 ad 20 a3 63 23 52 |..._..fz... .c#R| +00000030 d8 c8 f6 79 20 04 8d 07 eb 2f 78 a3 1a 0d 58 af |...y ..../x...X.| +00000040 70 3c ef 4b 90 43 42 67 57 39 bf fa 00 08 13 02 |p<.K.CBgW9......| +00000050 13 03 13 01 00 ff 01 00 00 8f 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 23 00 00 00 16 00 00 00 17 00 00 |.....#..........| +00000090 00 0d 00 1e 00 1c 04 03 05 03 06 03 08 07 08 08 |................| +000000a0 08 09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 |................| +000000b0 06 01 00 2b 00 03 02 03 04 00 2d 00 02 01 01 00 |...+......-.....| +000000c0 33 00 26 00 24 00 1d 00 20 23 61 a3 8f f6 41 bc |3.&.$... #a...A.| +000000d0 08 52 ef 97 01 0e ba 95 f4 33 b6 8d 15 d0 ff ed |.R.......3......| +000000e0 a4 d1 84 23 3b f3 ef 3a 2d |...#;..:-| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 a3 63 23 52 |........... .c#R| +00000030 d8 c8 f6 79 20 04 8d 07 eb 2f 78 a3 1a 0d 58 af |...y ..../x...X.| +00000040 70 3c ef 4b 90 43 42 67 57 39 bf fa 13 02 00 00 |p<.K.CBgW9......| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 80 72 6f c7 2d 22 |...........ro.-"| +00000090 40 51 35 22 9b 97 51 33 60 fa c1 2c d3 0f 25 6a |@Q5"..Q3`..,..%j| +000000a0 4d 17 03 03 02 6d f3 3a 89 a6 9a 1f 2b f4 1a 48 |M....m.:....+..H| +000000b0 e9 bd ef da 9d 7b f0 6c 61 ca 21 82 1b 30 6f 60 |.....{.la.!..0o`| +000000c0 01 72 24 4f ea 66 ef 3b 35 b7 ae d9 45 c9 2a 00 |.r$O.f.;5...E.*.| +000000d0 99 da 50 ae ac 8f 77 a4 e7 b4 de f6 c8 dd b8 f3 |..P...w.........| +000000e0 bc cb 7c c8 cf 2f 63 61 66 16 7f 7f 61 2c 52 c9 |..|../caf...a,R.| +000000f0 8f af 0d e2 55 d7 a4 ed 7e 12 b0 0d ec e9 a4 47 |....U...~......G| +00000100 03 e6 fa d1 6b 2f e3 22 a8 f5 c5 e6 e6 78 63 a1 |....k/.".....xc.| +00000110 b7 00 98 04 e8 fd ff 67 62 dc 89 f4 0d 97 93 4e |.......gb......N| +00000120 85 ec e0 68 f0 04 94 02 49 95 f9 08 99 30 37 d8 |...h....I....07.| +00000130 ad 31 52 1d 1d 23 09 9e 7a 97 45 d3 95 2f 03 2d |.1R..#..z.E../.-| +00000140 64 f7 5b cb 53 f5 89 ef 45 90 72 38 33 aa 62 1e |d.[.S...E.r83.b.| +00000150 b8 3e 00 b2 7f 89 0b 3a e6 17 93 ac 19 7d 09 bd |.>.....:.....}..| +00000160 ca ca 83 87 33 f9 f0 63 f3 4e 7b 47 56 0d cb b5 |....3..c.N{GV...| +00000170 90 81 88 cd 02 78 bf 96 64 c0 ba 58 b5 06 18 04 |.....x..d..X....| +00000180 d9 14 8b 92 74 81 76 b3 23 d9 ad 4c 8b 73 61 36 |....t.v.#..L.sa6| +00000190 64 d9 b6 2e 98 7e 7f d4 14 6e 4c a4 b4 71 35 5b |d....~...nL..q5[| +000001a0 4d e7 10 a8 b3 bb 40 5d 9f de 67 bb ae 0c 97 8b |M.....@]..g.....| +000001b0 25 cf cb aa 13 44 9f cb ff 2e 1c 54 ca de cb 13 |%....D.....T....| +000001c0 f9 c7 0e 49 9d d0 b3 d5 0e 29 3c 50 b9 2b 56 1f |...I.....).1{........| +00000430 06 d6 19 09 44 c2 8f 7c ef bd ea 06 a6 8f 38 42 |....D..|......8B| +00000440 1b a1 be 12 1f 72 38 49 96 e4 74 2f 42 19 2c 55 |.....r8I..t/B.,U| +00000450 16 45 a9 e0 a8 76 6d 36 68 84 fd 0e 40 44 df 93 |.E...vm6h...@D..| +00000460 ae 12 79 78 4c ec 72 16 fe 54 c0 14 ac 47 ed 88 |..yxL.r..T...G..| +00000470 78 98 c8 cb ca 49 de fd 12 e1 96 d0 c7 89 ee 89 |x....I..........| +00000480 df d5 71 98 8a 42 7e 3e 24 5a 64 44 19 96 cc e4 |..q..B~>$ZdD....| +00000490 9c f2 8e 52 8b 1d 39 15 af c7 cd 54 d9 84 01 ef |...R..9....T....| +000004a0 fc ac 54 |..T| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 a6 fe 34 ee 91 |..........E..4..| +00000010 b0 c5 35 55 cf 70 3f d4 5d 06 76 28 c3 b5 a9 26 |..5U.p?.].v(...&| +00000020 38 18 ed bb bb bb be e7 4b 6d 61 3e 8f 65 e9 e3 |8.......Kma>.e..| +00000030 b6 4f 5d 50 46 2c 81 a8 fd 47 aa c8 c4 e8 f9 a4 |.O]PF,...G......| +00000040 e7 c7 f0 c5 fa e3 9c b7 be 09 c9 37 c1 7f 1c ff |...........7....| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 1b 5e f2 20 7a 1c 27 36 12 e7 9a |......^. z.'6...| +00000010 05 9f fb 12 38 df 1d a0 3e 90 9a 42 4d ca 3a 54 |....8...>..BM.:T| +00000020 db 2c f0 17 03 03 00 13 b1 e4 a6 eb ad 47 ba 4c |.,...........G.L| +00000030 38 2c ee ee f9 a5 8a 41 2f ce 3d |8,.....A/.=| diff --git a/testdata/Server-TLSv13-P256 b/testdata/Server-TLSv13-P256 new file mode 100644 index 0000000..86085b0 --- /dev/null +++ b/testdata/Server-TLSv13-P256 @@ -0,0 +1,106 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 f9 01 00 00 f5 03 03 3f 2f 76 da 5e |...........?/v.^| +00000010 bc ca 96 5b e3 c5 ff 45 18 e9 dc 7e b3 e8 97 f5 |...[...E...~....| +00000020 d1 d5 19 c0 4d a4 5d ce 34 1b e4 20 5f fe 5f 0c |....M.].4.. _._.| +00000030 88 92 65 b9 c6 ac 7f 3e dc a3 f7 ad e2 21 08 41 |..e....>.....!.A| +00000040 f8 36 e4 61 67 71 69 56 7f 6b d1 fc 00 08 13 02 |.6.agqiV.k......| +00000050 13 03 13 01 00 ff 01 00 00 a4 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 04 00 02 00 17 00 16 00 00 |................| +00000080 00 17 00 00 00 0d 00 1e 00 1c 04 03 05 03 06 03 |................| +00000090 08 07 08 08 08 09 08 0a 08 0b 08 04 08 05 08 06 |................| +000000a0 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 2d 00 |.......+......-.| +000000b0 02 01 01 00 33 00 47 00 45 00 17 00 41 04 d3 57 |....3.G.E...A..W| +000000c0 de 53 6a 81 d5 e8 c2 68 cd 05 90 9b 0e b2 7e 5d |.Sj....h......~]| +000000d0 43 4c 66 f1 28 53 53 00 1a a5 9b b3 ae e0 3e b7 |CLf.(SS.......>.| +000000e0 72 4b 29 c6 2d 96 39 3a 1c a2 ef 04 96 22 df ea |rK).-.9:....."..| +000000f0 15 f5 ff bb 36 ed 3a 3f 67 55 ba 48 10 45 |....6.:?gU.H.E| +>>> Flow 2 (server to client) +00000000 16 03 03 00 9b 02 00 00 97 03 03 00 00 00 00 00 |................| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 5f fe 5f 0c |........... _._.| +00000030 88 92 65 b9 c6 ac 7f 3e dc a3 f7 ad e2 21 08 41 |..e....>.....!.A| +00000040 f8 36 e4 61 67 71 69 56 7f 6b d1 fc 13 02 00 00 |.6.agqiV.k......| +00000050 4f 00 2b 00 02 03 04 00 33 00 45 00 17 00 41 04 |O.+.....3.E...A.| +00000060 1e 18 37 ef 0d 19 51 88 35 75 71 b5 e5 54 5b 12 |..7...Q.5uq..T[.| +00000070 2e 8f 09 67 fd a7 24 20 3e b2 56 1c ce 97 28 5e |...g..$ >.V...(^| +00000080 f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 |.+-O....lK[.V.2B| +00000090 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |.X..I..h.A.Vk.Z.| +000000a0 14 03 03 00 01 01 17 03 03 00 17 e2 0e 2c fc 9b |.............,..| +000000b0 61 70 e2 5f b9 e5 a5 ad ce fb df fa be ae 9a 5b |ap._...........[| +000000c0 cc 99 17 03 03 02 6d 87 74 85 83 f2 51 98 a5 75 |......m.t...Q..u| +000000d0 09 f0 6d 0f dd 16 a7 12 12 fb ec 98 6e 56 a4 ed |..m.........nV..| +000000e0 94 18 6b 28 6b ef 80 bd 28 3b f4 ee 05 80 d2 ff |..k(k...(;......| +000000f0 2f d4 6b b5 d3 b6 91 61 b7 8e 1b db 60 cf f5 4b |/.k....a....`..K| +00000100 3b 68 78 4a 09 2d a3 49 c0 8a 06 e5 2c 62 08 5d |;hxJ.-.I....,b.]| +00000110 c4 5d 03 04 5e 3e 25 9d 30 24 af b0 a3 2e 8c 65 |.]..^>%.0$.....e| +00000120 fb 6f 34 94 e9 d9 d6 34 0e a9 44 8a 9e b7 1a 13 |.o4....4..D.....| +00000130 26 b7 b2 16 c2 79 05 e8 0e 99 bd 7a cc c8 83 a4 |&....y.....z....| +00000140 60 1d cb 5c 02 8a 1f b7 4f c4 2d cd 96 e4 7b 39 |`..\....O.-...{9| +00000150 5a 45 60 30 82 9f 8f 30 56 11 7b 0d 6e 7e 95 54 |ZE`0...0V.{.n~.T| +00000160 d0 ac 09 8e 3b 49 14 de d3 8b a1 e4 4d f7 65 8d |....;I......M.e.| +00000170 88 46 71 7a 29 ea 05 b4 66 e6 76 db b7 7d 56 ce |.Fqz)...f.v..}V.| +00000180 e0 ba 47 b5 75 c1 14 42 7e af 87 f3 94 bf 75 e3 |..G.u..B~.....u.| +00000190 ee 54 ea 4c 8c 69 fd 63 01 1c 0e 38 84 e6 04 c3 |.T.L.i.c...8....| +000001a0 a8 3d 42 18 87 a2 f0 b4 4d ef 29 8d 48 01 b9 f4 |.=B.....M.).H...| +000001b0 8b 1e b1 72 bf e4 9a 6d 80 d7 c2 e0 a7 a7 0a 3f |...r...m.......?| +000001c0 45 f4 72 94 56 19 6b f3 4c 3e a6 1e 87 cd d3 a2 |E.r.V.k.L>......| +000001d0 49 b6 e7 56 b9 dd 2b f6 66 0a 6a 55 75 63 f9 c3 |I..V..+.f.jUuc..| +000001e0 d2 a6 ea a0 04 09 6b 75 eb 77 6b 9e 4b a4 6d f5 |......ku.wk.K.m.| +000001f0 44 01 37 ee 21 15 f7 3e 6e 6f fc dc be 44 43 26 |D.7.!..>no...DC&| +00000200 dd 7a ab 13 67 58 8d cb 02 78 b9 71 07 22 12 d2 |.z..gX...x.q."..| +00000210 cf 87 50 ff 04 d9 7a f2 73 8c 77 9e 5b 17 b2 aa |..P...z.s.w.[...| +00000220 2a db b2 a2 f4 5b c4 0d e2 84 a3 fe 4d b1 02 26 |*....[......M..&| +00000230 7d ba 76 2a 0e d1 87 52 c7 5f 97 07 fd b7 25 1b |}.v*...R._....%.| +00000240 2a 52 0d 30 59 84 73 a0 d7 db 75 6d 74 05 a2 3b |*R.0Y.s...umt..;| +00000250 91 69 f3 a3 43 bc 44 f9 ce f4 85 a1 38 5a e2 55 |.i..C.D.....8Z.U| +00000260 f6 e8 e2 ca 3b c2 fd 39 0f f4 ae 86 08 24 d4 c7 |....;..9.....$..| +00000270 10 44 c0 bf 9b 47 d9 da 07 52 4d 88 71 d4 14 69 |.D...G...RM.q..i| +00000280 66 8b cc 44 09 1b 90 b0 a5 7c 96 3c 94 99 cd c2 |f..D.....|.<....| +00000290 ca 0b af 53 c0 31 a2 5a df 54 76 e4 af 66 5d ff |...S.1.Z.Tv..f].| +000002a0 7c 21 c9 06 b8 d9 7e 1f 46 97 c8 ea e0 90 f2 db ||!....~.F.......| +000002b0 9b 52 04 a8 91 20 15 c8 fc 24 09 d7 f9 48 20 dc |.R... ...$...H .| +000002c0 18 22 d1 e2 19 3d 53 dd e4 21 db 8c 87 7d d7 bf |."...=S..!...}..| +000002d0 f7 93 a6 a5 81 b5 53 59 15 a8 80 2e 3b 4f b0 d4 |......SY....;O..| +000002e0 f3 66 56 14 6e a1 6b 3e 75 b1 8e fa 0d 52 96 b1 |.fV.n.k>u....R..| +000002f0 08 b1 b0 ce 0c c6 0a 5e 54 0f a3 5a cd 6c db 6a |.......^T..Z.l.j| +00000300 0a 6a 52 11 b5 97 7b 67 e3 3e 84 22 76 3a f1 96 |.jR...{g.>."v:..| +00000310 70 bf 9c a6 62 03 30 a7 69 46 ec 9a 61 1e 37 6f |p...b.0.iF..a.7o| +00000320 7d 24 d6 6c 8a e5 72 3a 0a ef e8 d3 d6 fe 28 c8 |}$.l..r:......(.| +00000330 60 ff d7 2e 17 03 03 00 99 ca f3 5e cb 8c b2 0b |`..........^....| +00000340 87 4e 59 89 38 f5 f1 3c c4 e1 6a 11 2d f3 ef 7d |.NY.8..<..j.-..}| +00000350 b6 85 ff bb 84 8f cb db 7f 02 50 23 93 db b3 0a |..........P#....| +00000360 2c 32 cb ed 08 ae 6a 3e 30 b8 a5 c2 9c 85 0c 87 |,2....j>0.......| +00000370 44 68 8b 47 31 75 a0 c3 2c 32 2e 61 40 da 4b 0a |Dh.G1u..,2.a@.K.| +00000380 07 ef 2b 6b fa 2f 66 87 ff f1 0e 5e b0 db 44 3d |..+k./f....^..D=| +00000390 3c fc a7 94 17 f3 0b a5 50 68 7b 65 48 8e 78 ce |<.......Ph{eH.x.| +000003a0 d7 71 fa ae 58 50 62 33 98 b2 a2 27 b1 e0 66 fb |.q..XPb3...'..f.| +000003b0 65 6a 94 21 38 e8 40 aa 4f d7 02 31 45 e8 d3 e0 |ej.!8.@.O..1E...| +000003c0 5f 66 d4 2f 26 9f b2 72 b7 bc 43 ce f1 2a 0e 61 |_f./&..r..C..*.a| +000003d0 f1 91 17 03 03 00 45 c0 25 ac 1e 0b 4e 2c 61 9c |......E.%...N,a.| +000003e0 c7 80 f1 f7 bf d4 c6 a9 29 3f 0c 08 8d f0 70 7c |........)?....p|| +000003f0 6f 96 2c 3e 32 7f a6 10 17 19 81 49 2d a7 f7 3f |o.,>2......I-..?| +00000400 04 20 7d 52 c2 e8 cc 61 b2 16 5b 8b 3e 1a a9 2f |. }R...a..[.>../| +00000410 9c 5e a7 74 88 3d 8a c8 90 df 9a 17 17 03 03 00 |.^.t.=..........| +00000420 a3 cf b5 d2 52 49 27 95 5f dd 9b 37 ed 74 7b 17 |....RI'._..7.t{.| +00000430 8b 7f f3 67 3c 91 2f 1e b6 17 4f ba a7 b1 92 99 |...g<./...O.....| +00000440 32 32 7e 72 95 90 a0 92 08 c3 da 30 31 85 ee bb |22~r.......01...| +00000450 8f 8d d4 d8 c5 28 19 10 71 f0 b3 15 45 86 e0 09 |.....(..q...E...| +00000460 ee e4 96 a0 90 c5 df 81 8f d1 38 b2 e0 33 95 3b |..........8..3.;| +00000470 33 9d e0 3e 93 3d 6a 12 60 44 43 9e b0 5c 16 82 |3..>.=j.`DC..\..| +00000480 92 b8 84 0e 56 19 b9 b6 eb 3c 37 3e 9b ee 2a 6a |....V....<7>..*j| +00000490 13 4a bb 3d 78 21 79 0e 6f cc 34 89 91 95 03 a6 |.J.=x!y.o.4.....| +000004a0 19 e2 81 37 a6 9d 30 28 42 da f4 69 4e 42 4b e4 |...7..0(B..iNBK.| +000004b0 ca 23 c5 1e 56 24 cc ba b0 85 21 ef 44 04 cb d8 |.#..V$....!.D...| +000004c0 aa cd 5d 55 |..]U| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 43 65 76 31 fa |..........ECev1.| +00000010 2c a7 2e 96 92 82 cf eb 91 3d 8b eb 01 d3 af da |,........=......| +00000020 67 ea 4d 75 47 8f 42 34 7a 2d 0a b0 d1 4c 08 c0 |g.MuG.B4z-...L..| +00000030 c7 76 7e 99 93 4a 06 b2 d9 95 df f9 c1 29 25 e6 |.v~..J.......)%.| +00000040 24 6d ea 73 00 24 36 a9 62 30 9d a4 aa 6c 2f c8 |$m.s.$6.b0...l/.| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 6e bb 52 84 cf a6 71 d5 b9 ac c2 |.....n.R...q....| +00000010 29 1a 0b db be a4 bb bd 6c f4 2e c8 eb f0 bb eb |).......l.......| +00000020 d3 f8 69 17 03 03 00 13 19 ad 85 21 63 f6 38 df |..i........!c.8.| +00000030 35 41 af 12 75 63 e8 fa 38 5e 50 |5A..uc..8^P| diff --git a/testdata/Server-TLSv13-RSA-RSAPSS b/testdata/Server-TLSv13-RSA-RSAPSS new file mode 100644 index 0000000..21f57b7 --- /dev/null +++ b/testdata/Server-TLSv13-RSA-RSAPSS @@ -0,0 +1,101 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 c6 01 00 00 c2 03 03 39 95 ab cc 1c |...........9....| +00000010 64 13 9d 19 2e 3e 73 33 48 b1 a9 f7 88 14 5a 83 |d....>s3H.....Z.| +00000020 19 f7 b5 08 8d e4 80 09 72 21 99 20 23 ad 4c 2c |........r!. #.L,| +00000030 66 84 1e e8 c3 0c 9f 66 19 76 df a3 e0 62 cd 7d |f......f.v...b.}| +00000040 95 85 70 4f 37 fb 39 58 50 b1 d5 7b 00 08 13 02 |..pO7.9XP..{....| +00000050 13 03 13 01 00 ff 01 00 00 71 00 00 00 0e 00 0c |.........q......| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 16 00 00 00 17 00 00 00 0d 00 04 |................| +00000090 00 02 08 04 00 2b 00 03 02 03 04 00 2d 00 02 01 |.....+......-...| +000000a0 01 00 33 00 26 00 24 00 1d 00 20 be 29 89 8d 44 |..3.&.$... .)..D| +000000b0 4d e5 51 88 7a 1a 56 52 a8 86 74 13 0e e9 a5 a7 |M.Q.z.VR..t.....| +000000c0 b6 7f 38 b3 ef 62 e6 b0 c5 2a 0a |..8..b...*.| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 23 ad 4c 2c |........... #.L,| +00000030 66 84 1e e8 c3 0c 9f 66 19 76 df a3 e0 62 cd 7d |f......f.v...b.}| +00000040 95 85 70 4f 37 fb 39 58 50 b1 d5 7b 13 02 00 00 |..pO7.9XP..{....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 49 c6 88 9c 3b 2f |..........I...;/| +00000090 3a 0a e6 8e 75 d0 39 11 ad 08 87 17 2c 14 96 28 |:...u.9.....,..(| +000000a0 85 17 03 03 02 6d 2a d6 89 4d 5d f3 6c 28 97 dd |.....m*..M].l(..| +000000b0 4e 45 88 e8 90 a4 f3 45 86 cf 59 d6 61 6e 1a a7 |NE.....E..Y.an..| +000000c0 b7 35 7e 9c 6e 11 19 c4 1b 89 b9 5a 7c aa 1f 96 |.5~.n......Z|...| +000000d0 e2 36 6d 54 09 12 2f 28 12 20 a3 41 06 bd 44 3c |.6mT../(. .A..D<| +000000e0 73 be d3 8c 78 18 a1 63 ad f9 9d 41 20 5e 32 55 |s...x..c...A ^2U| +000000f0 8e 18 c1 d8 b0 93 13 7e 88 a0 af 8a 59 e2 af 43 |.......~....Y..C| +00000100 d2 82 66 ba c5 a1 97 94 e8 63 40 1b 8f c4 eb 49 |..f......c@....I| +00000110 19 91 65 e9 54 d3 90 76 d6 f8 ff 15 20 31 3c 86 |..e.T..v.... 1<.| +00000120 88 8a 43 be 77 a0 28 de fa 9f d5 30 14 a8 35 2f |..C.w.(....0..5/| +00000130 5e ee 9d cf b5 69 d1 f5 f6 55 d1 1a 61 3f 4c a1 |^....i...U..a?L.| +00000140 97 38 5b 87 7e ce 88 23 8a d0 bd fc 4b c5 da f7 |.8[.~..#....K...| +00000150 25 6c 6c 0b ec 61 50 72 97 6b f7 fe 9b 5b 5a f9 |%ll..aPr.k...[Z.| +00000160 59 19 71 10 74 2d 14 8c 1b 52 8b 39 1c 56 ea 7e |Y.q.t-...R.9.V.~| +00000170 7a c9 8f 7c bd db 1e c5 02 9f 42 8b 63 ee 13 52 |z..|......B.c..R| +00000180 fe 46 40 de 7b 97 27 b0 16 87 75 96 c7 1c 88 5d |.F@.{.'...u....]| +00000190 2e 64 7f a8 df e0 16 b9 ee 27 7e b3 98 99 f7 4a |.d.......'~....J| +000001a0 83 05 78 bb 59 07 8e 1a 46 1d 0f 45 87 ae d9 ae |..x.Y...F..E....| +000001b0 6f 42 ed b1 72 14 8c 9d 33 72 95 ac 12 bb a0 20 |oB..r...3r..... | +000001c0 56 a8 8a 23 e4 51 6a 89 f5 8e bc 55 5a e2 8d 78 |V..#.Qj....UZ..x| +000001d0 84 24 55 99 cf 37 61 8c 7e 46 17 f3 26 ca 27 ec |.$U..7a.~F..&.'.| +000001e0 f4 04 f6 76 1d cf 82 0c bd 85 82 81 06 f1 96 ce |...v............| +000001f0 78 54 6c eb a0 f8 cf 30 6a 10 17 08 e6 94 83 4f |xTl....0j......O| +00000200 56 34 80 ef ac fa ab e7 59 9e 6b f9 f8 38 76 cc |V4......Y.k..8v.| +00000210 3b 09 b0 16 3f 3f 5c d3 6a ad d9 2c 65 d8 ce b4 |;...??\.j..,e...| +00000220 19 53 c4 c9 d1 82 e8 19 72 ec bc 85 ef 3a 6e e5 |.S......r....:n.| +00000230 ba 3c f8 37 98 98 80 47 5f 47 4f cd ed f5 0e bc |.<.7...G_GO.....| +00000240 4e 14 a2 7d 8d 43 0b 18 ba 3b 10 50 e4 18 fc ac |N..}.C...;.P....| +00000250 0e 01 21 73 68 da 50 51 8a 64 b6 18 28 ca e3 a4 |..!sh.PQ.d..(...| +00000260 aa d2 5c 28 ff 64 fd cb 28 00 db b1 5c bf 75 81 |..\(.d..(...\.u.| +00000270 bb d2 8c df 5c 26 70 1d d6 fe 7a 94 65 27 93 72 |....\&p...z.e'.r| +00000280 bc ba 17 92 8f be 61 ec f5 88 04 ed fb cc f3 5c |......a........\| +00000290 71 d0 a4 5d 13 a6 a3 82 89 e8 9e 1a 8e 31 fd 2f |q..].........1./| +000002a0 57 53 98 d5 1f c4 3f 8e 92 7f 1b 90 a3 ad 6c 96 |WS....?.......l.| +000002b0 42 cc f2 f0 1c 8d 3f 31 fd b2 53 29 79 16 9a 96 |B.....?1..S)y...| +000002c0 fd d6 fe d4 3f 13 aa 39 73 d4 73 6d 9a ff f6 db |....?..9s.sm....| +000002d0 52 0a 1e 76 71 0f d3 ee de a8 b3 05 3b 24 c4 72 |R..vq.......;$.r| +000002e0 67 78 f1 be df c5 c0 87 32 60 28 96 8e b2 2e 3f |gx......2`(....?| +000002f0 7d e9 aa b7 66 57 ee 67 e6 ac 70 da 60 ce c2 00 |}...fW.g..p.`...| +00000300 55 2f 20 25 39 a5 5e b9 65 c3 00 63 c7 5a a9 31 |U/ %9.^.e..c.Z.1| +00000310 de fe 65 17 03 03 00 99 95 83 6d be 56 ef 4f a3 |..e.......m.V.O.| +00000320 96 5f a8 3d d5 a1 f3 8e 9a 8c 40 35 f4 12 2c 0a |._.=......@5..,.| +00000330 b3 02 3b d2 14 d8 a4 f1 12 01 be e1 8a 6b 5f 01 |..;..........k_.| +00000340 71 de ac 70 e9 7a 90 78 2e 2a a8 29 64 20 85 dd |q..p.z.x.*.)d ..| +00000350 57 09 cf 48 29 d0 63 42 bc 9b ec 0c e2 2d 41 d0 |W..H).cB.....-A.| +00000360 cb d8 68 46 b7 17 fc 1d 95 12 5a 4c c3 10 67 32 |..hF......ZL..g2| +00000370 f7 7a 14 55 63 fb 57 6e 59 ee b6 66 b8 65 e1 37 |.z.Uc.WnY..f.e.7| +00000380 e6 7c 6c 07 8b d1 84 80 01 11 ce 7f 20 f0 4d 42 |.|l......... .MB| +00000390 a7 67 01 12 e6 b5 9b d4 6a fe 38 37 71 ca 60 d6 |.g......j.87q.`.| +000003a0 12 d7 00 b5 26 c3 97 1d 9f 37 6a 82 31 ef c3 12 |....&....7j.1...| +000003b0 bc 17 03 03 00 45 65 1e cf 1f 1e 73 93 8d 66 54 |.....Ee....s..fT| +000003c0 47 b0 73 9f d1 a4 9d 3b b0 72 b4 f2 5f 06 e1 d2 |G.s....;.r.._...| +000003d0 1f bb 3d 13 48 7c 7a e0 19 15 9f aa a5 ed 09 18 |..=.H|z.........| +000003e0 2e 4e 8a cd 66 2b 9c b3 fe 99 b0 57 06 2e b3 a0 |.N..f+.....W....| +000003f0 79 92 c1 bb 0e 29 44 02 f1 b0 43 17 03 03 00 a3 |y....)D...C.....| +00000400 52 cd d9 d7 60 1c f5 06 83 aa 2f e0 0c 0f 5e 6d |R...`...../...^m| +00000410 0f 29 93 b9 ae 50 04 c6 f7 d3 ff c7 d1 ac 9d 43 |.)...P.........C| +00000420 d7 b5 76 7a 16 b7 2c b7 79 48 a4 c3 28 2a 86 10 |..vz..,.yH..(*..| +00000430 d1 24 7c 04 ed af 1f 8a 0b 18 29 97 7a 7a 47 3f |.$|.......).zzG?| +00000440 1f fe ba 9c 72 d9 9b ae 9b 83 5f f4 5a 4f 10 b8 |....r....._.ZO..| +00000450 e5 45 35 76 77 a2 ac 99 1c bc 78 cf 6f 62 ef ef |.E5vw.....x.ob..| +00000460 9b 1b 90 eb 95 6b a1 25 82 b7 c1 1b 6f da 10 4c |.....k.%....o..L| +00000470 aa 3e a8 ba dd 77 b1 39 a0 b2 6a 11 18 44 2a 8d |.>...w.9..j..D*.| +00000480 58 9a 53 31 e1 d1 ec 8b 47 95 63 67 44 67 8d 09 |X.S1....G.cgDg..| +00000490 2f 16 f5 19 cd 65 1d 52 d7 bd 19 f0 bb ec 7b 55 |/....e.R......{U| +000004a0 33 4f 84 |3O.| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 07 3f db d9 c7 |..........E.?...| +00000010 05 fd c4 0c 2d ae ee d8 d7 e7 ac 46 19 a2 17 e5 |....-......F....| +00000020 5e 10 30 65 05 be e0 c7 1e b3 e2 16 a4 d6 69 e1 |^.0e..........i.| +00000030 2c ff 18 ba e4 8f d0 3d 12 45 df c3 d4 08 0d e6 |,......=.E......| +00000040 94 6e 83 6d 99 9d f3 f1 02 48 6b 6f d1 2d f0 c6 |.n.m.....Hko.-..| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 2a 3d 96 b4 6a 9e 7f 7f ca e0 8e |.....*=..j......| +00000010 41 4e bd 82 86 61 b8 59 19 e4 97 02 c2 00 7e 69 |AN...a.Y......~i| +00000020 81 b0 64 17 03 03 00 13 63 91 94 1a a3 51 bf 95 |..d.....c....Q..| +00000030 9e 09 a2 a1 f0 01 57 93 00 71 49 |......W..qI| diff --git a/testdata/Server-TLSv13-Resume b/testdata/Server-TLSv13-Resume new file mode 100644 index 0000000..fa10f3e --- /dev/null +++ b/testdata/Server-TLSv13-Resume @@ -0,0 +1,66 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 01 a4 01 00 01 a0 03 03 92 e8 fa 14 82 |................| +00000010 03 7c cd fe 01 82 55 99 8b fd 04 ff 88 82 98 c9 |.|....U.........| +00000020 72 18 3b 2e 0a de fc a4 44 9f 1d 20 c0 df df c9 |r.;.....D.. ....| +00000030 1d ed 19 9e 2d ce 57 f6 95 54 67 76 77 64 c7 f4 |....-.W..Tgvwd..| +00000040 ad 18 7d d8 58 6f 08 30 a5 a4 50 cd 00 08 13 02 |..}.Xo.0..P.....| +00000050 13 03 13 01 00 ff 01 00 01 4f 00 00 00 0e 00 0c |.........O......| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 23 00 00 00 16 00 00 00 17 00 00 |.....#..........| +00000090 00 0d 00 1e 00 1c 04 03 05 03 06 03 08 07 08 08 |................| +000000a0 08 09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 |................| +000000b0 06 01 00 2b 00 03 02 03 04 00 2d 00 02 01 01 00 |...+......-.....| +000000c0 33 00 26 00 24 00 1d 00 20 94 44 cd ce 27 a8 43 |3.&.$... .D..'.C| +000000d0 8a ef cd ef d4 74 d4 e4 62 82 00 e6 46 96 e5 aa |.....t..b...F...| +000000e0 d1 44 8a 55 6b d7 25 06 6f 00 29 00 bc 00 87 00 |.D.Uk.%.o.).....| +000000f0 81 50 46 ad c1 db a8 38 86 7b 2b bb fd d0 c3 42 |.PF....8.{+....B| +00000100 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |>...............| +00000110 00 94 68 2c a3 81 51 ed 14 ef 68 ca 42 c5 4c 1f |..h,..Q...h.B.L.| +00000120 90 bf 3c 07 2b e5 52 22 a0 c0 46 db cb f6 b9 a0 |..<.+.R"..F.....| +00000130 b5 56 b0 d6 7f 03 b7 2d 9f a5 2a 25 8e 65 d2 b9 |.V.....-..*%.e..| +00000140 6a f3 e4 7e 79 d7 3d cc b2 3d b6 24 a9 31 82 49 |j..~y.=..=.$.1.I| +00000150 38 16 92 f0 49 97 e2 07 e2 cd 1c 77 d3 e0 00 de |8...I......w....| +00000160 56 11 17 40 00 63 13 00 48 39 8e fd 09 96 08 f3 |V..@.c..H9......| +00000170 81 7c 00 00 00 00 00 31 30 a4 22 35 6e 4a 09 af |.|.....10."5nJ..| +00000180 08 22 97 92 e0 8a eb c0 e0 28 32 f4 8f ed 1e 02 |.".......(2.....| +00000190 a9 b3 43 de f3 04 cb 7b db 01 51 88 46 02 c1 4b |..C....{..Q.F..K| +000001a0 ec fa a8 05 42 a4 00 ae ed |....B....| +>>> Flow 2 (server to client) +00000000 16 03 03 00 80 02 00 00 7c 03 03 00 00 00 00 00 |........|.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 c0 df df c9 |........... ....| +00000030 1d ed 19 9e 2d ce 57 f6 95 54 67 76 77 64 c7 f4 |....-.W..Tgvwd..| +00000040 ad 18 7d d8 58 6f 08 30 a5 a4 50 cd 13 02 00 00 |..}.Xo.0..P.....| +00000050 34 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |4.+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 00 |.........._X.;t.| +00000080 29 00 02 00 00 14 03 03 00 01 01 17 03 03 00 17 |)...............| +00000090 cc 35 3b 89 bc fe dc df 02 d3 00 f8 ef 56 74 6a |.5;..........Vtj| +000000a0 ee af 35 9e d6 91 e1 17 03 03 00 45 07 24 33 da |..5........E.$3.| +000000b0 63 9a eb 15 28 dc e8 60 dc 36 97 12 5e 54 a5 48 |c...(..`.6..^T.H| +000000c0 aa e3 07 35 e7 f0 7c 60 93 d4 4c 24 d7 0d 01 66 |...5..|`..L$...f| +000000d0 d9 b6 e3 c5 ab 9d cf 47 49 f6 4f 87 7a c4 ab 34 |.......GI.O.z..4| +000000e0 df 37 19 a6 f9 36 c8 ea 04 af 9a d7 21 dd 89 e2 |.7...6......!...| +000000f0 79 17 03 03 00 a3 60 8e 39 7e 5d 21 e2 e4 8a 0e |y.....`.9~]!....| +00000100 73 4a 96 09 49 fb 55 b4 68 60 88 0d 01 73 5b d0 |sJ..I.U.h`...s[.| +00000110 42 4d 9a af 22 ae 33 83 16 60 3e 25 e2 fd 76 10 |BM..".3..`>%..v.| +00000120 6e 92 0d 6b 88 c7 54 46 51 bf 86 a4 f4 11 d3 e8 |n..k..TFQ.......| +00000130 29 54 16 31 b2 44 4b 45 5d 3f 97 d9 33 10 ef 92 |)T.1.DKE]?..3...| +00000140 e5 aa 3b 2d 3d 36 ef 85 04 2d 17 66 2a 00 ea 87 |..;-=6...-.f*...| +00000150 9a 95 5e 54 1b 01 f8 5d 34 96 83 cf 28 d4 24 ed |..^T...]4...(.$.| +00000160 c6 9b da 7a 1c d4 a3 5a 53 bb 2f cf 56 f3 ef 99 |...z...ZS./.V...| +00000170 40 e2 34 31 ca 55 c9 7a 02 47 14 8b 7e 04 5a ff |@.41.U.z.G..~.Z.| +00000180 17 f7 95 f0 46 e0 ce cf 8f b0 9f 6b 51 96 d5 f7 |....F......kQ...| +00000190 0b 33 e2 0a 62 4e 05 28 66 |.3..bN.(f| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 66 00 e2 3f 07 |..........Ef..?.| +00000010 02 a4 1d 71 27 2a fe c7 00 1e 2d bc 50 b6 bc 35 |...q'*....-.P..5| +00000020 22 c4 a4 d8 a1 5f fa 10 d7 48 c8 20 94 50 b1 ae |"...._...H. .P..| +00000030 47 8c 62 26 15 79 33 6b 06 0d 19 67 7e 22 7c a5 |G.b&.y3k...g~"|.| +00000040 ca 05 c9 ae c8 66 6b ca 8e f7 7c 35 de 5e c3 25 |.....fk...|5.^.%| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 6a 89 ce e3 1d 13 60 f3 8b 26 97 |.....j.....`..&.| +00000010 3e 5d 9f a8 47 c9 74 f5 66 ad 75 87 57 ec ef b1 |>]..G.t.f.u.W...| +00000020 66 da f0 17 03 03 00 13 95 bd 2d ef d5 30 c1 1b |f.........-..0..| +00000030 bd 54 3d f6 16 02 28 78 a4 4a 24 |.T=...(x.J$| diff --git a/testdata/Server-TLSv13-Resume-HelloRetryRequest b/testdata/Server-TLSv13-Resume-HelloRetryRequest new file mode 100644 index 0000000..2e1cbaf --- /dev/null +++ b/testdata/Server-TLSv13-Resume-HelloRetryRequest @@ -0,0 +1,106 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 01 9e 01 00 01 9a 03 03 75 28 78 ec 6f |...........u(x.o| +00000010 3d d0 60 09 8e 23 dd 91 67 4b e4 2f b0 b7 93 60 |=.`..#..gK./...`| +00000020 3a 4f 92 38 6b 5e 67 ab 49 f4 b8 20 46 e8 0a c4 |:O.8k^g.I.. F...| +00000030 bd 13 ce 09 13 27 a4 5d a4 3b e2 9b 9d ff 17 30 |.....'.].;.....0| +00000040 96 e3 06 1a d6 c6 04 9c f3 9a 15 76 00 08 13 02 |...........v....| +00000050 13 03 13 01 00 ff 01 00 01 49 00 00 00 0e 00 0c |.........I......| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 06 00 04 00 1d 00 17 00 23 |...............#| +00000080 00 00 00 16 00 00 00 17 00 00 00 0d 00 1e 00 1c |................| +00000090 04 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b |................| +000000a0 08 04 08 05 08 06 04 01 05 01 06 01 00 2b 00 03 |.............+..| +000000b0 02 03 04 00 2d 00 02 01 01 00 33 00 26 00 24 00 |....-.....3.&.$.| +000000c0 1d 00 20 a0 26 2f f2 a2 ca d0 ff 0d 5d 9e cc 84 |.. .&/......]...| +000000d0 52 51 07 86 4c 28 44 4e 65 7e 0c a1 9d 50 9c 77 |RQ..L(DNe~...P.w| +000000e0 8a 54 48 00 29 00 bc 00 87 00 81 50 46 ad c1 db |.TH.)......PF...| +000000f0 a8 38 86 7b 2b bb fd d0 c3 42 3e 00 00 00 00 00 |.8.{+....B>.....| +00000100 00 00 00 00 00 00 00 00 00 00 00 94 68 2c a3 81 |............h,..| +00000110 51 ed 14 ef 68 ca 42 c5 4c 1f 90 bf 3c 07 2b e5 |Q...h.B.L...<.+.| +00000120 52 22 a0 c0 46 db cb f6 b9 a0 b5 56 b0 d6 7f 03 |R"..F......V....| +00000130 b7 2d 9f a5 2a 25 8e 65 d2 b9 6a f3 e4 7e 79 d7 |.-..*%.e..j..~y.| +00000140 3d cc b2 3d b6 24 a9 31 82 49 38 16 92 f0 49 97 |=..=.$.1.I8...I.| +00000150 e2 07 e2 cd 1c 77 d3 e0 00 de 56 11 17 40 00 63 |.....w....V..@.c| +00000160 13 00 48 39 8e fd 09 96 08 f3 81 7c 00 00 00 00 |..H9.......|....| +00000170 00 31 30 da 3c 92 3d 0f 55 c9 9e bb 99 c6 e0 ac |.10.<.=.U.......| +00000180 fe 5a 3a 94 7e d6 2a 0a 81 c0 be 8a 4e 1d da 5e |.Z:.~.*.....N..^| +00000190 31 80 97 2d 2a 6a fc 96 03 d2 aa 07 45 f1 78 33 |1..-*j......E.x3| +000001a0 c4 1d 1c |...| +>>> Flow 2 (server to client) +00000000 16 03 03 00 58 02 00 00 54 03 03 cf 21 ad 74 e5 |....X...T...!.t.| +00000010 9a 61 11 be 1d 8c 02 1e 65 b8 91 c2 a2 11 16 7a |.a......e......z| +00000020 bb 8c 5e 07 9e 09 e2 c8 a8 33 9c 20 46 e8 0a c4 |..^......3. F...| +00000030 bd 13 ce 09 13 27 a4 5d a4 3b e2 9b 9d ff 17 30 |.....'.].;.....0| +00000040 96 e3 06 1a d6 c6 04 9c f3 9a 15 76 13 02 00 00 |...........v....| +00000050 0c 00 2b 00 02 03 04 00 33 00 02 00 17 14 03 03 |..+.....3.......| +00000060 00 01 01 |...| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 16 03 03 01 bf 01 00 01 bb 03 |................| +00000010 03 75 28 78 ec 6f 3d d0 60 09 8e 23 dd 91 67 4b |.u(x.o=.`..#..gK| +00000020 e4 2f b0 b7 93 60 3a 4f 92 38 6b 5e 67 ab 49 f4 |./...`:O.8k^g.I.| +00000030 b8 20 46 e8 0a c4 bd 13 ce 09 13 27 a4 5d a4 3b |. F........'.].;| +00000040 e2 9b 9d ff 17 30 96 e3 06 1a d6 c6 04 9c f3 9a |.....0..........| +00000050 15 76 00 08 13 02 13 03 13 01 00 ff 01 00 01 6a |.v.............j| +00000060 00 00 00 0e 00 0c 00 00 09 31 32 37 2e 30 2e 30 |.........127.0.0| +00000070 2e 31 00 0b 00 04 03 00 01 02 00 0a 00 06 00 04 |.1..............| +00000080 00 1d 00 17 00 23 00 00 00 16 00 00 00 17 00 00 |.....#..........| +00000090 00 0d 00 1e 00 1c 04 03 05 03 06 03 08 07 08 08 |................| +000000a0 08 09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 |................| +000000b0 06 01 00 2b 00 03 02 03 04 00 2d 00 02 01 01 00 |...+......-.....| +000000c0 33 00 47 00 45 00 17 00 41 04 79 db 79 c8 0b 77 |3.G.E...A.y.y..w| +000000d0 8b 37 30 65 85 ce 72 49 ab a1 cb 6a 06 00 a6 65 |.70e..rI...j...e| +000000e0 22 51 63 63 16 45 7b 85 ee c3 2e 09 25 d9 a3 49 |"Qcc.E{.....%..I| +000000f0 91 07 35 c4 b6 61 23 9c 91 c1 03 07 ad a2 77 02 |..5..a#.......w.| +00000100 61 93 05 cf 74 36 7a 66 ad 24 00 29 00 bc 00 87 |a...t6zf.$.)....| +00000110 00 81 50 46 ad c1 db a8 38 86 7b 2b bb fd d0 c3 |..PF....8.{+....| +00000120 42 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |B>..............| +00000130 00 00 94 68 2c a3 81 51 ed 14 ef 68 ca 42 c5 4c |...h,..Q...h.B.L| +00000140 1f 90 bf 3c 07 2b e5 52 22 a0 c0 46 db cb f6 b9 |...<.+.R"..F....| +00000150 a0 b5 56 b0 d6 7f 03 b7 2d 9f a5 2a 25 8e 65 d2 |..V.....-..*%.e.| +00000160 b9 6a f3 e4 7e 79 d7 3d cc b2 3d b6 24 a9 31 82 |.j..~y.=..=.$.1.| +00000170 49 38 16 92 f0 49 97 e2 07 e2 cd 1c 77 d3 e0 00 |I8...I......w...| +00000180 de 56 11 17 40 00 63 13 00 48 39 8e fd 09 96 08 |.V..@.c..H9.....| +00000190 f3 81 7c 00 00 00 00 00 31 30 e0 ac 7a 74 d9 50 |..|.....10..zt.P| +000001a0 c1 3b 1b 67 7b 5a 74 b0 39 db dd 92 6f 75 38 31 |.;.g{Zt.9...ou81| +000001b0 10 f4 98 dc ad af eb ac ef 11 0d 96 48 01 f8 10 |............H...| +000001c0 d6 e1 68 bf 88 a3 33 b9 9a b9 |..h...3...| +>>> Flow 4 (server to client) +00000000 16 03 03 00 a1 02 00 00 9d 03 03 00 00 00 00 00 |................| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 46 e8 0a c4 |........... F...| +00000030 bd 13 ce 09 13 27 a4 5d a4 3b e2 9b 9d ff 17 30 |.....'.].;.....0| +00000040 96 e3 06 1a d6 c6 04 9c f3 9a 15 76 13 02 00 00 |...........v....| +00000050 55 00 2b 00 02 03 04 00 33 00 45 00 17 00 41 04 |U.+.....3.E...A.| +00000060 1e 18 37 ef 0d 19 51 88 35 75 71 b5 e5 54 5b 12 |..7...Q.5uq..T[.| +00000070 2e 8f 09 67 fd a7 24 20 3e b2 56 1c ce 97 28 5e |...g..$ >.V...(^| +00000080 f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 |.+-O....lK[.V.2B| +00000090 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |.X..I..h.A.Vk.Z.| +000000a0 00 29 00 02 00 00 17 03 03 00 17 48 f2 b1 a7 11 |.).........H....| +000000b0 68 36 e4 67 b8 e8 d0 6d b8 76 fa 4b 7e bc d0 63 |h6.g...m.v.K~..c| +000000c0 6a 8c 17 03 03 00 45 49 37 80 89 e3 4d b5 60 4a |j.....EI7...M.`J| +000000d0 7c 52 a0 f5 e9 32 85 ad 8a 59 0b 27 66 c7 2f ec ||R...2...Y.'f./.| +000000e0 55 7f 2c 9b 1e ef 0a 11 e1 72 1f 72 b2 10 9f 3f |U.,......r.r...?| +000000f0 bb 51 8f d0 fe e8 62 fd 93 e4 0d e1 57 7f 3a 3c |.Q....b.....W.:<| +00000100 22 b4 ca 20 04 cd 65 94 44 df 1a 1c 17 03 03 00 |".. ..e.D.......| +00000110 a3 38 02 96 5e c2 6d ad 2d 17 79 63 15 bd 06 af |.8..^.m.-.yc....| +00000120 e3 ae 5a 94 66 b5 2d 12 d1 bc 9c 16 56 ac 71 fe |..Z.f.-.....V.q.| +00000130 d7 af 1f 27 9a 22 1a d2 de da 90 ca d5 7f 79 d1 |...'."........y.| +00000140 8a 6e c6 76 e7 76 b4 cc 9b d5 b5 ed b5 b2 9d 4e |.n.v.v.........N| +00000150 f8 88 a0 b1 14 91 8b 6b d9 b8 5d 34 61 8a a3 b3 |.......k..]4a...| +00000160 c8 db e9 c9 8d a7 53 d8 46 f0 bd 4b 30 bf 49 3d |......S.F..K0.I=| +00000170 cc 42 d3 fb b7 f3 ad 78 5b 01 38 5d c3 22 d0 51 |.B.....x[.8].".Q| +00000180 cb a3 d9 fe 61 f9 4a ee 7d 89 8b 88 22 2b 9b fe |....a.J.}..."+..| +00000190 19 cd 17 b7 9e 81 57 f6 cb 14 29 cb 3b 87 0e 83 |......W...).;...| +000001a0 5a 84 7c 13 2d c8 d4 a7 6a db 1d 10 c6 04 ed 0d |Z.|.-...j.......| +000001b0 1d d7 06 bb |....| +>>> Flow 5 (client to server) +00000000 17 03 03 00 45 44 0b 11 40 bf 4b b4 2b 12 76 b3 |....ED..@.K.+.v.| +00000010 e4 59 b3 91 bb 45 21 b3 78 aa dc 76 66 dd d6 3c |.Y...E!.x..vf..<| +00000020 21 cf 32 5c 37 85 ef fb c7 53 cb 55 9c a5 40 0a |!.2\7....S.U..@.| +00000030 9d f8 aa b4 e3 e4 51 bf d8 cb 15 44 f0 02 19 52 |......Q....D...R| +00000040 62 73 82 f2 c2 ae d2 03 0e dc |bs........| +>>> Flow 6 (server to client) +00000000 17 03 03 00 1e fe e8 25 be 32 b9 ce db 3d 36 54 |.......%.2...=6T| +00000010 78 7c 70 50 0e 8e f4 04 ec a9 2e 88 7b e5 23 23 |x|pP........{.##| +00000020 72 f4 04 17 03 03 00 13 cc 7c 8e 1b 85 30 16 57 |r........|...0.W| +00000030 b0 39 6a 3a b3 ee 57 82 17 03 c9 |.9j:..W....| diff --git a/testdata/Server-TLSv13-ResumeDisabled b/testdata/Server-TLSv13-ResumeDisabled new file mode 100644 index 0000000..1ba7ca1 --- /dev/null +++ b/testdata/Server-TLSv13-ResumeDisabled @@ -0,0 +1,104 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 01 a4 01 00 01 a0 03 03 96 06 be 39 9a |..............9.| +00000010 6b 71 35 ab f4 2a d2 66 4d 8f 2c 86 c9 b6 7b e1 |kq5..*.fM.,...{.| +00000020 85 55 81 f5 90 49 20 c9 d7 5d ea 20 a2 da 4f 31 |.U...I ..]. ..O1| +00000030 a6 7a bd 07 5d 24 2e 88 1c 88 0e 19 1e 33 51 51 |.z..]$.......3QQ| +00000040 a1 14 df d7 70 b5 62 6d 28 a8 5f 0e 00 08 13 02 |....p.bm(._.....| +00000050 13 03 13 01 00 ff 01 00 01 4f 00 00 00 0e 00 0c |.........O......| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e |................| +00000080 00 19 00 18 00 23 00 00 00 16 00 00 00 17 00 00 |.....#..........| +00000090 00 0d 00 1e 00 1c 04 03 05 03 06 03 08 07 08 08 |................| +000000a0 08 09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 |................| +000000b0 06 01 00 2b 00 03 02 03 04 00 2d 00 02 01 01 00 |...+......-.....| +000000c0 33 00 26 00 24 00 1d 00 20 6d b7 14 7e 1b 7e c5 |3.&.$... m..~.~.| +000000d0 2b 54 1e 88 bd 64 23 49 84 31 73 f0 b8 55 6c 23 |+T...d#I.1s..Ul#| +000000e0 9e 77 b9 c5 53 a5 7f 1d 15 00 29 00 bc 00 87 00 |.w..S.....).....| +000000f0 81 50 46 ad c1 db a8 38 86 7b 2b bb fd d0 c3 42 |.PF....8.{+....B| +00000100 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |>...............| +00000110 00 94 68 2c a3 81 51 ed 14 ef 68 ca 42 c5 4c e2 |..h,..Q...h.B.L.| +00000120 e9 ab 5a 10 63 08 88 5d 47 1a 77 c1 7c 72 14 12 |..Z.c..]G.w.|r..| +00000130 24 5f 79 c4 ce 1a 7c 08 bf 81 6d 0e 55 e6 2d 0d |$_y...|...m.U.-.| +00000140 00 68 79 bc 2d ea f4 19 fd 43 ef 51 3f b5 5f 49 |.hy.-....C.Q?._I| +00000150 38 16 e0 74 43 a4 e9 95 f6 6d eb bf 6d e2 57 79 |8..tC....m..m.Wy| +00000160 7a 6e 53 12 bd a2 e0 32 98 1d 4e cb ae 72 1f 4c |znS....2..N..r.L| +00000170 38 4c 00 00 00 00 00 31 30 b6 c5 6e 26 02 64 56 |8L.....10..n&.dV| +00000180 65 ab 95 9c 16 62 d0 c5 57 41 c7 4c 78 72 44 c7 |e....b..WA.LxrD.| +00000190 4f a4 dc e1 d3 ef 49 af 7d a1 e5 ce 6f 22 f9 ec |O.....I.}...o"..| +000001a0 f4 b3 e4 32 e3 99 b0 85 39 |...2....9| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 a2 da 4f 31 |........... ..O1| +00000030 a6 7a bd 07 5d 24 2e 88 1c 88 0e 19 1e 33 51 51 |.z..]$.......3QQ| +00000040 a1 14 df d7 70 b5 62 6d 28 a8 5f 0e 13 02 00 00 |....p.bm(._.....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 5a 35 3d 19 9b a7 |..........Z5=...| +00000090 a4 45 2c c3 09 ae 85 be 08 fe 1d e2 9a 5d 7a 4b |.E,..........]zK| +000000a0 8e 17 03 03 02 6d 87 db fb 18 21 96 c7 2b fb ff |.....m....!..+..| +000000b0 89 b9 25 f6 0d 89 0f b4 17 bb 17 e1 ba 95 b7 cd |..%.............| +000000c0 c2 75 b5 8b d8 64 ff 7c dc e2 97 32 0c 2f e0 9f |.u...d.|...2./..| +000000d0 db b9 ef 14 9d cc e4 68 44 f7 0a 55 d2 b1 a0 f7 |.......hD..U....| +000000e0 fc de a5 99 f0 5d 0c 60 7b c3 25 85 f6 79 8f e6 |.....].`{.%..y..| +000000f0 cd 43 1c 43 d9 cd 28 ea ce 10 1c 16 68 b8 d7 3d |.C.C..(.....h..=| +00000100 b4 d4 db b4 bf 76 f8 45 23 d8 9f d1 be d1 bd db |.....v.E#.......| +00000110 9c 45 dd 28 3b 68 22 57 6c b7 65 fc 5e 66 f6 cb |.E.(;h"Wl.e.^f..| +00000120 a2 88 bd 96 e4 00 b5 85 ae 00 95 b9 da 42 16 c9 |.............B..| +00000130 c9 63 c2 67 ec 22 65 6e 66 0e cf de 68 ad e7 87 |.c.g."enf...h...| +00000140 ae 63 b4 e9 1c c0 2f 1e 79 7e a3 3f 6d 2b 68 c1 |.c..../.y~.?m+h.| +00000150 e8 60 cd 26 e0 05 de fa 7b 77 45 71 d8 f9 03 d7 |.`.&....{wEq....| +00000160 d3 50 51 15 cf fc 39 fa 07 19 28 5e e8 2d 31 00 |.PQ...9...(^.-1.| +00000170 2a e1 a4 21 31 83 4e 7d 51 e7 53 eb 33 22 51 fe |*..!1.N}Q.S.3"Q.| +00000180 15 04 e9 3d 73 89 3b 56 3f c6 ec 6e 0a 71 68 a6 |...=s.;V?..n.qh.| +00000190 76 f3 f1 aa 4e d0 9f 85 45 3f 7b aa ae ad 42 b9 |v...N...E?{...B.| +000001a0 07 64 ab ad 03 b1 33 78 93 f0 49 95 65 fb 81 8c |.d....3x..I.e...| +000001b0 04 ee e7 f3 2c 0a 99 51 e5 ef 05 14 d3 93 37 2b |....,..Q......7+| +000001c0 73 96 81 6f f5 9b a3 9a 20 95 5c 13 fc 97 3e c0 |s..o.... .\...>.| +000001d0 87 e4 ec 00 84 0b f2 09 29 63 dd 54 03 ce e0 43 |........)c.T...C| +000001e0 e9 16 a0 98 32 3e fa 58 1d 81 1e 56 ef 64 ff f7 |....2>.X...V.d..| +000001f0 b0 aa fc 5f 8c 89 48 76 ef d2 f1 d0 9c 16 f9 57 |..._..Hv.......W| +00000200 ac a6 4a a4 a8 75 ae fc 4b 9f ef 3c 28 a5 0c c1 |..J..u..K..<(...| +00000210 c8 72 82 bf e9 93 f2 42 00 0a 49 5d be c7 09 91 |.r.....B..I]....| +00000220 29 40 5e a6 ad ae 9c 69 6f d8 33 53 0a 50 5b 48 |)@^....io.3S.P[H| +00000230 7d d7 7e 1e 3b d3 ec e6 cf fe 1e 6a 27 a2 83 35 |}.~.;......j'..5| +00000240 28 13 2f 00 e5 29 c3 10 46 53 a1 17 15 59 5d 74 |(./..)..FS...Y]t| +00000250 f5 7c fa a5 71 34 32 75 48 e6 2c 1d 90 e8 c1 87 |.|..q42uH.,.....| +00000260 50 ac 17 27 b8 f7 a9 8e 59 58 d6 b8 d9 ef b6 57 |P..'....YX.....W| +00000270 b8 13 41 d0 eb 80 1c 48 66 1d 41 a5 b5 0d 12 17 |..A....Hf.A.....| +00000280 52 96 62 29 0e 4a 09 b4 50 b8 37 c3 8f 85 67 27 |R.b).J..P.7...g'| +00000290 d9 6f 33 11 95 ca 0a 36 75 ef 15 45 81 d3 ad 7d |.o3....6u..E...}| +000002a0 1a ff a7 0c 47 21 37 24 27 ce 42 68 5f 5d 7c fe |....G!7$'.Bh_]|.| +000002b0 0c f2 0b 81 ea f9 25 c9 99 c2 56 72 54 bd 2f 4c |......%...VrT./L| +000002c0 40 17 f0 54 a0 6e 1d 14 80 9c 3c d3 f9 81 0d 9d |@..T.n....<.....| +000002d0 e1 47 55 24 e4 62 0e 14 0d 46 3f 52 1b ef ab 45 |.GU$.b...F?R...E| +000002e0 d8 86 c7 ef aa e2 ea e6 5e 2e d8 89 33 46 a0 d0 |........^...3F..| +000002f0 39 e2 cc 13 1d 62 11 ae c0 73 71 b8 ef 4b 43 71 |9....b...sq..KCq| +00000300 dd 14 42 09 c9 10 4e bc b9 93 78 d6 83 02 40 c0 |..B...N...x...@.| +00000310 62 56 40 17 03 03 00 99 6e 03 4b 38 20 98 d7 3e |bV@.....n.K8 ..>| +00000320 52 33 e0 be 26 9b 38 4c 7f 2b c1 cc 84 22 7e 86 |R3..&.8L.+..."~.| +00000330 1d 39 f6 0a c0 ff e9 d9 4d 81 24 26 8d e1 c5 c0 |.9......M.$&....| +00000340 78 18 59 e0 6a ac 35 ad a0 6d 32 09 63 75 88 10 |x.Y.j.5..m2.cu..| +00000350 2b 6b d1 36 ea f9 03 41 a9 a7 26 82 38 37 aa 81 |+k.6...A..&.87..| +00000360 a1 7a 81 5c 0b db 63 32 06 e7 cb a8 1c 0a ff be |.z.\..c2........| +00000370 a2 e5 00 42 59 61 78 40 2e e2 85 0a ad 6b ea ae |...BYax@.....k..| +00000380 17 5a 92 f6 d3 8e 97 a2 18 a5 28 8a 41 1d 70 26 |.Z........(.A.p&| +00000390 bc d8 e7 38 ba c5 68 b9 ae f9 c6 27 bc 5b 3b 9f |...8..h....'.[;.| +000003a0 db ae 38 84 6f 18 3c e6 1d 30 cb 57 b1 95 63 1d |..8.o.<..0.W..c.| +000003b0 ef 17 03 03 00 45 40 43 00 0c 81 0a ed cf 35 9d |.....E@C......5.| +000003c0 45 0f 2b 66 ad b6 bd f9 72 9f 77 aa 87 9a 4f 9a |E.+f....r.w...O.| +000003d0 f4 1b 08 bd 33 aa f7 dc f1 78 58 d7 53 aa 82 12 |....3....xX.S...| +000003e0 b1 f7 c2 dd 8b 0d 90 81 e9 a9 7b 7c 17 52 fe ab |..........{|.R..| +000003f0 e4 94 06 d4 44 b4 7d 81 61 97 6b |....D.}.a.k| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 0e e9 bb 83 d4 |..........E.....| +00000010 41 da c6 75 69 c2 5c 74 0c 86 c7 b9 08 2f 35 da |A..ui.\t...../5.| +00000020 19 6f cf 43 a4 23 2f fe 59 5d 0f 1f 1e 0f ca e4 |.o.C.#/.Y]......| +00000030 7f 4e 7d bc ce 77 76 f2 ce 1c c4 e8 4e a9 80 a8 |.N}..wv.....N...| +00000040 72 16 5b 3c 97 8f 55 cb 76 cf fa 02 29 41 af 6d |r.[<..U.v...)A.m| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e f2 5e b6 bd bc c3 c2 58 fe 90 e9 |......^.....X...| +00000010 07 07 a2 ab 66 41 f7 c4 1f 48 48 01 c9 38 d2 c7 |....fA...HH..8..| +00000020 c0 ab b5 17 03 03 00 13 db 6e 0e f9 4a 94 12 a3 |.........n..J...| +00000030 2a 86 3f d1 a7 ac c3 58 20 0d 09 |*.?....X ..| diff --git a/testdata/Server-TLSv13-X25519 b/testdata/Server-TLSv13-X25519 new file mode 100644 index 0000000..2446512 --- /dev/null +++ b/testdata/Server-TLSv13-X25519 @@ -0,0 +1,102 @@ +>>> Flow 1 (client to server) +00000000 16 03 01 00 d8 01 00 00 d4 03 03 3d 42 5b bc 55 |...........=B[.U| +00000010 6c e3 e9 9a db 07 85 ca 18 fb f3 e0 56 18 b5 39 |l...........V..9| +00000020 9d 43 91 41 38 a0 ea c1 eb db ec 20 ca b8 c3 6e |.C.A8...... ...n| +00000030 c8 78 18 88 ab cf c3 cb 7e ff 7d e5 7e d5 55 94 |.x......~.}.~.U.| +00000040 f8 b2 01 ad 8c 95 82 f0 8e d8 61 8e 00 08 13 02 |..........a.....| +00000050 13 03 13 01 00 ff 01 00 00 83 00 00 00 0e 00 0c |................| +00000060 00 00 09 31 32 37 2e 30 2e 30 2e 31 00 0b 00 04 |...127.0.0.1....| +00000070 03 00 01 02 00 0a 00 04 00 02 00 1d 00 16 00 00 |................| +00000080 00 17 00 00 00 0d 00 1e 00 1c 04 03 05 03 06 03 |................| +00000090 08 07 08 08 08 09 08 0a 08 0b 08 04 08 05 08 06 |................| +000000a0 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 2d 00 |.......+......-.| +000000b0 02 01 01 00 33 00 26 00 24 00 1d 00 20 e8 82 c0 |....3.&.$... ...| +000000c0 e9 dc b5 e1 3f 74 c9 42 e9 98 d1 1b fb 68 52 5d |....?t.B.....hR]| +000000d0 3e c1 65 56 6c 12 2b 3b ad 02 7c 80 42 |>.eVl.+;..|.B| +>>> Flow 2 (server to client) +00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| +00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 ca b8 c3 6e |........... ...n| +00000030 c8 78 18 88 ab cf c3 cb 7e ff 7d e5 7e d5 55 94 |.x......~.}.~.U.| +00000040 f8 b2 01 ad 8c 95 82 f0 8e d8 61 8e 13 02 00 00 |..........a.....| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| +00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| +00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| +00000080 03 03 00 01 01 17 03 03 00 17 09 03 3f 82 c1 8c |............?...| +00000090 42 42 8d be 40 51 f5 ba 5d b8 60 d9 87 0f d5 ca |BB..@Q..].`.....| +000000a0 3d 17 03 03 02 6d 95 e6 a7 87 7a 4a fb 68 16 3b |=....m....zJ.h.;| +000000b0 38 cb b0 7c 97 39 1e 00 46 7b 2c 32 00 02 6c 34 |8..|.9..F{,2..l4| +000000c0 de df 5a 3d 11 1b bc 28 d4 c1 05 fc 0c ca 28 e3 |..Z=...(......(.| +000000d0 90 c7 ad 88 43 45 12 fd 43 f5 be 7d 46 f8 d2 ec |....CE..C..}F...| +000000e0 00 8e 06 6f 09 0d ce 84 15 5a e7 59 1c f7 10 d4 |...o.....Z.Y....| +000000f0 2d 37 f2 71 a7 11 7e cb 3b 75 ec 8f d1 7a 8c d0 |-7.q..~.;u...z..| +00000100 f0 b1 18 aa 2f 3b e8 18 ff ae 0f 63 6b 41 3e 4a |..../;.....ckA>J| +00000110 04 56 72 1b e0 60 74 a2 ef 1d 81 61 eb 94 56 25 |.Vr..`t....a..V%| +00000120 e6 46 03 9a 2f 57 85 ca 3a f4 17 81 e3 cf 6c 2e |.F../W..:.....l.| +00000130 63 66 48 0f 5f f7 7b 5a 55 25 4b cc 24 c9 71 dd |cfH._.{ZU%K.$.q.| +00000140 42 32 d8 77 6f c5 69 bb 6b c5 c9 51 cb 37 97 ae |B2.wo.i.k..Q.7..| +00000150 c3 a3 87 5c 50 e1 f3 19 84 d6 9a 7c 56 0d 63 cc |...\P......|V.c.| +00000160 57 66 17 c8 a6 e2 f0 31 bb 20 3b 7e 9e 4e 30 fe |Wf.....1. ;~.N0.| +00000170 1e 22 07 71 29 76 c0 a2 7e da 3c 1d 04 31 f8 54 |.".q)v..~.<..1.T| +00000180 95 3a 84 71 d8 6b ed 43 e9 ad e9 45 c9 72 ad 0e |.:.q.k.C...E.r..| +00000190 8d 02 21 a6 89 6f 4b 83 5f fd 7f ff 3e cb d0 f7 |..!..oK._...>...| +000001a0 d3 94 54 7a 82 47 d3 8f 21 2f 1b f8 bf 95 e9 34 |..Tz.G..!/.....4| +000001b0 cd 06 d6 77 04 c8 57 49 df 0a c0 84 c7 ec 86 ed |...w..WI........| +000001c0 75 ca 33 56 b4 e8 d3 7c 45 e7 b4 c8 92 9a 73 c8 |u.3V...|E.....s.| +000001d0 eb 30 df 76 d2 61 70 9a 31 c5 a1 d8 4f 3a 1f dc |.0.v.ap.1...O:..| +000001e0 df 3d 85 9f b8 48 ed 78 aa 9e c1 ba 07 84 30 ec |.=...H.x......0.| +000001f0 e5 83 1c 63 47 53 2c 06 85 40 a9 78 ea 4e a0 e3 |...cGS,..@.x.N..| +00000200 2f 7d 67 39 38 c2 80 66 ff 62 8e 68 1f 67 17 b8 |/}g98..f.b.h.g..| +00000210 6b af 3c cc 81 46 5a 83 bf 1e ed 65 0e 81 05 fa |k.<..FZ....e....| +00000220 ac 06 df 63 4e af 9e 02 7f 16 2b 5f b4 0a 5e d9 |...cN.....+_..^.| +00000230 e5 d1 39 4a 42 d5 34 43 9b 32 ba d8 b7 ad c8 b0 |..9JB.4C.2......| +00000240 38 81 6f 93 8e 5e ee b7 86 75 d8 f4 bb 15 33 5e |8.o..^...u....3^| +00000250 a8 39 e4 ee 7f ef 15 7b ec e1 d7 95 31 e1 83 db |.9.....{....1...| +00000260 00 34 2e 22 02 59 33 2a a6 b5 73 f7 04 4d f5 40 |.4.".Y3*..s..M.@| +00000270 b7 97 97 33 a0 e2 c3 cf 4b 0a bd 27 84 a1 bb 0b |...3....K..'....| +00000280 2c 59 bd 3e 2c 82 48 b6 a5 b8 a9 20 00 37 8a 8e |,Y.>,.H.... .7..| +00000290 f8 f2 4e e2 16 5c fb bf 92 94 37 6a 82 b8 b1 35 |..N..\....7j...5| +000002a0 4f 77 9e dd 78 1a 07 85 42 3d de fc dc 7f 8c f4 |Ow..x...B=......| +000002b0 fa 30 de 15 a4 dd c2 08 d5 3d 08 f4 a8 0f f0 df |.0.......=......| +000002c0 6c 18 40 65 49 ce ce 78 99 5c bc 96 f2 02 2a 1b |l.@eI..x.\....*.| +000002d0 5f e7 3d 50 ea 9c b4 39 84 33 05 df 3d 1c 3c f7 |_.=P...9.3..=.<.| +000002e0 3e 55 b6 08 1b 51 b2 87 2b bb 0e 78 1d 7c 19 16 |>U...Q..+..x.|..| +000002f0 1f 8c ab 6c 56 2b 08 8b 57 2e f9 90 d9 50 a1 30 |...lV+..W....P.0| +00000300 14 05 54 26 3b 03 0c 46 ec b3 bd c7 eb ce b7 d7 |..T&;..F........| +00000310 31 64 40 17 03 03 00 99 d5 7d 3d d2 c0 c4 23 6b |1d@......}=...#k| +00000320 2c 1b 87 70 62 8c c5 63 6b 34 5b 69 e6 2d 61 7a |,..pb..ck4[i.-az| +00000330 7f 8d 36 96 68 30 71 4b 5c 60 3a dc 28 58 80 ef |..6.h0qK\`:.(X..| +00000340 09 60 e0 fd 64 d4 fb e5 d3 2f 0a 03 52 78 e4 0b |.`..d..../..Rx..| +00000350 c8 03 d2 0d 13 36 19 46 50 41 ee 07 44 f8 cc 0b |.....6.FPA..D...| +00000360 53 f9 42 0d 75 88 6f d0 52 02 67 22 bf df 4b a3 |S.B.u.o.R.g"..K.| +00000370 0a 43 10 54 27 53 49 5d b3 41 37 df 5b 22 7b b4 |.C.T'SI].A7.["{.| +00000380 52 21 c7 55 bd 99 a9 0a 0e 46 07 99 b0 38 dc 53 |R!.U.....F...8.S| +00000390 0e f2 76 82 d9 15 35 62 bb 6d 87 10 a9 91 74 ad |..v...5b.m....t.| +000003a0 b6 8e 4f 22 b8 72 05 5e de 06 e4 de 70 b3 7b 72 |..O".r.^....p.{r| +000003b0 3e 17 03 03 00 45 ae 7c de bb a6 79 ca fd 6c fa |>....E.|...y..l.| +000003c0 26 8b b2 6a eb 40 c0 b0 a7 98 e8 7a 0c e9 ea b3 |&..j.@.....z....| +000003d0 30 5f b7 fd 52 85 c8 56 93 dc 3a b0 e8 bd 5a d1 |0_..R..V..:...Z.| +000003e0 2d 94 87 27 c9 4c 57 66 35 bb e7 a5 d2 bf fd 27 |-..'.LWf5......'| +000003f0 f7 bd e1 8c a7 50 35 64 cc d5 26 17 03 03 00 a3 |.....P5d..&.....| +00000400 0d a3 74 9e 7e 5c bf d9 cb 27 e0 d2 c6 25 bd 29 |..t.~\...'...%.)| +00000410 49 23 76 24 91 a8 d0 58 28 60 1d 68 75 ec f8 05 |I#v$...X(`.hu...| +00000420 18 dd 0d b3 a8 27 98 82 78 81 e1 ee 03 69 8f 26 |.....'..x....i.&| +00000430 00 94 59 63 ef 9b c9 24 0f c8 99 97 64 4c a3 41 |..Yc...$....dL.A| +00000440 71 71 88 55 cd a2 61 e9 47 ed 9b e0 5b a8 f9 dc |qq.U..a.G...[...| +00000450 e6 25 8a 1d e8 18 12 1a 3c b7 d6 86 cc 4b 9f 70 |.%......<....K.p| +00000460 93 53 cf 8e d2 98 99 74 2a 37 96 07 a9 d5 bd 8e |.S.....t*7......| +00000470 eb 09 01 a4 4d 46 c8 7b ab 2c 2d 25 7c fc 89 e6 |....MF.{.,-%|...| +00000480 ac 23 92 98 de 38 1b e4 70 b3 ee 95 9b 83 03 ce |.#...8..p.......| +00000490 bb 17 df 13 1d 5a 9f be 55 3f dc 28 4b 43 4e fd |.....Z..U?.(KCN.| +000004a0 74 00 19 |t..| +>>> Flow 3 (client to server) +00000000 14 03 03 00 01 01 17 03 03 00 45 b0 11 eb 24 17 |..........E...$.| +00000010 1c a4 d5 68 80 b2 21 4b 6d 12 fd 67 c9 8a a8 87 |...h..!Km..g....| +00000020 27 e9 39 fd 9f 5f e4 ce 82 4f 9f 8d 2f d3 b9 04 |'.9.._...O../...| +00000030 d0 a8 00 33 5c 58 3f 75 be d5 8b ff 9a e4 30 cb |...3\X?u......0.| +00000040 4b e2 4d d3 0a e8 3f bb 89 98 1e 87 25 0f 4e 67 |K.M...?.....%.Ng| +>>> Flow 4 (server to client) +00000000 17 03 03 00 1e 1e 07 ae 09 4a 05 7b ee f6 ce a5 |.........J.{....| +00000010 18 11 76 89 e8 67 ed 22 41 d2 a3 b6 cc bc c8 e9 |..v..g."A.......| +00000020 73 02 7c 17 03 03 00 13 c2 87 1e 19 ea 01 63 5a |s.|...........cZ| +00000030 aa 72 b2 95 f0 05 08 71 95 0c 75 |.r.....q..u| diff --git a/ticket.go b/ticket.go index c1077e5..7f804ee 100644 --- a/ticket.go +++ b/ticket.go @@ -12,6 +12,7 @@ import ( "crypto/sha256" "crypto/subtle" "errors" + "golang_org/x/crypto/cryptobyte" "io" ) @@ -104,9 +105,50 @@ func (s *sessionState) unmarshal(data []byte) bool { return len(data) == 0 } -func (c *Conn) encryptTicket(state *sessionState) ([]byte, error) { - serialized := state.marshal() - encrypted := make([]byte, ticketKeyNameLen+aes.BlockSize+len(serialized)+sha256.Size) +// sessionStateTLS13 is the content of a TLS 1.3 session ticket. Its first +// version (revision = 0) doesn't carry any of the information needed for 0-RTT +// validation and the nonce is always empty. +type sessionStateTLS13 struct { + // uint8 version = 0x0304; + // uint8 revision = 0; + cipherSuite uint16 + createdAt uint64 + resumptionSecret []byte // opaque resumption_master_secret<1..2^8-1>; + certificate Certificate // CertificateEntry certificate_list<0..2^24-1>; +} + +func (m *sessionStateTLS13) marshal() []byte { + var b cryptobyte.Builder + b.AddUint16(VersionTLS13) + b.AddUint8(0) // revision + b.AddUint16(m.cipherSuite) + addUint64(&b, m.createdAt) + b.AddUint8LengthPrefixed(func(b *cryptobyte.Builder) { + b.AddBytes(m.resumptionSecret) + }) + marshalCertificate(&b, m.certificate) + return b.BytesOrPanic() +} + +func (m *sessionStateTLS13) unmarshal(data []byte) bool { + *m = sessionStateTLS13{} + s := cryptobyte.String(data) + var version uint16 + var revision uint8 + return s.ReadUint16(&version) && + version == VersionTLS13 && + s.ReadUint8(&revision) && + revision == 0 && + s.ReadUint16(&m.cipherSuite) && + readUint64(&s, &m.createdAt) && + readUint8LengthPrefixed(&s, &m.resumptionSecret) && + len(m.resumptionSecret) != 0 && + unmarshalCertificate(&s, &m.certificate) && + s.Empty() +} + +func (c *Conn) encryptTicket(state []byte) ([]byte, error) { + encrypted := make([]byte, ticketKeyNameLen+aes.BlockSize+len(state)+sha256.Size) keyName := encrypted[:ticketKeyNameLen] iv := encrypted[ticketKeyNameLen : ticketKeyNameLen+aes.BlockSize] macBytes := encrypted[len(encrypted)-sha256.Size:] @@ -120,7 +162,7 @@ func (c *Conn) encryptTicket(state *sessionState) ([]byte, error) { if err != nil { return nil, errors.New("tls: failed to create cipher while encrypting ticket: " + err.Error()) } - cipher.NewCTR(block, iv).XORKeyStream(encrypted[ticketKeyNameLen+aes.BlockSize:], serialized) + cipher.NewCTR(block, iv).XORKeyStream(encrypted[ticketKeyNameLen+aes.BlockSize:], state) mac := hmac.New(sha256.New, key.hmacKey[:]) mac.Write(encrypted[:len(encrypted)-sha256.Size]) @@ -129,15 +171,15 @@ func (c *Conn) encryptTicket(state *sessionState) ([]byte, error) { return encrypted, nil } -func (c *Conn) decryptTicket(encrypted []byte) (*sessionState, bool) { - if c.config.SessionTicketsDisabled || - len(encrypted) < ticketKeyNameLen+aes.BlockSize+sha256.Size { +func (c *Conn) decryptTicket(encrypted []byte) (plaintext []byte, usedOldKey bool) { + if len(encrypted) < ticketKeyNameLen+aes.BlockSize+sha256.Size { return nil, false } keyName := encrypted[:ticketKeyNameLen] iv := encrypted[ticketKeyNameLen : ticketKeyNameLen+aes.BlockSize] macBytes := encrypted[len(encrypted)-sha256.Size:] + ciphertext := encrypted[ticketKeyNameLen+aes.BlockSize : len(encrypted)-sha256.Size] keys := c.config.ticketKeys() keyIndex := -1 @@ -165,11 +207,8 @@ func (c *Conn) decryptTicket(encrypted []byte) (*sessionState, bool) { if err != nil { return nil, false } - ciphertext := encrypted[ticketKeyNameLen+aes.BlockSize : len(encrypted)-sha256.Size] - plaintext := ciphertext + plaintext = make([]byte, len(ciphertext)) cipher.NewCTR(block, iv).XORKeyStream(plaintext, ciphertext) - state := &sessionState{usedOldKey: keyIndex > 0} - ok := state.unmarshal(plaintext) - return state, ok + return plaintext, keyIndex > 0 }