问题标签 [asn1]

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 回答
257 浏览

c - osmocom asn1c生成的C代码编译问题

我已经安装了osmocom asn1c 编译器分支aper-prefix,以获得 TCAP 协议的实现。我已经使用相应的脚本来编译“.asn”文件。C文件生成成功,但是编译得到的C代码时报错,与这行代码有关:

事实上,文件EXTERNAL.h 是缺失的(貌似这个编译器不支持EXTERNAL 类型)。有人知道这个问题和可能的解决方案吗?

0 投票
0 回答
138 浏览

c - osmocom asn1c 为 GSM_MAP/TCAP 协议生成的 C 代码中的文件名冲突

我使用了osmocom asn1c 编译器(aper-prefix 分支)来获得 GSM_MAP 和 TCAP 协议的实现。每个协议都已成功编译。但是在一个项目中同时使用两者时,会出现以下错误:

我建议问题是 C 语言中的文件名冲突,因为在两个不同的 C 文件中有相同的名称结构和不同的定义(例如ErrorCode.h,在两种协议中都使用)

所以尝试解决问题,使用osmocom PREFIX功能:

但是,编译器会报告以下语法错误:

有人知道这个问题和可能的解决方案吗?

0 投票
1 回答
137 浏览

c - 如何在 ASN.1 生成的 C 代码中添加消息可选部分

我使用了libosmo-as​​n1-map中的 C 代码来获得 GSM_MAP 协议的实现。然后我尝试对“发送身份验证信息”消息进行编码。如3GPP TS 29.002中所述,该消息包含一些强制性部分(例如'imsi')和一些可选部分(例如'requestingNodeType')。

我使用了以下受osmo-tcap-map项目启发的 C 代码。

但是 XER 输出中没有可选部分,而“ requestingNodeType ”已被​​初始化:

如何启用可选部分(即在消息中添加“requestingNodeType”)?

0 投票
2 回答
538 浏览

ruby - 如何在 Ruby 中解析 A​​SN1

仍然对 ASN1 有点困惑。我正在使用 ruby​​ openssl 解析 RFC3161 时间戳响应,所以我知道规范。我很确定结构已正确加载,但我对如何找到我想要的部件/键感到困惑。我知道有序列(有序)和集合(无序/唯一)。

我看到我们可以调用asn1_object.value[0].value[0],但这很笨拙,我希望如果我知道键或标题,我可以像 JSON 或 YAML 一样对待它,然后调用 asn1_object['TSTInfo']['serialNumber']. 它不是这样工作的吗?

我们是否应该使用序列的属性,这些属性应该是有序的并且已经知道它们的位置,因为我们也有规范和长度?这对我来说很奇怪,但也许那是因为我以前没有使用过很多 TLV 格式。不幸的是,openssl 的文档很少,只是如何OpenSSL::ASN1.decode(der)通过索引加载对象和访问值。还有一种traverse方法,但这不会产生标题名称或我认为在这种情况下使用的任何东西。

0 投票
1 回答
3916 浏览

c++ - OpenSsl 无法读取 DER 格式的证书

更新

我的解决方案基于这个这个答案。

背景

我正在尝试读取 DER 格式的证书文件并尝试对其进行验证。

我的证书是DER格式的。我已经通过以下方式确认了这一点:

使用openssl命令行:

  • openssl x509 -text -noout -inform DER -in Cert.cer:显示证书

  • openssl x509 -text -noout -in Cert.cer: 显示unable to load certificate

  • openssl x509 -inform der -in Cert.cer -out Cert.pem: 将 DER 转换为 PEM

我正在使用以下代码阅读:

输出:

调用后更新输出ERR_load_crypto_strings();

问题

d2i_X509_bio(bio_mem, NULL)返回NULL

转换后,我已成功读取 PEM 格式的证书:X509 *x509 = PEM_read_bio_X509(bio_mem, NULL, NULL, NULL);

问题

  • 我错过的代码中有什么问题吗?

  • 如何DER使用 openssl 读取格式化的 x509 证书文件?

0 投票
1 回答
529 浏览

openssl - 为什么在将 pkcs8 密钥从 pem 转换为 der 时需要密码

因为 pem 只是 der 的 base64 编码。为什么在从一种编码转换为另一种编码时需要密码?如果我用java中的字节数组中的代码读取证书(删除了封装边界)并将该字节数组写入文件,那不是der文件吗?我试过了,但没有用。

我正在使用带有 aes256 的 pkcs8 密码保护密钥

0 投票
0 回答
479 浏览

python - 从 PKCS11 和 Asn1crypto 签名证书中提取公钥时出错

除了这个线程:信任链在哪里?[python] asn1crypto 和 pkcs11 阿拉丁 USB eToken

我试过了:

这个文件的内容是:

该文件或该线程中的代码有什么问题?我无法提取公钥。

0 投票
1 回答
1095 浏览

c++ - 在 ASN1.DER 中使用 point2hex 导出 EC_POINT 并使用 Java 重新创建为 X.509

我正在使用 OpenSSL 和 C++ 生成 ECDSA Prime256 密钥对,并尝试使用 Java 导入十六进制版本的公钥。我将从 C++ 获得的字节数组传递给 java 中的以下函数,该函数期望字节数组采用 X.509 编码格式。

我使用以下函数创建了一个椭圆曲线密钥对,该函数重新调整了EC_KEY*

鉴于上述函数返回的密钥对,我想将公钥导出为 ASN1.DER 格式,该格式可以使用上述 java 方法导入。

我通过执行以下操作将类型EC_POINT*为十六进制的公钥转换为:EC_POINT_point2hex()

其中返回以下内容: 04F588CD1D7103A993D47E53D58C3F40BE8F570604CF2EA01A7657C1423EB19C51BC379F0BEE1FAA60BB9A07DE73EA9BEF7709C1C6429D4051B44F73A458FFB80D

当我使用ASN.1 解码器检查它时,我看到一条消息说Length over 48 bits not supported at position 1并尝试使用 java 方法导入它,我收到如下错误:

将公钥从 EC_POINT* 导出到 X.509 编码的十六进制字符串时,我是否遗漏了什么,我可以导入该字符串以验证任何签名?

0 投票
1 回答
70 浏览

openssl - 在客户端升级openssl后无法解析证书

我们已将客户端的 openssl 从 升级OpenSSL 1.0.1e-fipsOpenSSL 1.1.1b. 服务器端正在运行Bouncy Castle 1.46

OpenSSL 1.0.1e-fips客户端,服务器发送一个如下所示的证书:

OpenSSL 1.1.1b客户端,服务器发送一个如下所示的证书:

如果您问我,它们非常相似,但我们现有的未更改流程在调用时失败:

来自 openssl 的错误消息是:

我们是否应该以不同的方式签署证书?或者改变一些其他领域?

哪个标签出错了?

编辑添加了证书的 PEM 格式。服务器根本不使用openssl,它在java中使用Bouncy Castle 1.46

非常感谢!

0 投票
1 回答
244 浏览

asn1 - 无法使用 asn1 编译器生成所需的数据结构

我正在将 NGAP asn1c 转换为 c 数据结构,我能够成功编译所有文件,它生成 .c 和 .h 文件,但是,它包含嵌套结构,当我 grep 那个结构不存在的嵌套结构时。我正在使用 asn1c-0.9.29 版本。和 asn1 文件在 NGAP 规范 138 413 中给出。