繁体   English   中英

使用BER编码规则编码时,如何用通用标签表示ASN.1值?

[英]How to express a ASN.1 value with universal tags when encoded using BER encoding rule?

根据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

Cyber​​Chef将其解析为以下ASN.1树

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    

由Cyber​​Chef解析后,可以得到以下更好的ASN.1树

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

非常感谢您的努力!

看来原因是在模块的开头使用了“ AUTOMATIC TAGS”,对所有SEQUENCE,SET和CHOICE类型的组件强制执行上下文特定的标签。 如果将“ AUTOMATIC”更改为“ EXPLICIT”,则该值可以用通用标签表示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM