2010年7月13日 星期二

ASN.1 的 TYPE-IDENTIFIER.&Type 語法

遇到一個 ASN.1 語法敘述,查到在討論群有人問一樣的問題:[ASN.1] TYPE-IDENTIFIER.&Type是甚麼意思
例如:
X ::= SEQUENCE
{
  a INTEGER, -- stuff...
  b BOOLEAN
}
Z ::= SEQUENCE
y TYPE-IDENTIFIER.&Type (X)
}
則表示 "y" MUST be of type "X" only. 意思同於
Z ::= SEQUENCE
{
    y OCTET STRING (CONTAINING X)
}
這種表示法適用表示於當資料 y 以 PER Encode 後的狀態。舉例說明:
T.38 Annex A ---ASN.1 Notation 可見到
UDPTLPacket ::= SEQUENCE
{
seq-number  INTEGER (0..65535),
primary-ifp-packet   TYPE-IDENTIFIER.&Type(IFPPacket),
error-recovery CHOICE
{
      secondary-ifp-packets SEQUENCE OF TYPE-IDENTIFIER.&Type(IFPPacket),
      fec-info   SEQUENCE
{
         fec-npackets  INTEGER,
         fec-data   SEQUENCE OF OCTET STRING
      }
}
}
我們限定 primary-ifp-packet 必須是經過 PER Encode 之後的 IFPPacket, 還有
secondary-ifp-packets 也是連續的 PER Encode 過的 octets stream. 唯有用
"TYPE-IDENTIFIER.&Type" 語法,才能表示出來。
更多的說明,可參考:
"Communications Between Heterogenus Systems" by Oliver Dubuisson, or
"ASN.1 Complete" by John Larmouth
#



沒有留言:

張貼留言