| OLD | NEW |
| 1 # Authors: | 1 # Authors: |
| 2 # Trevor Perrin | 2 # Trevor Perrin |
| 3 # Google - handling CertificateRequest.certificate_types | 3 # Google - handling CertificateRequest.certificate_types |
| 4 # Google (adapted by Sam Rushing and Marcelo Fernandez) - NPN support | 4 # Google (adapted by Sam Rushing and Marcelo Fernandez) - NPN support |
| 5 # Dimitris Moraitis - Anon ciphersuites | 5 # Dimitris Moraitis - Anon ciphersuites |
| 6 # Yngve Pettersen (ported by Paul Sokolovsky) - TLS 1.2 | 6 # Yngve Pettersen (ported by Paul Sokolovsky) - TLS 1.2 |
| 7 # | 7 # |
| 8 # See the LICENSE file for legal information regarding use of this file. | 8 # See the LICENSE file for legal information regarding use of this file. |
| 9 | 9 |
| 10 """Classes representing TLS messages.""" | 10 """Classes representing TLS messages.""" |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 break | 187 break |
| 188 elif extType == ExtensionType.channel_id: | 188 elif extType == ExtensionType.channel_id: |
| 189 self.channel_id = True | 189 self.channel_id = True |
| 190 elif extType == ExtensionType.extended_master_secret: | 190 elif extType == ExtensionType.extended_master_secret: |
| 191 self.extended_master_secret = True | 191 self.extended_master_secret = True |
| 192 elif extType == ExtensionType.token_binding: | 192 elif extType == ExtensionType.token_binding: |
| 193 tokenBindingBytes = p.getFixBytes(extLength) | 193 tokenBindingBytes = p.getFixBytes(extLength) |
| 194 p2 = Parser(tokenBindingBytes) | 194 p2 = Parser(tokenBindingBytes) |
| 195 ver_minor = p2.get(1) | 195 ver_minor = p2.get(1) |
| 196 ver_major = p2.get(1) | 196 ver_major = p2.get(1) |
| 197 if (ver_major, ver_minor) >= (0, 3): | 197 if (ver_major, ver_minor) >= (0, 6): |
| 198 p2.startLengthCheck(1) | 198 p2.startLengthCheck(1) |
| 199 while not p2.atLengthCheck(): | 199 while not p2.atLengthCheck(): |
| 200 self.tb_client_params.append(p2.get(1)) | 200 self.tb_client_params.append(p2.get(1)) |
| 201 elif extType == ExtensionType.signed_cert_timestamps: | 201 elif extType == ExtensionType.signed_cert_timestamps: |
| 202 if extLength: | 202 if extLength: |
| 203 raise SyntaxError() | 203 raise SyntaxError() |
| 204 self.support_signed_cert_timestamps = True | 204 self.support_signed_cert_timestamps = True |
| 205 elif extType == ExtensionType.status_request: | 205 elif extType == ExtensionType.status_request: |
| 206 # Extension contents are currently ignored. | 206 # Extension contents are currently ignored. |
| 207 # According to RFC 6066, this is not strictly forbidden | 207 # According to RFC 6066, this is not strictly forbidden |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 w2.add(0, 2) | 375 w2.add(0, 2) |
| 376 if self.extended_master_secret: | 376 if self.extended_master_secret: |
| 377 w2.add(ExtensionType.extended_master_secret, 2) | 377 w2.add(ExtensionType.extended_master_secret, 2) |
| 378 w2.add(0, 2) | 378 w2.add(0, 2) |
| 379 if self.tb_params: | 379 if self.tb_params: |
| 380 w2.add(ExtensionType.token_binding, 2) | 380 w2.add(ExtensionType.token_binding, 2) |
| 381 # length of extension | 381 # length of extension |
| 382 w2.add(4, 2) | 382 w2.add(4, 2) |
| 383 # version | 383 # version |
| 384 w2.add(0, 1) | 384 w2.add(0, 1) |
| 385 w2.add(4, 1) | 385 w2.add(6, 1) |
| 386 # length of params (defined as variable length <1..2^8-1>, but in | 386 # length of params (defined as variable length <1..2^8-1>, but in |
| 387 # this context the server can only send a single value. | 387 # this context the server can only send a single value. |
| 388 w2.add(1, 1) | 388 w2.add(1, 1) |
| 389 w2.add(self.tb_params, 1) | 389 w2.add(self.tb_params, 1) |
| 390 if self.signed_cert_timestamps: | 390 if self.signed_cert_timestamps: |
| 391 w2.add(ExtensionType.signed_cert_timestamps, 2) | 391 w2.add(ExtensionType.signed_cert_timestamps, 2) |
| 392 w2.addVarSeq(bytearray(self.signed_cert_timestamps), 1, 2) | 392 w2.addVarSeq(bytearray(self.signed_cert_timestamps), 1, 2) |
| 393 if self.status_request: | 393 if self.status_request: |
| 394 w2.add(ExtensionType.status_request, 2) | 394 w2.add(ExtensionType.status_request, 2) |
| 395 w2.add(0, 2) | 395 w2.add(0, 2) |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 newMsg = ApplicationData().create(self.bytes[:1]) | 825 newMsg = ApplicationData().create(self.bytes[:1]) |
| 826 self.bytes = self.bytes[1:] | 826 self.bytes = self.bytes[1:] |
| 827 return newMsg | 827 return newMsg |
| 828 | 828 |
| 829 def parse(self, p): | 829 def parse(self, p): |
| 830 self.bytes = p.bytes | 830 self.bytes = p.bytes |
| 831 return self | 831 return self |
| 832 | 832 |
| 833 def write(self): | 833 def write(self): |
| 834 return self.bytes | 834 return self.bytes |
| OLD | NEW |