Skip to content

Commit 92925da

Browse files
add bmp option (#4537)
* add bmp option * add testing of a cert containing a BMP string --------- Co-authored-by: eldad.sitbon <[email protected]>
1 parent 1bab604 commit 92925da

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

scapy/layers/x509.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -218,12 +218,13 @@ class EdDSAPrivateKey(ASN1_Packet):
218218
# Names #
219219

220220
class ASN1F_X509_DirectoryString(ASN1F_CHOICE):
221-
# we include ASN1 bit strings for rare instances of x500 addresses
221+
# we include ASN1 bit strings and bmp strings for rare instances of x500 addresses
222222
def __init__(self, name, default, **kwargs):
223223
ASN1F_CHOICE.__init__(self, name, default,
224224
ASN1F_PRINTABLE_STRING, ASN1F_UTF8_STRING,
225225
ASN1F_IA5_STRING, ASN1F_T61_STRING,
226226
ASN1F_UNIVERSAL_STRING, ASN1F_BIT_STRING,
227+
ASN1F_BMP_STRING,
227228
**kwargs)
228229

229230

test/scapy/layers/x509.uts

+7
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,13 @@ assert ext[6].extnValue.cRLDistributionPoints[0].distributionPoint.distributionP
179179
assert ext[8].extnValue.subjectAltName[1].generalName.dNSName == b"DC1.domain.local"
180180
assert ext[9].extnValue.value == b'S-1-5-21-1924137214-3718646274-40215721-1000'
181181

182+
= Cert class : X509 Certificate with rare fields types
183+
cert_with_bmp_string = base64.b64decode('MIIB3DCCAaagAwIBAgIBATANBgkqhkiG9w0BAQsFADCB9jELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQHEwJMRzEXMBUGA1UEChMOV2Vic2Vuc2UsIEluYy4xGjAYBgNVBAsTEVdlYnNlbnNlIEVuZHBvaW50MSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QHdlYnNlbnNlLmNvbTE2MDQGA1UEAxMtV2Vic2Vuc2UgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MTswOQYDVQQNHjIAMQAyADQANgAxADgAMwA1ADEANABFAFAAQAB3AGUAYgBzAGUAbgBzAGUALgBjAG8AbTAeFw0yNDExMDUxMDA0MjlaFw0yNDExMDYxMDE0MjlaMEMxCzAJBgNVBAYTAkZSMRQwEgYDVQQKEwtTY2FweSwgSW5jLjEeMBwGA1UEAxMVU2NhcHkgRGVmYXVsdCBTdWJqZWN0MBowDQYJKoZIhvcNAQELBQADCQAwBgIBCgIBA6MTMBEwDwYDVR0TAQEABAUwAwEBADANBgkqhkiG9w0BAQsFAAMhAGRlZmF1bHRzaWduYXR1cmVkZWZhdWx0c2lnbmF0dXJl')
184+
c = X509_Cert(cert_with_bmp_string)
185+
bmp_field_value = str(c.tbsCertificate.issuer[7].rdn[0].value.val, "utf-16be")
186+
assert bmp_field_value == '[email protected]'
187+
188+
182189
############ CRL class ###############################################
183190

184191
+ X509_CRL class tests

0 commit comments

Comments
 (0)