【问题标题】:How to express a ASN.1 value with universal tags when encoded using BER encoding rule?使用 BER 编码规则编码时如何用通用标签表示 ASN.1 值?
【发布时间】:2017-12-10 20:46:52
【问题描述】:

根据http://asn1-playground.oss.com/,使用以下ASN.1架构,

Test DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
    A ::= SEQUENCE {
      int INTEGER,
      seq SEQUENCE { int INTEGER, bool BOOLEAN },
      u UTF8String
    }  
END

以下值(采用 ASN.1 值表示法格式)

a A ::= 
{  
    int 1,
    seq { int 2, bool TRUE },
    u "ABC"
}

使用BER编码规则用以下18个字节表示

30   10
    80   01   01
    A1   06  
        80   01   02
        81   01   FF
    82   03   414243

which is parsed by CyberChef into the following ASN.1 tree

SEQUENCE
  [0] 01
  [1]
    [0] 02
    [1] FF
  [2] 414243

因此,该值似乎是用应用程序标签表示的。您能否帮忙评论一下该值是否以及如何使用通用标签转换为以下 18 个字节

30   10
    02   01   01
    30   06  
        02   01   02
        01   01   FF
    0C   03   414243    

which would give the following better ASN.1 tree when parsed by CyberChef

SEQUENCE
  INTEGER 01..(total 1bytes)..01
  SEQUENCE
    INTEGER 02..(total 1bytes)..02
    BOOLEAN TRUE
  UNKNOWN(0C) 414243

非常感谢您的努力!

【问题讨论】:

标签: asn.1


【解决方案1】:

原因似乎是在模块的开头使用了“AUTOMATIC TAGS”,对所有 SEQUENCE、SET 和 CHOICE 类型的组件强制执行特定于上下文的标签。值可以用通用标签if "AUTOMATIC" is changed to "EXPLICIT"表示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2012-06-14
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多