| Index: third_party/tlslite/tlslite/TLSConnection.py
|
| diff --git a/third_party/tlslite/tlslite/TLSConnection.py b/third_party/tlslite/tlslite/TLSConnection.py
|
| index e6ce1870de4781f627dc761c517f735f2ff5da99..94ee5eb7bf3e3b8a1ff5118dcf18e449c39f08fc 100644
|
| --- a/third_party/tlslite/tlslite/TLSConnection.py
|
| +++ b/third_party/tlslite/tlslite/TLSConnection.py
|
| @@ -937,8 +937,8 @@ class TLSConnection(TLSRecordLayer):
|
| certChain=None, privateKey=None, reqCert=False,
|
| sessionCache=None, settings=None, checker=None,
|
| reqCAs=None, tlsIntolerant=0,
|
| - signedCertTimestamps=None,
|
| - fallbackSCSV=False):
|
| + signedCertTimestamps=None, fallbackSCSV=False,
|
| + ocspResponse=None):
|
| """Perform a handshake in the role of server.
|
|
|
| This function performs an SSL or TLS handshake. Depending on
|
| @@ -1014,6 +1014,16 @@ class TLSConnection(TLSRecordLayer):
|
| binary 8-bit string) that will be sent as a TLS extension whenever
|
| the client announces support for the extension.
|
|
|
| + @type ocspResponse: str
|
| + @param ocspResponse: An OCSP response (as a binary 8-bit string) that
|
| + will be sent stapled in the handshake whenever the client announces
|
| + support for the status_request extension.
|
| + Note that the response is sent independent of the ClientHello
|
| + status_request extension contents, and is thus only meant for testing
|
| + environments. Real OCSP stapling is more complicated as it requires
|
| + choosing a suitable response based on the ClientHello status_request
|
| + extension contents.
|
| +
|
| @raise socket.error: If a socket error occurs.
|
| @raise tlslite.errors.TLSAbruptCloseError: If the socket is closed
|
| without a preceding alert.
|
| @@ -1024,7 +1034,7 @@ class TLSConnection(TLSRecordLayer):
|
| for result in self.handshakeServerAsync(sharedKeyDB, verifierDB,
|
| certChain, privateKey, reqCert, sessionCache, settings,
|
| checker, reqCAs, tlsIntolerant, signedCertTimestamps,
|
| - fallbackSCSV):
|
| + fallbackSCSV, ocspResponse):
|
| pass
|
|
|
|
|
| @@ -1033,7 +1043,7 @@ class TLSConnection(TLSRecordLayer):
|
| sessionCache=None, settings=None, checker=None,
|
| reqCAs=None, tlsIntolerant=0,
|
| signedCertTimestamps=None,
|
| - fallbackSCSV=False):
|
| + fallbackSCSV=False, ocspResponse=None):
|
| """Start a server handshake operation on the TLS connection.
|
|
|
| This function returns a generator which behaves similarly to
|
| @@ -1053,7 +1063,8 @@ class TLSConnection(TLSRecordLayer):
|
| reqCAs=reqCAs,
|
| tlsIntolerant=tlsIntolerant,
|
| signedCertTimestamps=signedCertTimestamps,
|
| - fallbackSCSV=fallbackSCSV)
|
| + fallbackSCSV=fallbackSCSV, ocspResponse=ocspResponse)
|
| +
|
| for result in self._handshakeWrapperAsync(handshaker, checker):
|
| yield result
|
|
|
| @@ -1062,7 +1073,7 @@ class TLSConnection(TLSRecordLayer):
|
| certChain, privateKey, reqCert,
|
| sessionCache, settings, reqCAs,
|
| tlsIntolerant, signedCertTimestamps,
|
| - fallbackSCSV):
|
| + fallbackSCSV, ocspResponse):
|
|
|
| self._handshakeStart(client=False)
|
|
|
| @@ -1439,10 +1450,14 @@ class TLSConnection(TLSRecordLayer):
|
| sessionID, cipherSuite, certificateType)
|
| serverHello.channel_id = clientHello.channel_id
|
| if clientHello.support_signed_cert_timestamps:
|
| - serverHello.signed_cert_timestamps = signedCertTimestamps
|
| + serverHello.signed_cert_timestamps = signedCertTimestamps
|
| + serverHello.status_request = (clientHello.status_request and
|
| + ocspResponse)
|
| doingChannelID = clientHello.channel_id
|
| msgs.append(serverHello)
|
| msgs.append(Certificate(certificateType).create(serverCertChain))
|
| + if serverHello.status_request:
|
| + msgs.append(CertificateStatus().create(ocspResponse))
|
| if reqCert and reqCAs:
|
| msgs.append(CertificateRequest().create([], reqCAs))
|
| elif reqCert:
|
|
|