gpt4 book ai didi

python-3.x - 在 asn1 证书中搜索特定值

转载 作者:行者123 更新时间:2023-12-05 05:35:21 28 4
gpt4 key购买 nike

正在使用带有 x509 的 asn1crypto 包。我想在 .der 文件中找到特定的值。文件被打开并读取(),然后:

mycert = x509.Certificate.load(data)

这将返回类型为 asn1crypto.x509.Certificate 的对象,例如 b'0\x81\x50\...'。在调试中,可以扩展 mycert 以显示各种键和值,但是我想直接在“mycert”中搜索此类键/值。我该怎么做?

编辑:

asn1crypto 包不是一定要用,可以用另外一个包代替。

编辑:

扩展代码:

with open(cert_path, 'rb') as cert_file:
data = cert_file.read()

mycert = x509.Certificate.load(data)

a = mycert.native # doesn't work!

最佳答案

asn1crypto.x509 中,属性 native 包含证书的 native Python 数据类型表示。这些值是分层结构的,也可以是 OrderedDicts:

import asn1crypto.x509 as x509
import pprint

with open('crt.der', mode='rb') as file:
data = file.read()

mycert = x509.Certificate.load(data)

pprint.pprint(mycert.native)

输出:

OrderedDict([('tbs_certificate',
OrderedDict([('version', 'v3'),
('serial_number', 15158908894724103801),
('signature',
OrderedDict([('algorithm', 'sha256_rsa'),
('parameters', None)])),
('issuer',
OrderedDict([('country_name', 'XX'),
('state_or_province_name',
'Some-State'),
('locality_name', 'Some-City'),
('organization_name', 'example ltd'),
('common_name', 'www.example.com'),
('email_address',
'info@example.com')])),
('validity',
OrderedDict([('not_before',
datetime.datetime(2022, 9, 5, 6, 58, 21, tzinfo=datetime.timezone.utc)),
('not_after',
datetime.datetime(2022, 10, 5, 6, 58, 21, tzinfo=datetime.timezone.utc))])),
('subject',
OrderedDict([('country_name', 'XX'),
('state_or_province_name',
'Some-State'),
('locality_name', 'Some-City'),
('organization_name', 'example ltd'),
('common_name', 'www.example.com'),
('email_address',
'info@example.com')])),
...

您可以在 SO 中找到关于如何在嵌套字典中搜索(如“Find all occurrences of a key in nested dictionaries and lists”)的多个讨论。

关于python-3.x - 在 asn1 证书中搜索特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73539849/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com