我正在編寫一個Basic Encoding Rules編解碼器,我想編碼一個EmbeddedPDV,它是根據下面的ASN.1定義的。問題是,在編碼identification
時,我不知道如何在BER編碼的二進制文件中說清楚,我提供的OBJECT IDENTIFIER
與syntax
字段相關聯,而與transfer-syntax
字段相關的一個不同。ASN.1嵌入式PDV的BER編碼
EmbeddedPDV ::= [UNIVERSAL 11] IMPLICIT SEQUENCE {
identification CHOICE {
syntaxes SEQUENCE {
abstract OBJECT IDENTIFIER,
transfer OBJECT IDENTIFIER },
syntax OBJECT IDENTIFIER,
presentation-context-id INTEGER,
context-negotiation SEQUENCE {
presentation-context-id INTEGER,
transfer-syntax OBJECT IDENTIFIER },
transfer-syntax OBJECT IDENTIFIER,
fixed NULL },
data-value-descriptor ObjectDescriptor OPTIONAL,
data-value OCTET STRING }
(WITH COMPONENTS { ... , data-value-descriptor ABSENT })
我知道,如果你正在使用顯式標籤,將有兩個syntax
和transfer-syntax
上下文特定標識標籤,但是沒有,比如說,syntax
前[0]
或[1]
和transfer-syntax
分別使它不清楚我應該如何編碼這個。是否有假定與這些字段關聯的特定於上下文的標識符?換句話說,我是否應編碼OBJECT IDENTIFIER
標識符標記爲0x81
來指定我編碼爲syntax
,標識符標記爲0x82
以指定我編碼爲transfer-syntax
?
非常感謝!那正是我需要的! –