问题标签 [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.

0 投票
1 回答
34 浏览

python - python.pyasn1 表示下面的结构

我是 Python 和 PYASN1 的新手,如何表达以下结构?有什么我可以参考的文件吗?我在internet上搜索,有一个关于PYASN1的小文档

0 投票
1 回答
842 浏览

python - 如何运行使用 pip 安装的 pyasn1

显然我做错了什么,我在各处找到的所有说明都说明了如何使用 PIP 安装(此处为程序名称),而不是如何执行它。

我正在尝试使用 python3 虚拟环境运行 pyasn1。

我也尝试过使用我的默认 python2.7 环境,但也不喜欢那里。

只是为了检查我是否在新的虚拟环境中。

现在我们无数次安装 pyasn1 ......

这就是事情出错的地方......

(没什么,在虚拟路径里找不到)

(只找到一个目录,里面有一堆文件,没有一个叫pyasn1)

显然,这也行不通……

0 投票
2 回答
362 浏览

python - pyasn1 与不定长结构

pyasn1无法单独(不定义新类型)解析下面代码片段中描述的不定长度构造数据是一个错误,还是我的示例不是有效的 BER 编码 ASN.1?

如果 pyasn1 在没有帮助的情况下无法处理这个问题,我可以求助于另一个 python 库吗?


0 投票
2 回答
946 浏览

python - ParseError:第 1 行第 1 列的 ASN.1 语法无效:'>!<"':预期的模块引用

我是 asn1 的新手,我的议程是将 python 字典转换为 .asn 格式。当我运行以下代码时,出现以下错误

ParseError:第 1 行第 1 列的 ASN.1 语法无效:'>!<"':预期的模块引用。

0 投票
0 回答
269 浏览

c# - Powershell 中的 pyasn decoder.decode 的等价物

我有一个 der 编码的字节数组,我需要使用 Powershell 或通过从 powershell 访问 C# 库将这些字节解码为 asn1 对象。在 python 中,有一个模块用于执行此过程,称为 pyasn1。

我尝试使用 C# 类 ASNEncodedData 但它不提供 der 解码器。我确实在 python 中使用以下内容成功完成了该过程。

将十六进制形式的 Der 解码为 asn1 对象的 Python 代码:

我希望能够将 der 编码数据解码为如下所示的 asn1 对象:

0 投票
0 回答
65 浏览

python - 如何从 ASN.1 结构 (pyasn1) 中删除字段?

基本上,我正在寻找这样的东西:

除了,显然,类中不存在这样的功能removedel x[2]也不起作用,因为该__del__功能没有实现。

0 投票
1 回答
229 浏览

python - 如何使用 pyasn1 创建 GeneralName?

一般来说,对于 pyasn1 (pyasn1 0.4.8, pyasn1-modules 0.2.8) 和 ASN.1 来说,我正在尝试构建一个GeneralName

我截断了很长的异常消息。据我了解,本质是提供的 Name 对象是未标记的,而某些标记是预期的。我可以通过使用来解决异常general_name.setComponentByName('directoryName', name, matchTags=False),但我不确定这是否只是关闭了所需/重要的检查,并且会在以后咬我。pyasn1TagTagSet文档并没有启发我,但这可能是因为我还没有真正理解 ASN.1 中标签的用途。

所以,我的主要问题是:如何正确地GeneralName用 pyasn1 创建一个?子问题:

  • ASN.1 中标签的用途是什么?我认为它们是类型说明符(如:“这是一个整数、布尔值、序列等”),但显然我遗漏了一些东西。
  • 我用一个UTF8String. 解码使用 OpenSSL 创建的时间戳响应,我发现 aPrintableString在 a 中使用GeneralName。我凭直觉选择了前者,但这会导致问题(取决于使用环境)吗?
0 投票
0 回答
131 浏览

cryptography - 解码具有奇怪长度的 ASN1 编码的“主题密钥标识符”

我试图解码一个名为 Subject Key Identifier (RFC 5820) 的字段,该字段包含在 CMS 证书 (RFC 6488) 中。我之前的大部分“工作”都成功地使用了 pyasn1 和 pyasn1_modules 来解码 ASN1 结构。但是我得到了错误:

使用调试器我发现在阅读时出现了问题:

查看第一个八位字节(AF -> 10101111),我的理解是这是构造定长方法,标识符为 15。

由于第一个八位组已经完成,第二个是长度。9F -> 10011111,由于设置了 MSB,长度将由接下来的 31 个八位字节设置。然而,整个“有效载荷”是 20 个字节(八位字节)。这有什么意义?

(我想值 31 和 18 是错误告诉我的,但如果任何其他初学者发现它有用,请保留解释!)

0 投票
1 回答
92 浏览

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,因为我已经在脚本中使用它。

0 投票
1 回答
309 浏览

python - 如何解决不支持 RELATIVE-OID 的 ASN.1 库

我正在尝试使用asn1toolsPython 库来解码和编码符合Ember+标准的 BER 消息。

该标准的 DTDRELATIVE-OID在某些地方使用 ASN.1 的类型。但是,asn1tools不知道这种类型,可能是因为底层pyasn1库没有实现它(还没有,有一个拉请求)。这就是为什么我不能在我的 Python 程序中使用那个 DTD。但我真的必须这样做。

正如我所看到的,我的选择是创建一个包含 PR 的补丁版本pyasn1RELATIVE-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 代码: