MCPcopy Create free account
hub / github.com/secdev/scapy / _CertAuthoritiesField

Class _CertAuthoritiesField

scapy/layers/tls/handshake.py:1132–1164  ·  view source on GitHub ↗

XXX Rework this with proper ASN.1 parsing.

Source from the content-addressed store, hash-verified

1130
1131
1132class _CertAuthoritiesField(StrLenField):
1133 """
1134 XXX Rework this with proper ASN.1 parsing.
1135 """
1136 islist = 1
1137
1138 def getfield(self, pkt, s):
1139 tmp_len = self.length_from(pkt)
1140 return s[tmp_len:], self.m2i(pkt, s[:tmp_len])
1141
1142 def m2i(self, pkt, m):
1143 res = []
1144 while len(m) > 1:
1145 tmp_len = struct.unpack("!H", m[:2])[0]
1146 if len(m) < tmp_len + 2:
1147 res.append((tmp_len, m[2:]))
1148 break
1149 dn = m[2:2 + tmp_len]
1150 res.append((tmp_len, dn))
1151 m = m[2 + tmp_len:]
1152 return res
1153
1154 def i2m(self, pkt, i):
1155 return b"".join(map(lambda x_y: struct.pack("!H", x_y[0]) + x_y[1], i))
1156
1157 def addfield(self, pkt, s, val):
1158 return s + self.i2m(pkt, val)
1159
1160 def i2len(self, pkt, val):
1161 if val is None:
1162 return 0
1163 else:
1164 return len(self.i2m(pkt, val))
1165
1166
1167class TLSCertificateRequest(_TLSHandshake):

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…