我是ASN.1编码的新手。我试图从ASN.1格式创建解析数据,将值替换为标记并重新生成相同格式的文件

时间:2018-04-23 06:53:17

标签: java asn.1

这是我的输入模板:

headerValue ProfileElement ::= header : { 
major-version 2, 
minor-version 0, 
profileType "GSMA Profile Package", 
iccid '89019990001234567893'H, 
eUICC-Mandatory-services { 
usim NULL, 
milenage NULL, 
javacard NULL }, 
eUICC-Mandatory-GFSTEList { 
-- see Note 1 
id-MF, 
id-USIM }, 
-- These SMS connectivity parameters may be freely changed 
connectivityParameters 'A0090607#TON_NPI#DIALING_NUMBER'H } 

我需要相同格式的输出文件,但是ICCID的新值将由JAVA代码动态生成

4 个答案:

答案 0 :(得分:0)

您可以使用适用于java的jASN1库。将数据传递给它并获取解析的对象列表。之后,您可以更改iccid值。

答案 1 :(得分:0)

您是否还需要转换DER编码?如果是这样,我建议使用Nokalva OSS库在Java中创建对象层次结构,然后在DER中进行转换。

如果你不需要DER编码,我们有时会使用一个简单的技巧就是像在#TON_NPI中那样放置一个占位符,并用Java进行搜索/替换。

PS:当然如果您在ProfileHeader中更新ICCID,您还需要在MF下更新2FE2的内容(实际上更重要)

答案 2 :(得分:0)

您引用的是SIM联盟发布的嵌入式Create React App的ASN.1模块定义的一部分。

在一个文件中收集了从7.3节开始的所有ASN.1定义作为模块定义后,可以使用任何免费的或商业的Java ASN.1编译器进行编译。可以将为数据类型和ASN.1编译器的编码/解码运行时库生成的Java源代码嵌入到您的应用程序中,以为Profile Element生成ASN.1编码的字节流。

答案 3 :(得分:0)

如果您对商业(非免费)解决方案没有意见,Objective Systems 有一个名为 ASN2TXT 的工具,该工具将从您拥有的 ASN.1 执行转换Value Notation (AVN) 到 DER 和其他编码。它还可以执行反向转换,以便您可以从 DER 编码的配置文件包中获取 AVN。该工具可以从命令行运行(无需软件开发),也可以使用自己代码中的 .so/.dll 库。

对于 eSIM 配置文件生成,您可以先使用该工具将配置文件包模板从 AVN 转换为 XER,使用 XPath 个性化配置文件包,然后将 XER 表示转换为 DER 以上传到 SM-DP+。

>

我不为 Objective Systems 工作 - 只是一个快乐的客户。