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

Method decrypt

scapy/contrib/macsec.py:180–207  ·  view source on GitHub ↗

decrypt a MACsec frame for this Secure Association

(self, orig_pkt, assoclen=None)

Source from the content-addressed store, hash-verified

178 return hdr
179
180 def decrypt(self, orig_pkt, assoclen=None):
181 """decrypt a MACsec frame for this Secure Association"""
182 hdr = copy.deepcopy(orig_pkt)
183 del hdr[MACsec].payload
184 pktlen = len(orig_pkt)
185 if self.send_sci:
186 hdrlen = NOSCI_LEN + SCI_LEN
187 else:
188 hdrlen = NOSCI_LEN
189 if assoclen is None or not self.do_encrypt:
190 if self.do_encrypt:
191 assoclen = hdrlen
192 else:
193 assoclen = pktlen - self.icvlen
194 iv = self.make_iv(hdr)
195 assoc, ct, icv = MACsecSA.split_pkt(orig_pkt, assoclen, self.icvlen)
196 decryptor = Cipher(
197 algorithms.AES(self.key),
198 modes.GCM(iv, icv),
199 backend=default_backend()
200 ).decryptor()
201 decryptor.authenticate_additional_data(assoc)
202 pt = assoc[hdrlen:assoclen]
203 pt += decryptor.update(ct)
204 pt += decryptor.finalize()
205 hdr[MACsec].type = struct.unpack('!H', pt[0:2])[0]
206 hdr[MACsec].payload = Raw(pt[2:])
207 return hdr
208
209
210class MACsec(Packet):

Callers

nothing calls this directly

Calls 4

make_ivMethod · 0.95
RawClass · 0.90
split_pktMethod · 0.80
updateMethod · 0.45

Tested by

no test coverage detected