2012年5月27日日曜日

データ型 - 文字列型

ASN.1では、特定の文字集合を表現した型が定義されています。



データ型 - オクテット列型

オクテット列型は、値として0個以上のオクテットから構成されるデータ型を表わします。

型の記法
  オクテット列型 ::= OCTET STRING

値の記法
  オクテット列値  ::= 2進列 | 16進列



  G4FacsimileImage ::= OCTET STRING

  helloworld OCTET STRING ::= '48656C6C6F20576F726C64'H
  h OCTET STRING ::= '48'H
  h OCTET STRING ::= '10010000'B

2012年5月17日木曜日

データ型 - ビット列型

ビット列型は、必ずしもオクテット単位の構成にならないデータを表現する場合に使用するデータ型です。

型の記法
  ビット列型 ::= BIT STRING | BIT STRING{名前付きビットリスト}
  名前付きビットリスト ::= 識別子(数字) | 識別子(定義値)
  定義値 ::= 外部値参照 | 値参照


値の記法
  ビット列値 ::= 2進列 | 16進列 | {識別子リスト} | {}


型の記法の例

  KeyUsage ::= BIT STRING {
        digitalSignature     (0),
        nonRepudiation       (1),
        keyEncipherment      (2),
        dataEncipherment     (3),
        keyAgreement         (4),
        keyCertSign          (5),
        cRLSign              (6),
        encipherOnly         (7),
        decipherOnly         (8) }
  http://www.ietf.org/rfc/rfc2459

  PersonalStatus ::= BIT STRING{
    married(0), 
    employed(1)
    vetern(2), 
    collegeGraduate(3)}
  
値の記法の例

personalstatus PersonalStatus ::= '0101'B
personalstatus PersonalStatus ::= '5'H
  personalstatus PersonalStatus ::= { employed, collegeGarden}



2012年5月16日水曜日

データ型 - 列挙型


列挙型は、3つ以上の状態を表わしたり、あるいは区別したりするために使用するデータ型です。

型の記法

   列挙型 ::= ENUMERATED{列挙}
   列挙 ::= 名前付き数字, 列挙 | 名前付き数字
   名前付き数字 ::= 識別子(符号付き数字) | 識別子(定義値)
   符号付き数字 ::= 数字 | -数字
   定義値 ::= 外部値参照 | 値参照


値の記法
   列挙値 ::= 識別子


使用例
型の記法の例
CRLReason ::= ENUMERATED {
     unspecified             (0),
     keyCompromise           (1),
     cACompromise            (2),
     affiliationChanged      (3),
     superseded              (4),
     cessationOfOperation    (5),
     certificateHold         (6),
     removeFromCRL           (8),
     privilegeWithdrawn      (9),
     aACompromise           (10) }
http://www.ietf.org/rfc/rfc3280.txt



値の記法の例

DayOfTheWeek::= ENUMERATED {
  sunday    (0),
  monday    (1),
  tuesday   (2),
  wednesday (3),
  thursday  (4),
  friday    (5),
  saturday  (6) }
firstDayOfWeek DayOfTheWeek ::= sunday

データ型 - 実数型

実数型は、実数を値としてとるデータ型です。
ASN.1では、整数を使用して任意の精度の実数値を表現します。
実数を3つの要素、仮数(M), 基数(B),指数(E)を使用して表現します。

仮数、指数には任意の整数値を指定することができますが、基数は、2または10のみ指定することができます。

型の記法
  実数型 ::= REAL

値の記法
  実数値        ::= 数値実数値 | 特殊実数値
  数値実数値  ::=  {M, B, E} | 0
  M               ::= 符号付き数字
  B               ::= 2 | 10
  E               ::= 符号付き数字
  特殊実数値 ::= PLUS-IFINITY | MINUS-INFINITY



  型の記法の例
  AngleInRadians ::= REAL

  値の記法の例
  zero REAL ::= 0
  pi REAL ::= {314, 10, -2}
  maximum REAL ::= PLUS-INFINITY

2012年5月1日火曜日

データ型 - 整数型

整数型は、整数を値としてとるデータ型です。整数型のデータで表現できる整数値の範囲には、ほぼ制限がありません。

型の記法
   整数型 ::= INTEGER | INTEGER{名前付き数字リスト}
   名前付き数字 ::= 識別子(符号付き数字) | 識別子(定義値)
   符号付き数字 ::= 数字 | -数字
   定義値 ::= 外部値参照 | 値参照


値の記法
   整数値 ::= 符号付き数字 | 識別子


使用例
   識別子(符号付き数字)の例
  TrailerField ::= INTEGER { trailerFieldBC(1) }
ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.asn

値の記法 符号付き数字の例
pkcs-9-ub-pkcs9String INTEGER ::= 255
値の記法 識別子の例
   pkcs-9-ub-emailAddress INTEGER ::= pkcs-9-ub-pkcs9String
   ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-9-v2/pkcs-9.asn