Openssl Asn1parse无法正确提取数据

Openssl Asn1parse无法正确提取数据,openssl,pem,asn1,asn1crypto,openssl-cms,Openssl,Pem,Asn1,Asn1crypto,Openssl Cms,使用asn1parse解码openssl数据时出现问题。使用asn1parse命令后,out.pem contains与预期输出不匹配。实际输出和预期输出如下所示。 请帮我解决这个问题 openssl asn1parse-通知PEM-in base64.PEM-out.PEM cat base64.pem Miidmqylkozihvcnaqqasugogoibihzskicagicjpzxrmlxn6 Dhaty29UDMV5ZWqtaw5MbZpvbmjvyxjkaw5nluzM9YBwf0

使用asn1parse解码openssl数据时出现问题。使用asn1parse命令后,out.pem contains与预期输出不匹配。实际输出和预期输出如下所示。 请帮我解决这个问题

openssl asn1parse-通知PEM-in base64.PEM-out.PEM

cat base64.pem Miidmqylkozihvcnaqqasugogoibihzskicagicjpzxrmlxn6 Dhaty29UDMV5ZWqtaw5MbZpvbmjvyxjkaw5nluzM9YBwf0Aw9UijogewogicgIcgIgIgIgIgIgIgCg93BmxVyWqtDxJgIgWgIgIgIgIgIg8VxHbHbHbHbHbHbS5JB20xHgIgIg9VxHbWfWfNzWfNgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIIagicagicagicagicagicagicagicagicagicagicagicagic2gtywxNb3Jpdghtigigigagimldgytc3p0c1c1jb252zxllzc1pbmzvonys0yntyilagicagicagicagicagicagicagic0nox0nzhbrigicagicagicagicagicagic0ozyx0ojjojjogigigigigagicagicagic2ojjjjjjjogigigigigigigagicagic2ojjjgigigigicagic2ojjgigicagic2ojjgicagic2ojicagicagic0jjjjjjjgicjagicagicagicagic2ojjjjjjjjjjjjjNVBMZPZ3VYYXRPB24TC2NYAXb0Ijogical5OwlHvZr2Ww1GemfBcGxZmH2UnkCgJutnBar1VnzedobeliqNlauzQyJi1BwxZdFjBuyWyWyVc5DuxyTmPjWxWxWxWxWxZem0DuxSuxUyWyVc25MAWd1CMf0AW9UlHbHbHbHbHbHbHbHbHbHbMrNdJ9UzMdZlIzMdJmWxDdGyWxDdGyWz9UzLdGnzLdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJd5GizQSTDZZ09IIWKICAGICAGICAGICGG9ZDC1JB25MAWD1CMF0AW9ULXNJCMLWDCI6ICJJETLPYVC0DLLTRNPHQXBSWTJODKLDSNBIBK5WWKDVZ2HAGXJSEJ2YZNRDFKYOxVABWXUZHKAGRHHZIATF6WTNKIUXVMATRPQ9PSIKIIH0KFQ==

0:d=0  hl=2 l=  86 prim: appl [ 7 ]        
88:d=0 hl=2 l=67初始值:应用[9]

cat out.pem GVudC1va2F5Lz4KPC90b3A+Cg==“, “配置后脚本”:“IY9IAW4VYMFZAAPLY2HVICJPBNNPZUGDGHLIHBVC3QTY29UZMLNDXJHDGLVBI1ZY3JPCHQULI4ICG=” } }

预期的out.pem
b'0\x82\x03\x99\x06\x0b*\x86H\x86\xf7\r\x01\t\x10\x01+\xa0\x82\x03\x88\x04\x82\x03\x84{\n“ietf sztp传送信息:载入信息”:{\n“启动映像”:{\n“下载uri”:[\n”https://example.com/my-boot-image.img“\n],\n“图像验证”:[\n”{\n“哈希算法”:“ietf sztp传送信息:sha-256”,\n“哈希值”:“d8:56:8d:d2:10:5e:dc:75:4c:c7:87:ae:f1:27:97:65:e0:65:17:6c:04:61:22:fa:3e:82:cf:9d:0f:ae:1a:3d”\n}\n}\n“预配置脚本”:IY9IAW4VYMFZAAPLY2HVICJPBNNPZGUGDGHLIHBYZS1JB25MAWD1CMF0AW9ULXNJCMLWDC4ULIK“,\n“配置处理”:“合并”,\n“配置”:“PHRVCCB4BWXUCZ0IAHR0CHM6L2V4YW1WBGUY29TL2NBMZPZYI+CIAGPGFUES14BWWTY29UDGVUDC1VA2F5L4KPC90B3A+Cg=”,\n“配置后脚本”:IY9IAW4VYMFZAAPLY2HVICJPBNNPZUGDGHLIHBVC3QTY29UZMLNDXJHDGLVBI1ZY3JPCHQULI4ICG==“\n}\n}”

您的输入文件包含一个长的base64行。OpenSSL要求base64格式的输入将其行包装为64个字符

如果您在*nix环境中,您可以使用
折叠
工具进行换行。您可以使用换行创建不同版本的输入文件,也可以使用以下方法一次性完成:

$ openssl asn1parse -in <(fold -w 64 base64.pem)
    0:d=0  hl=4 l= 921 cons: SEQUENCE          
    4:d=1  hl=2 l=  11 prim: OBJECT            :1.2.840.113549.1.9.16.1.43
   17:d=1  hl=4 l= 904 cons: cont [ 0 ]        
   21:d=2  hl=4 l= 900 prim: OCTET STRING      :{
    "ietf-sztp-conveyed-info:onboarding-information": {
        "boot-image": {
            "download-uri": [
                "https://example.com/my-boot-image.img"
            ],
            "image-verification": [
                {
                    "hash-algorithm": "ietf-sztp-conveyed-info:sha-256",
                    "hash-value": "f0:f7:5e:34:53:c0:11:72:e3:cf:e1:d9:3a:dc:c7:bf:b5:c6:7f:17:6f:7e:30:75:0a:13:42:16:34:24:9c:2d"
                }
            ]
        },
        "pre-configuration-script": "Iy9iaW4vYmFzaAplY2hvICJpbnNpZGUgdGhlIHByZS1jb25maWd1cmF0aW9uLXNjcmlwdC4uLiIK",
        "configuration-handling": "merge",
        "configuration": "PHRvcCB4bWxucz0iaHR0cHM6L2V4YW1wbGUuY29tL2NvbmZpZyI+CiAgPGFueS14bWwtY29udGVudC1va2F5Lz4KPC90b3A+Cg==",
        "post-configuration-script": "Iy9iaW4vYmFzaAplY2hvICJpbnNpZGUgdGhlIHBvc3QtY29uZmlndXJhdGlvbi1zY3JpcHQuLi4iCg=="
    }
}

$openssl asn1parse-in 0:d=0 hl=4 l=921 cons:SEQUENCE 4:d=1 hl=2 l=11 prim:OBJECT:1.2.840.113549.1.9.16.1.43 17:d=1 hl=4 l=904 cons:cont[0]21:d=2 hl=4 l=900 prim:OCTET字符串:{上面的输出显示对象:1.2.840.113549.1.9.16.1.43,对象的意义是什么以及如何检索“1.2.840.113549.1.9.16.1.43”“0:d=0 hl=4 l=921 cons:SEQUENCE 4:d=1 hl=2 l=11 prim:OBJECT:1.2.840.113549.1.9.16.1.43 17:d=1 hl=4 l=904 cons:cont[0]21:d=2 hl=4 l=900 prim:OCTET字符串:{上面的输出显示OBJECT:1.2.840.113549.1.9.16.1.43,OBJECT的意义是什么,以及如何检索“1.2.840.113549.1.9.16.1.43”您的文件中的ASN.1内容是自描述的,带点的十进制数字标识内容的类型,在本例中为
id ct sztpexpressedinfojson
。您可以通过这样的网站从id注册表中查询其含义:我需要使用openssl在C语言中实现上述asn1parse逻辑。您能给我指出openssl C API吗您可以查看
asn1parse
工具是如何进行提取/解码的,也可以在中提出新问题,因为该问题的答案不适合注释。