Chromium Code Reviews| Index: third_party/tlslite/tlslite/messages.py |
| diff --git a/third_party/tlslite/tlslite/messages.py b/third_party/tlslite/tlslite/messages.py |
| index 532d86bb13c9977834ec1f48e7dd33306339aa3e..550b387f947119e928fbcb120306db1e6f078029 100644 |
| --- a/third_party/tlslite/tlslite/messages.py |
| +++ b/third_party/tlslite/tlslite/messages.py |
| @@ -533,31 +533,31 @@ class ServerKeyExchange(HandshakeMsg): |
| p.stopLengthCheck() |
| return self |
| - def write(self): |
| + def write_params(self): |
| w = Writer() |
| if self.cipherSuite in CipherSuite.srpAllSuites: |
| w.addVarSeq(numberToByteArray(self.srp_N), 1, 2) |
| w.addVarSeq(numberToByteArray(self.srp_g), 1, 2) |
| w.addVarSeq(self.srp_s, 1, 1) |
| w.addVarSeq(numberToByteArray(self.srp_B), 1, 2) |
| - if self.cipherSuite in CipherSuite.srpCertSuites: |
| - w.addVarSeq(self.signature, 1, 2) |
| - elif self.cipherSuite in CipherSuite.anonSuites: |
| + elif self.cipherSuite in CipherSuite.dhAllSuites: |
| w.addVarSeq(numberToByteArray(self.dh_p), 1, 2) |
| w.addVarSeq(numberToByteArray(self.dh_g), 1, 2) |
| w.addVarSeq(numberToByteArray(self.dh_Ys), 1, 2) |
| - if self.cipherSuite in []: # TODO support for signed_params |
| - w.addVarSeq(self.signature, 1, 2) |
| + else: |
| + assert(False) |
| + return w.bytes |
| + |
| + def write(self): |
| + w = Writer() |
| + w.bytes += self.write_params() |
| + if self.cipherSuite in CipherSuite.certAllSuites: |
| + w.addVarSeq(self.signature, 1, 2) |
| return self.postWrite(w) |
| def hash(self, clientRandom, serverRandom): |
| - oldCipherSuite = self.cipherSuite |
| - self.cipherSuite = None |
| - try: |
| - bytes = clientRandom + serverRandom + self.write()[4:] |
|
wtc
2014/04/01 22:00:01
Do you know why the original code uses [4:] after
davidben
2014/04/01 23:25:18
The try/finally thing is just so the cipherSuite g
|
| - return MD5(bytes) + SHA1(bytes) |
| - finally: |
| - self.cipherSuite = oldCipherSuite |
| + bytes = clientRandom + serverRandom + self.write_params() |
| + return MD5(bytes) + SHA1(bytes) |
| class ServerHelloDone(HandshakeMsg): |
| def __init__(self): |
| @@ -607,7 +607,7 @@ class ClientKeyExchange(HandshakeMsg): |
| p.getFixBytes(len(p.bytes)-p.index) |
| else: |
| raise AssertionError() |
| - elif self.cipherSuite in CipherSuite.anonSuites: |
| + elif self.cipherSuite in CipherSuite.dhAllSuites: |
| self.dh_Yc = bytesToNumber(p.getVarBytes(2)) |
| else: |
| raise AssertionError() |