| 25 | ############################################################################### |
| 26 | |
| 27 | class _SSLv2MsgListField(_TLSMsgListField): |
| 28 | def __init__(self, name, default, length_from=None): |
| 29 | if not length_from: |
| 30 | length_from = lambda pkt: ((pkt.len & 0x7fff) - |
| 31 | (pkt.padlen or 0) - |
| 32 | len(pkt.mac)) |
| 33 | super(_SSLv2MsgListField, self).__init__(name, default, |
| 34 | length_from=length_from) |
| 35 | |
| 36 | def m2i(self, pkt, m): |
| 37 | cls = Raw |
| 38 | if len(m) >= 1: |
| 39 | msgtype = orb(m[0]) |
| 40 | cls = _sslv2_handshake_cls.get(msgtype, Raw) |
| 41 | |
| 42 | if cls is Raw: |
| 43 | return Raw(m) |
| 44 | else: |
| 45 | return cls(m, tls_session=pkt.tls_session) |
| 46 | |
| 47 | def i2m(self, pkt, p): |
| 48 | cur = b"" |
| 49 | if isinstance(p, _GenericTLSSessionInheritance): |
| 50 | p.tls_session = pkt.tls_session |
| 51 | if not pkt.tls_session.frozen: |
| 52 | cur = p.raw_stateful() |
| 53 | p.post_build_tls_session_update(cur) |
| 54 | else: |
| 55 | cur = raw(p) |
| 56 | else: |
| 57 | cur = raw(p) |
| 58 | return cur |
| 59 | |
| 60 | def addfield(self, pkt, s, val): |
| 61 | res = b"" |
| 62 | for p in val: |
| 63 | res += self.i2m(pkt, p) |
| 64 | return s + res |
| 65 | |
| 66 | |
| 67 | class SSLv2(TLS): |
no outgoing calls
no test coverage detected
searching dependent graphs…