(self, session, serverHello, clientRandom,
cipherImplementations, nextProto, settings)
| 1623 | return None |
| 1624 | |
| 1625 | def _clientResume(self, session, serverHello, clientRandom, |
| 1626 | cipherImplementations, nextProto, settings): |
| 1627 | #If the server agrees to resume |
| 1628 | if session and session.sessionID and \ |
| 1629 | serverHello.session_id == session.sessionID: |
| 1630 | |
| 1631 | if serverHello.cipher_suite != session.cipherSuite: |
| 1632 | for result in self._sendError(\ |
| 1633 | AlertDescription.illegal_parameter,\ |
| 1634 | "Server's ciphersuite doesn't match session"): |
| 1635 | yield result |
| 1636 | |
| 1637 | #Calculate pending connection states |
| 1638 | self._calcPendingStates(session.cipherSuite, |
| 1639 | session.masterSecret, |
| 1640 | clientRandom, serverHello.random, |
| 1641 | cipherImplementations) |
| 1642 | |
| 1643 | #Exchange ChangeCipherSpec and Finished messages |
| 1644 | for result in self._getFinished(session.masterSecret, |
| 1645 | session.cipherSuite): |
| 1646 | yield result |
| 1647 | # buffer writes so that CCS and Finished go out in one TCP packet |
| 1648 | self.sock.buffer_writes = True |
| 1649 | for result in self._sendFinished(session.masterSecret, |
| 1650 | session.cipherSuite, |
| 1651 | nextProto, |
| 1652 | settings=settings): |
| 1653 | yield result |
| 1654 | self.sock.flush() |
| 1655 | self.sock.buffer_writes = False |
| 1656 | |
| 1657 | #Set the session for this connection |
| 1658 | self.session = session |
| 1659 | yield "resumed_and_finished" |
| 1660 | |
| 1661 | def _clientKeyExchange(self, settings, cipherSuite, |
| 1662 | clientCertChain, privateKey, |
no test coverage detected