问题标签 [pyasn1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - python.pyasn1 表示下面的结构
我是 Python 和 PYASN1 的新手,如何表达以下结构?有什么我可以参考的文件吗?我在internet上搜索,有一个关于PYASN1的小文档
python - 如何运行使用 pip 安装的 pyasn1
显然我做错了什么,我在各处找到的所有说明都说明了如何使用 PIP 安装(此处为程序名称),而不是如何执行它。
我正在尝试使用 python3 虚拟环境运行 pyasn1。
我也尝试过使用我的默认 python2.7 环境,但也不喜欢那里。
只是为了检查我是否在新的虚拟环境中。
现在我们无数次安装 pyasn1 ......
这就是事情出错的地方......
(没什么,在虚拟路径里找不到)
(只找到一个目录,里面有一堆文件,没有一个叫pyasn1)
显然,这也行不通……
python - pyasn1 与不定长结构
pyasn1无法单独(不定义新类型)解析下面代码片段中描述的不定长度构造数据是一个错误,还是我的示例不是有效的 BER 编码 ASN.1?
如果 pyasn1 在没有帮助的情况下无法处理这个问题,我可以求助于另一个 python 库吗?
python - ParseError:第 1 行第 1 列的 ASN.1 语法无效:'>!<"':预期的模块引用
我是 asn1 的新手,我的议程是将 python 字典转换为 .asn 格式。当我运行以下代码时,出现以下错误
ParseError:第 1 行第 1 列的 ASN.1 语法无效:'>!<"':预期的模块引用。
c# - Powershell 中的 pyasn decoder.decode 的等价物
我有一个 der 编码的字节数组,我需要使用 Powershell 或通过从 powershell 访问 C# 库将这些字节解码为 asn1 对象。在 python 中,有一个模块用于执行此过程,称为 pyasn1。
我尝试使用 C# 类 ASNEncodedData 但它不提供 der 解码器。我确实在 python 中使用以下内容成功完成了该过程。
将十六进制形式的 Der 解码为 asn1 对象的 Python 代码:
我希望能够将 der 编码数据解码为如下所示的 asn1 对象:
python - 如何从 ASN.1 结构 (pyasn1) 中删除字段?
基本上,我正在寻找这样的东西:
除了,显然,类中不存在这样的功能remove
。del x[2]
也不起作用,因为该__del__
功能没有实现。
python - 如何使用 pyasn1 创建 GeneralName?
一般来说,对于 pyasn1 (pyasn1 0.4.8, pyasn1-modules 0.2.8) 和 ASN.1 来说,我正在尝试构建一个GeneralName
:
我截断了很长的异常消息。据我了解,本质是提供的 Name 对象是未标记的,而某些标记是预期的。我可以通过使用来解决异常general_name.setComponentByName('directoryName', name, matchTags=False)
,但我不确定这是否只是关闭了所需/重要的检查,并且会在以后咬我。pyasn1Tag
和TagSet
文档并没有启发我,但这可能是因为我还没有真正理解 ASN.1 中标签的用途。
所以,我的主要问题是:如何正确地GeneralName
用 pyasn1 创建一个?子问题:
- ASN.1 中标签的用途是什么?我认为它们是类型说明符(如:“这是一个整数、布尔值、序列等”),但显然我遗漏了一些东西。
- 我用一个
UTF8String
. 解码使用 OpenSSL 创建的时间戳响应,我发现 aPrintableString
在 a 中使用GeneralName
。我凭直觉选择了前者,但这会导致问题(取决于使用环境)吗?
cryptography - 解码具有奇怪长度的 ASN1 编码的“主题密钥标识符”
我试图解码一个名为 Subject Key Identifier (RFC 5820) 的字段,该字段包含在 CMS 证书 (RFC 6488) 中。我之前的大部分“工作”都成功地使用了 pyasn1 和 pyasn1_modules 来解码 ASN1 结构。但是我得到了错误:
使用调试器我发现在阅读时出现了问题:
查看第一个八位字节(AF -> 10101111),我的理解是这是构造定长方法,标识符为 15。
由于第一个八位组已经完成,第二个是长度。9F -> 10011111,由于设置了 MSB,长度将由接下来的 31 个八位字节设置。然而,整个“有效载荷”是 20 个字节(八位字节)。这有什么意义?
(我想值 31 和 18 是错误告诉我的,但如果任何其他初学者发现它有用,请保留解释!)
python - 如何从 Python 中的 x.509 证书中删除 CT 扩展?
我正在编写一个 Python 脚本,我需要在其中确定预证书和叶证书是否匹配。
为此,在删除 SCT(1.3.6.1.4.1.11129.2.4.2) 和 Precert Poison(1.3.6.1.4.1.11129.2.4.3) 扩展后,我需要比较 precert 和叶子证书的 TBS 证书。
使用 python 加密模块,很容易获得 TBS 证书:
但是,我无法弄清楚如何删除这些扩展。看起来 asn1crypto 可以做到这一点,但似乎可用的文档很少。
删除这些扩展的最巧妙方法是什么?如果可行,我很高兴依赖 openssl,因为我已经在脚本中使用它。
python - 如何解决不支持 RELATIVE-OID 的 ASN.1 库
我正在尝试使用asn1tools
Python 库来解码和编码符合Ember+标准的 BER 消息。
该标准的 DTDRELATIVE-OID
在某些地方使用 ASN.1 的类型。但是,asn1tools
不知道这种类型,可能是因为底层pyasn1
库没有实现它(还没有,有一个拉请求)。这就是为什么我不能在我的 Python 程序中使用那个 DTD。但我真的必须这样做。
正如我所看到的,我的选择是创建一个包含 PR 的补丁版本pyasn1
并RELATIVE-OID
使用asn1tools
它,或者以某种方式在 DTD 中构建一个解决方法。
我已经尝试添加RELATIVE-OID ::= [UNIVERSAL 13] OCTET STRING
到 DTD,但现在asn1tools
响应Expected RELATIVE-OID with tag '2d' at offset 10, but got '0d'.
基本上它似乎接受我的定义,但将其设为“通用构造 13”,而消息将其标记为“通用原语13”。
我有办法解决这个问题吗?
这是我的限制:
- 我基本上必须使用
asn1tools
,我的代码已经严重依赖它。 - 我必须能够解析和创建与将这些字段标记为
0d
. - 我可以随意在 DTD 中进行编辑,例如添加定义的类型
RELATIVE-OID
(但以什么方式?)或用其他东西替换每次出现的RELATIVE-OID
,只要它仍然可以处理将字段标记为0d
. - 我完全可以将
RELATIVE-OID
值作为不透明的斑点bytes
或其他东西,这就是为什么我OCTET STRING
首先尝试了解决方法。
我的 ASN.1 知识有限,而且我不擅长编写 DTD。也许有一种方法可以强制类型为“原始”?我很高兴有任何建议。如果您想自己尝试一下,请使用上面链接的 DTD。然后,使用以下 Python 代码: