]> Cypherpunks.ru repositories - gostls13.git/commitdiff
crypto/tls: change SendSessionTicket to take an options struct
authorDamien Neil <dneil@google.com>
Tue, 1 Aug 2023 20:33:37 +0000 (13:33 -0700)
committerDamien Neil <dneil@google.com>
Wed, 2 Aug 2023 17:14:49 +0000 (17:14 +0000)
To allow for future evolution of the API, make
QUICConn.SendSessionTicket take a QUICSessionTicketOptions
rather than a single bool.

For #60107

Change-Id: I798fd0feec5c7581e3c3574e2de99611c81df47f
Reviewed-on: https://go-review.googlesource.com/c/go/+/514997
Reviewed-by: Roland Shoemaker <roland@golang.org>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Marten Seemann <martenseemann@gmail.com>
api/go1.21.txt
src/crypto/tls/quic.go
src/crypto/tls/quic_test.go

index 42b3075fd84810aed585249dfad0dac973eabe05..50b6a5c219edd9637979456f730032c1b991197c 100644 (file)
@@ -60,7 +60,9 @@ pkg crypto/tls, method (*QUICConn) Close() error #44886
 pkg crypto/tls, method (*QUICConn) ConnectionState() ConnectionState #44886
 pkg crypto/tls, method (*QUICConn) HandleData(QUICEncryptionLevel, []uint8) error #44886
 pkg crypto/tls, method (*QUICConn) NextEvent() QUICEvent #44886
-pkg crypto/tls, method (*QUICConn) SendSessionTicket(bool) error #60107
+pkg crypto/tls, method (*QUICConn) SendSessionTicket(QUICSessionTicketOptions) error #60107
+pkg crypto/tls, type QUICSessionTicketOptions struct #60107
+pkg crypto/tls, type QUICSessionTicketOptions struct, EarlyData bool #60107
 pkg crypto/tls, method (*QUICConn) SetTransportParameters([]uint8) #44886
 pkg crypto/tls, method (*QUICConn) Start(context.Context) error #44886
 pkg crypto/tls, method (QUICEncryptionLevel) String() string #44886
index 6cb10df8badc9da341aa3b6e2115d091d27dfeb9..286302f0ecfde6a71377a27d972e0e47714cead9 100644 (file)
@@ -246,10 +246,15 @@ func (q *QUICConn) HandleData(level QUICEncryptionLevel, data []byte) error {
        return nil
 }
 
+type QUICSessionTicketOptions struct {
+       // EarlyData specifies whether the ticket may be used for 0-RTT.
+       EarlyData bool
+}
+
 // SendSessionTicket sends a session ticket to the client.
 // It produces connection events, which may be read with NextEvent.
 // Currently, it can only be called once.
-func (q *QUICConn) SendSessionTicket(earlyData bool) error {
+func (q *QUICConn) SendSessionTicket(opts QUICSessionTicketOptions) error {
        c := q.conn
        if !c.isHandshakeComplete.Load() {
                return quicError(errors.New("tls: SendSessionTicket called before handshake completed"))
@@ -261,7 +266,7 @@ func (q *QUICConn) SendSessionTicket(earlyData bool) error {
                return quicError(errors.New("tls: SendSessionTicket called multiple times"))
        }
        q.sessionTicketSent = true
-       return quicError(c.sendSessionTicket(earlyData))
+       return quicError(c.sendSessionTicket(opts.EarlyData))
 }
 
 // ConnectionState returns basic TLS details about the connection.
index 02503cff828fc6aa20218bf0500dbbd6b9bf8880..9a29fa56b87b13e0fdcc0f216e859f69f2345d1f 100644 (file)
@@ -125,7 +125,8 @@ func runTestQUICConnection(ctx context.Context, cli, srv *testQUICConn, onHandle
                case QUICHandshakeDone:
                        a.complete = true
                        if a == srv {
-                               if err := srv.conn.SendSessionTicket(false); err != nil {
+                               opts := QUICSessionTicketOptions{}
+                               if err := srv.conn.SendSessionTicket(opts); err != nil {
                                        return err
                                }
                        }