Skip to content

Commit 3ca50b5

Browse files
authored
Merge pull request #273 from vollkorntomate/master
Add support for GeneralizedTime (#235)
2 parents 554c888 + 65b018f commit 3ca50b5

3 files changed

Lines changed: 19 additions & 2 deletions

File tree

examples/dump.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def read_pem(input_file):
4848
asn1.Numbers.PrintableString: "PRINTABLESTRING",
4949
asn1.Numbers.IA5String: "IA5STRING",
5050
asn1.Numbers.UTCTime: "UTCTIME",
51+
asn1.Numbers.GeneralizedTime: "GENERALIZED TIME",
5152
asn1.Numbers.Enumerated: "ENUMERATED",
5253
asn1.Numbers.Sequence: "SEQUENCE",
5354
asn1.Numbers.Set: "SET"

src/asn1.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class Numbers(IntEnum):
4242
PrintableString = 0x13
4343
IA5String = 0x16
4444
UTCTime = 0x17
45+
GeneralizedTime = 0x18
4546
UnicodeString = 0x1e
4647

4748

@@ -269,7 +270,8 @@ def _encode_value(self, cls, nr, value): # type: (int, int, any) -> bytes
269270
return self._encode_integer(value)
270271
if nr in (Numbers.OctetString, Numbers.PrintableString,
271272
Numbers.UTF8String, Numbers.IA5String,
272-
Numbers.UnicodeString, Numbers.UTCTime):
273+
Numbers.UnicodeString, Numbers.UTCTime,
274+
Numbers.GeneralizedTime):
273275
return self._encode_octet_string(value)
274276
if nr == Numbers.BitString:
275277
return self._encode_bit_string(value)
@@ -544,7 +546,9 @@ def _read_value(self, cls, nr, length): # type: (int, int, int) -> any
544546
value = self._decode_null(bytes_data)
545547
elif nr == Numbers.ObjectIdentifier:
546548
value = self._decode_object_identifier(bytes_data)
547-
elif nr in (Numbers.PrintableString, Numbers.IA5String, Numbers.UTF8String, Numbers.UTCTime):
549+
elif nr in (Numbers.PrintableString, Numbers.IA5String,
550+
Numbers.UTF8String, Numbers.UTCTime,
551+
Numbers.GeneralizedTime):
548552
value = self._decode_printable_string(bytes_data)
549553
elif nr == Numbers.BitString:
550554
value = self._decode_bitstring(bytes_data)

tests/test_asn1.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,6 +1082,18 @@ def test_utc_time(self):
10821082
):
10831083
TestEncoderDecoder.assert_encode_decode(v, asn1.Numbers.UTCTime)
10841084

1085+
def test_generalized_time(self):
1086+
for v in \
1087+
(
1088+
'19920521000000Z',
1089+
'19920622123421.123Z',
1090+
'20920722132100-0500',
1091+
'20920722132100+0200',
1092+
'20920722132100.123-0500',
1093+
'20920722132100.123+0200',
1094+
):
1095+
TestEncoderDecoder.assert_encode_decode(v, asn1.Numbers.GeneralizedTime)
1096+
10851097
def test_unicode_string(self):
10861098
for v in \
10871099
(

0 commit comments

Comments
 (0)