def _iesubelfte_(s,sid):
""" :returns: parsed opt subelement of FTE element """
ret = s
if sid == std.EID_FTE_RSRV: pass
elif sid == std.EID_FTE_PMK_R1:
# a 6-octed key
ret = {'r1kh-id':struct.unpack_from('=Q',s+'\x00\x00')[0]}
elif sid == std.EID_FTE_GTK:
# Std Fig. 8-237 Key Info|Key Len|RSC|Wrapped Key
# 2| 1| 8| 24-40
ki,kl,r = struct.unpack_from('=HBQ',s)
ret = {'key-info':{'key-id':bits.leastx(2,ki),
'rsrv':bits.mostx(2,ki)},
'key-leng':kl,
'rsc':r,
'wrapped-key':binascii.hexlify(s[struct.calcsize('=HBQ'):])}
elif sid == std.EID_FTE_PMK_R0:
# variable length 1-48 octets
ret = {'r0kh-id':binascii.hexlify(s)}
elif sid == std.EID_FTE_IGTK:
# Std Fig 8-239 Key ID|IPN|Key Length|Wrapped Key
# 2| 6| 1| 24
ki = struct.unpack_from('=H',s)[0]
ipn = struct.unpack_from('=Q',s[2:8]+'\x00\x00')[0]
kl = struct.unpack_from('=B',s,8)[0]
ret = {'key-id':ki,
'ipn':ipn,
'key-len':kl,
'wrapped-key':binascii.hexlify(s[9:])}
return ret
# Diagnositc Report/Request optional subelements Std Table 8-143 & figures commented below
评论列表
文章目录