|
17 | 17 | import struct |
18 | 18 |
|
19 | 19 | from scapy.error import log_runtime, warning |
20 | | -from scapy.fields import ByteEnumField, ByteField, EnumField, Field, \ |
21 | | - FieldLenField, IntField, PacketField, PacketListField, ShortField, \ |
22 | | - StrFixedLenField, StrLenField, ThreeBytesField, UTCTimeField |
| 20 | +from scapy.fields import ( |
| 21 | + ByteEnumField, |
| 22 | + ByteField, |
| 23 | + Field, |
| 24 | + FieldLenField, |
| 25 | + IntField, |
| 26 | + PacketField, |
| 27 | + PacketListField, |
| 28 | + ShortEnumField, |
| 29 | + ShortField, |
| 30 | + StrFixedLenField, |
| 31 | + StrLenField, |
| 32 | + ThreeBytesField, |
| 33 | + UTCTimeField, |
| 34 | +) |
23 | 35 |
|
24 | 36 | from scapy.compat import hex_bytes, orb, raw |
25 | 37 | from scapy.config import conf |
@@ -481,18 +493,17 @@ class TLSServerHello(_TLSHandshake): |
481 | 493 | _SessionIDField("sid", "", |
482 | 494 | length_from=lambda pkt: pkt.sidlen), |
483 | 495 |
|
484 | | - EnumField("cipher", None, _tls_cipher_suites), |
| 496 | + ShortEnumField("cipher", None, _tls_cipher_suites), |
485 | 497 | _CompressionMethodsField("comp", [0], |
486 | 498 | _tls_compression_algs, |
487 | 499 | itemfmt="B", |
488 | 500 | length_from=lambda pkt: 1), |
489 | 501 |
|
490 | 502 | _ExtensionsLenField("extlen", None, length_of="ext"), |
491 | 503 | _ExtensionsField("ext", None, |
492 | | - length_from=lambda pkt: (pkt.msglen - |
493 | | - (pkt.sidlen or 0) - # noqa: E501 |
494 | | - 38))] |
495 | | - # 40)) ] |
| 504 | + length_from=lambda pkt: ( |
| 505 | + pkt.msglen - (pkt.sidlen or 0) - 40 |
| 506 | + ))] |
496 | 507 |
|
497 | 508 | @classmethod |
498 | 509 | def dispatch_hook(cls, _pkt=None, *args, **kargs): |
@@ -563,7 +574,7 @@ def tls_session_update(self, msg_str): |
563 | 574 | FieldLenField("sidlen", None, length_of="sid", fmt="B"), |
564 | 575 | _SessionIDField("sid", "", |
565 | 576 | length_from=lambda pkt: pkt.sidlen), |
566 | | - EnumField("cipher", None, _tls_cipher_suites), |
| 577 | + ShortEnumField("cipher", None, _tls_cipher_suites), |
567 | 578 | _CompressionMethodsField("comp", [0], |
568 | 579 | _tls_compression_algs, |
569 | 580 | itemfmt="B", |
@@ -1020,7 +1031,7 @@ def build(self, *args, **kargs): |
1020 | 1031 | fval = self.getfieldval("sig") |
1021 | 1032 | if fval is None: |
1022 | 1033 | s = self.tls_session |
1023 | | - if s.pwcs: |
| 1034 | + if s.pwcs and s.client_random: |
1024 | 1035 | if not s.pwcs.key_exchange.anonymous: |
1025 | 1036 | p = self.params |
1026 | 1037 | if p is None: |
@@ -1126,7 +1137,7 @@ class TLSCertificateRequest(_TLSHandshake): |
1126 | 1137 | SigAndHashAlgsLenField("sig_algs_len", None, |
1127 | 1138 | length_of="sig_algs"), |
1128 | 1139 | SigAndHashAlgsField("sig_algs", [0x0403, 0x0401, 0x0201], |
1129 | | - EnumField("hash_sig", None, _tls_hash_sig), # noqa: E501 |
| 1140 | + ShortEnumField("hash_sig", None, _tls_hash_sig), # noqa: E501 |
1130 | 1141 | length_from=lambda pkt: pkt.sig_algs_len), # noqa: E501 |
1131 | 1142 | FieldLenField("certauthlen", None, fmt="!H", |
1132 | 1143 | length_of="certauth"), |
|
0 commit comments