如何使用NSS的SEC_ASN1Template建模RFC3161准确度ASN.1 SEQUENCE?

时间:2015-02-18 10:21:49

标签: asn.1 nss rfc3161

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结构的字段,因为它们都将进入该字段的同一部分(最低字节)。

1 个答案:

答案 0 :(得分:0)

请注意

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

vs(显式)

30 08
   01 01 02
   A0 03
      02 01 02