如何使用NSS的SEC_ASN1Template对RFC3161精度ASN.1序列进行建模?



ASN.1对准确性的定义是:

Accuracy ::= SEQUENCE {
    seconds     INTEGER          OPTIONAL,
    millis  [0] INTEGER (1..999) OPTIONAL,
    micros  [1] INTEGER (1..999) OPTIONAL  }

我不清楚的是如何处理millis和micros。将SEC_ASN1_INTEGER通用标记以及0和1标记都放在SEC_ASN1Template结构的同一"kind"字段中是不可行的,因为它们都会进入该字段的同一部分(最低字节)。

注意

millis [0] INTEGER (1..999) OPTIONAL

不是INTEGER类型,而是[0]类型。

也许以下等效的类型定义可能会对您有所帮助:

Accuracy ::= SEQUENCE {
    seconds     AccuracySeconds      OPTIONAL,
    millis  [0] AccuracyMilliseconds OPTIONAL,
    micros  [1] AccuracyMicroseconds OPTIONAL  }
AccuracySeconds ::= INTEGER
AccuracyMilliseconds ::= INTEGER(1..999)
AccuracyMicroseconds ::= INTEGER(1..999)

还需要考虑您的类型定义是否使用IMPLICIT标记或EXPLICIT标记。。。编码会有所不同:

(隐含)

30 06
   01 01 02
   80 01 02

与(显式)

30 08
   01 01 02
   A0 03
      02 01 02

相关内容

  • 没有找到相关文章

最新更新