|
60 | 60 | import scapy.asn1.mib # noqa: F401 |
61 | 61 | from scapy.asn1.ber import BER_id_dec, BER_Decoding_Error |
62 | 62 | from scapy.asn1.asn1 import ( |
63 | | - ASN1_OID, |
64 | 63 | ASN1_BIT_STRING, |
65 | 64 | ASN1_BOOLEAN, |
66 | 65 | ASN1_Class, |
|
71 | 70 | ASN1_Codecs, |
72 | 71 | ) |
73 | 72 | from scapy.asn1fields import ( |
| 73 | + ASN1F_BIT_STRING_ENCAPS, |
74 | 74 | ASN1F_BOOLEAN, |
75 | 75 | ASN1F_CHOICE, |
| 76 | + ASN1F_enum_INTEGER, |
76 | 77 | ASN1F_FLAGS, |
77 | 78 | ASN1F_GENERAL_STRING, |
78 | 79 | ASN1F_GENERALIZED_TIME, |
79 | 80 | ASN1F_INTEGER, |
80 | 81 | ASN1F_OID, |
| 82 | + ASN1F_optional, |
81 | 83 | ASN1F_PACKET, |
82 | | - ASN1F_SEQUENCE, |
83 | 84 | ASN1F_SEQUENCE_OF, |
84 | | - ASN1F_STRING, |
| 85 | + ASN1F_SEQUENCE, |
85 | 86 | ASN1F_STRING_ENCAPS, |
86 | 87 | ASN1F_STRING_PacketField, |
87 | | - ASN1F_enum_INTEGER, |
88 | | - ASN1F_optional, |
| 88 | + ASN1F_STRING, |
89 | 89 | ) |
90 | 90 | from scapy.asn1packet import ASN1_Packet |
91 | 91 | from scapy.automaton import Automaton, ATMT |
|
149 | 149 | _CMS_ENCAPSULATED, |
150 | 150 | CMS_ContentInfo, |
151 | 151 | CMS_IssuerAndSerialNumber, |
152 | | - CMS_SignedData, |
| 152 | + DHPublicKey, |
153 | 153 | X509_AlgorithmIdentifier, |
154 | 154 | X509_DirectoryName, |
155 | 155 | X509_SubjectPublicKeyInfo, |
@@ -1238,10 +1238,7 @@ class PA_PK_AS_REQ(ASN1_Packet): |
1238 | 1238 | ASN1_root = ASN1F_SEQUENCE( |
1239 | 1239 | ASN1F_STRING_ENCAPS( |
1240 | 1240 | "signedAuthpack", |
1241 | | - CMS_ContentInfo( |
1242 | | - contentType=ASN1_OID("id-signedData"), |
1243 | | - content=CMS_SignedData(), |
1244 | | - ), |
| 1241 | + CMS_ContentInfo(), |
1245 | 1242 | CMS_ContentInfo, |
1246 | 1243 | implicit_tag=0x80, |
1247 | 1244 | ), |
@@ -1357,7 +1354,12 @@ class AuthPack(ASN1_Packet): |
1357 | 1354 | class DHRepInfo(ASN1_Packet): |
1358 | 1355 | ASN1_codec = ASN1_Codecs.BER |
1359 | 1356 | ASN1_root = ASN1F_SEQUENCE( |
1360 | | - ASN1F_STRING("dhSignedData", "", implicit_tag=0xA0), |
| 1357 | + ASN1F_STRING_ENCAPS( |
| 1358 | + "dhSignedData", |
| 1359 | + CMS_ContentInfo(), |
| 1360 | + CMS_ContentInfo, |
| 1361 | + implicit_tag=0x80, |
| 1362 | + ), |
1361 | 1363 | ASN1F_optional( |
1362 | 1364 | ASN1F_STRING("serverDHNonce", "", explicit_tag=0xA1), |
1363 | 1365 | ), |
@@ -1385,6 +1387,22 @@ class PA_PK_AS_REP(ASN1_Packet): |
1385 | 1387 |
|
1386 | 1388 | _PADATA_CLASSES[17] = PA_PK_AS_REP |
1387 | 1389 |
|
| 1390 | + |
| 1391 | +class KDCDHKeyInfo(ASN1_Packet): |
| 1392 | + ASN1_codec = ASN1_Codecs.BER |
| 1393 | + ASN1_root = ASN1F_SEQUENCE( |
| 1394 | + ASN1F_BIT_STRING_ENCAPS( |
| 1395 | + "subjectPublicKey", DHPublicKey(), DHPublicKey, explicit_tag=0xA0 |
| 1396 | + ), |
| 1397 | + UInt32("nonce", 0, explicit_tag=0xA1), |
| 1398 | + ASN1F_optional( |
| 1399 | + KerberosTime("dhKeyExpiration", None, explicit_tag=0xA2), |
| 1400 | + ), |
| 1401 | + ) |
| 1402 | + |
| 1403 | + |
| 1404 | +_CMS_ENCAPSULATED["1.3.6.1.5.2.3.2"] = KDCDHKeyInfo |
| 1405 | + |
1388 | 1406 | # [MS-SFU] |
1389 | 1407 |
|
1390 | 1408 |
|
|
0 commit comments