2

背景:

在 1994 年之前,EXTERNAL是这样定义的(带有自动和显式标记):

EXTERNAL  ::=  [UNIVERSAL 8] IMPLICIT SEQUENCE
    {
    direct-reference  OBJECT IDENTIFIER OPTIONAL,
    indirect-reference  INTEGER OPTIONAL,
    data-value-descriptor  ObjectDescriptor  OPTIONAL,
    encoding  CHOICE
                {single-ASN1-type  [0] ANY,
                octet-aligned     [1] IMPLICIT OCTET STRING,
                arbitrary         [2] IMPLICIT BIT STRING}
    }

但从那以后,它被定义为:

EXTERNAL := [UNIVERSAL 8] IMPLICIT SEQUENCE {
    identification CHOICE {
        syntax OBJECT IDENTIFIER,
        presentation-context-id INTEGER,
        context-negotiation SEQUENCE {
            presentation-context-id INTEGER,
            transfer-syntax OBJECT IDENTIFIER } },
    data-value-descriptor ObjectDescriptor OPTIONAL,
    data-value OCTET STRING }

Dubuisson 的ASN.1说(第 412 页):

特定于上下文的标签,特别是出现在encoding组件(类型CHOICE)的替代品之前必须被编码,而不是那些在 1994 版本中计算的标签。

在第 413 页,他描述了如何对 进行编码INSTANCE OF,他指出其编码方式与 相同EXTERNAL。这些identification节目仅由一个数字为 6 ( OBJECT IDENTIFIER) 的通用标签编码。节目的encoding形式

[CONTEXT 0]
    [UNIVERSAL 2]

这意味着他正在编码一个INTEGER, 5, 作为他的选择single-ASN-type

我的问题

如果 1994 年后的版本EXTERNAL向后兼容,则data-value必须转换为 1994 年前的替代版本之一encoding哪一个?

换句话说,如果我对 1994 年后的内容进行编码(EXTERNAL仅出于示例的目的而使用),它是否会被编码为presentation-context-ididentification

[UNIVERSAL 8]
    [UNIVERSAL 2] (presentation-context-id => indirect-reference)
    [CONTEXT 0] (data-value => single-ASN1-type)
        [UNIVERSAL 4]

或者

[UNIVERSAL 8]
    [UNIVERSAL 2] (presentation-context-id => indirect-reference)
    [CONTEXT 1] (data-value => octet-aligned)

提前致谢!

4

1 回答 1

2

请参阅建议。ITU-T X.690 | ISO/IEC 8825-1 第 18 条。它详细描述了如何保持向后兼容性,准确指示如何将 X.680 外部关联序列的值映射到 X.690 中定义的以下序列:

[UNIVERSAL 8] IMPLICIT SEQUENCE {
    direct-reference                OBJECT IDENTIFIER OPTIONAL,
    indirect-reference              INTEGER OPTIONAL,
    data-value-descriptor           ObjectDescriptor OPTIONAL,
    encoding                        CHOICE {
    single-ASN1-type                        [0] ABSTRACT-SYNTAX.&Type,
    octet-aligned                           [1] IMPLICIT OCTET STRING,
    arbitrary                               [2] IMPLICIT BIT STRING } }

此外,此序列假定 EXPLICIT TAGS 环境而不是 AUTOMATIC TAGS 作为 X.680 中的序列。

于 2017-11-30T15:03:05.820 回答