Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_utc_time(self):
foo = asn1tools.compile_string(
"Foo DEFINITIONS AUTOMATIC TAGS ::= "
"BEGIN "
"A ::= UTCTime "
"END",
'xer')
datas = [
('A', ut2dt('9205210000Z'), b'<a>9205210000Z</a>'),
('A', ut2dt('920622123421Z'), b'<a>920622123421Z</a>')
]
for type_name, decoded, encoded in datas:
self.assert_encode_decode_string(foo, type_name, decoded, encoded)
[
[{'type': '2.5.4.6', 'value': 'JP'}],
[{'type': '2.5.4.8',
'value': ('printableString', 'Tokyo')}],
[{'type': '2.5.4.7', 'value': 'Chuo-ku'}],
[{'type': '2.5.4.10',
'value': ('printableString', 'Frank4DD')}],
[{'type': '2.5.4.11', 'value': 'WebCert Support'}],
[{'type': '2.5.4.3',
'value': ('printableString', 'Frank4DD Web CA')}],
[{'type': '1.2.840.113549.1.9.1',
'value': 'support@frank4dd.com'}]
]
),
'validity': {
'notAfter': ('utcTime', ut2dt('170821052654Z')),
'notBefore': ('utcTime', ut2dt('120822052654Z'))
},
'subject': (
'rdnSequence',
[
[{'type': '2.5.4.6', 'value': 'JP'}],
[{'type': '2.5.4.8', 'value': ('utf8String', 'Tokyo')}],
[{'type': '2.5.4.10',
'value': ('utf8String', 'Frank4DD')}],
[{'type': '2.5.4.3',
'value': ('utf8String', 'www.example.com')}]
]
),
'subjectPublicKeyInfo': {
'algorithm': {
'algorithm': '1.2.840.113549.1.1.1',
def test_utc_time(self):
foo = asn1tools.compile_string(
"Foo DEFINITIONS IMPLICIT TAGS ::= "
"BEGIN "
"A ::= UTCTime "
"END")
datas = [
('A',
ut2dt('001001000000Z'),
b'\x17\x0b\x30\x30\x31\x30\x30\x31\x30\x30\x30\x30\x5a'),
('A',
ut2dt('010203040506Z'),
b'\x17\x0d010203040506Z'),
]
for type_name, decoded, encoded in datas:
self.assert_encode_decode(foo, type_name, decoded, encoded)
def test_utc_time(self):
foo = asn1tools.compile_string(
"Foo DEFINITIONS ::= "
"BEGIN "
"A ::= UTCTime "
"END",
'jer')
datas = [
('A', ut2dt('121001230001Z'), b'"121001230001Z"')
]
for type_name, decoded, encoded in datas:
self.assert_encode_decode_string(foo, type_name, decoded, encoded)
[{'type': '2.5.4.10',
'value': b'\x13\x08\x46\x72\x61\x6e\x6b\x34\x44\x44'}],
[{'type': '2.5.4.11',
'value': (b'\x13\x0f\x57\x65\x62\x43\x65\x72\x74\x20\x53'
b'\x75\x70\x70\x6f\x72\x74')}],
[{'type': '2.5.4.3',
'value': (b'\x13\x0f\x46\x72\x61\x6e\x6b\x34\x44\x44\x20'
b'\x57\x65\x62\x20\x43\x41')}],
[{'type': '1.2.840.113549.1.9.1',
'value': (b'\x16\x14\x73\x75\x70\x70\x6f\x72\x74\x40\x66'
b'\x72\x61\x6e\x6b\x34\x64\x64\x2e\x63\x6f\x6d')}]
]
),
'validity': {
'notAfter': ('utcTime', ut2dt('170821052654Z')),
'notBefore': ('utcTime', ut2dt('120822052654Z'))
},
'subject': (
'rdnSequence',
[
[{'type': '2.5.4.6',
'value': b'\x13\x02\x4a\x50'}],
[{'type': '2.5.4.8',
'value': b'\x0c\x05\x54\x6f\x6b\x79\x6f'}],
[{'type': '2.5.4.10',
'value': b'\x0c\x08\x46\x72\x61\x6e\x6b\x34\x44\x44'}],
[{'type': '2.5.4.3',
'value': (b'\x0c\x0f\x77\x77\x77\x2e\x65\x78\x61\x6d\x70'
b'\x6c\x65\x2e\x63\x6f\x6d')}]
]
),
'subjectPublicKeyInfo': {
datas = [
'',
'8201021211',
'820102120111',
'8201021200K',
'Z820102120011Z',
'820102120060Z',
'82010212006Z',
'8201021200*0100',
'82010212000000100',
'820102999Z'
]
for utc_time in datas:
with self.assertRaises(asn1tools.Error) as cm:
utc_time_to_datetime(utc_time)
self.assertEqual(
str(cm.exception),
"Expected a UTC time string, but got '{}'.".format(utc_time))
'value': b'\x13\x07\x43\x68\x75\x6f\x2d\x6b\x75'}],
[{'type': '2.5.4.10',
'value': b'\x13\x08\x46\x72\x61\x6e\x6b\x34\x44\x44'}],
[{'type': '2.5.4.11',
'value': (b'\x13\x0f\x57\x65\x62\x43\x65\x72\x74\x20\x53'
b'\x75\x70\x70\x6f\x72\x74')}],
[{'type': '2.5.4.3',
'value': (b'\x13\x0f\x46\x72\x61\x6e\x6b\x34\x44\x44\x20'
b'\x57\x65\x62\x20\x43\x41')}],
[{'type': '1.2.840.113549.1.9.1',
'value': (b'\x16\x14\x73\x75\x70\x70\x6f\x72\x74\x40\x66'
b'\x72\x61\x6e\x6b\x34\x64\x64\x2e\x63\x6f\x6d')}]
]
),
'validity': {
'notAfter': ('utcTime', ut2dt('170821052654Z')),
'notBefore': ('utcTime', ut2dt('120822052654Z'))
},
'subject': (
'rdnSequence',
[
[{'type': '2.5.4.6',
'value': b'\x13\x02\x4a\x50'}],
[{'type': '2.5.4.8',
'value': b'\x0c\x05\x54\x6f\x6b\x79\x6f'}],
[{'type': '2.5.4.10',
'value': b'\x0c\x08\x46\x72\x61\x6e\x6b\x34\x44\x44'}],
[{'type': '2.5.4.3',
'value': (b'\x0c\x0f\x77\x77\x77\x2e\x65\x78\x61\x6d\x70'
b'\x6c\x65\x2e\x63\x6f\x6d')}]
]
),
def decode(self, decoder):
decoded = super(UTCTime, self).decode(decoder)
return utc_time_to_datetime(decoded)
def decode(self, data):
return utc_time_to_datetime(data)
def decode(self, data, offset):
offset = self.decode_tag(data, offset)
length, offset = decode_length_definite(data, offset)
end_offset = offset + length
decoded = data[offset:end_offset].decode('ascii')
return utc_time_to_datetime(decoded), end_offset