INTEGER (証明書登録 API)

整数値は、 タグ 値 0x02 で始まる TLV トリプレットにエンコードされます。 TLV トリプレットの Value フィールドには、正の場合はエンコードされた整数、負の場合は 2 の補数が含まれます。 整数が正の場合、上位ビットが 1 に設定されている場合は、数値が負ではないことを示す先頭の0x00がコンテンツに追加されます。 たとえば、0x8F (10001111) の上位バイトは 1 です。 したがって、次の図に示すように、先頭の 0 バイトがコンテンツに追加されます。

der encoding of boolean data type

整数に含まれるバイト数が 128 バイト未満の場合、[ 長さ] フィールドでは、コンテンツの長さを指定するために必要なバイトは 1 バイトのみです。 整数が 127 バイトを超える場合、 Length フィールドのビット 7 は 1 に設定され、ビット 6 から 0 は、コンテンツの長さを識別するために使用される追加バイト数を指定します。 詳細については、「 エンコードされた長さと値のバイト数」を参照してください。

PKCS #10 Encoded ASN.1 の次の例は、128 バイトの公開キーのエンコードを示しています。 最初のバイトには、0X02 INTEGER データ型のタグ値が含まれています。 2 番目と 3 番目のバイトには Length 値が含まれています。 127 バイトを超えるコンテンツがあるため、2 番目のバイトのビット 7 は 1 に設定されます。 2 番目のバイトのビット 0 から 6 は、コンテンツの長さを正確に指定するために必要な末尾のバイト数 (この場合は 1) を指定します。 3 番目のバイトは、0x81コンテンツ バイト数を指定します。 4 番目のバイト (0x00) がコンテンツに追加され、先頭のコンテンツ バイト (0x8F) の符号ビットが 1 に設定されていても、整数が実際に正の値であることを示します。

02 81 81          ; INTEGER (81 Bytes)
|  00
|  8f e2 41 2a 08 e8 51 a8  8c b3 e8 53 e7 d5 49 50
|  b3 27 8a 2b cb ea b5 42  73 ea 02 57 cc 65 33 ee
|  88 20 61 a1 17 56 c1 24  18 e3 a8 08 d3 be d9 31
|  f3 37 0b 94 b8 cc 43 08  0b 70 24 f7 9c b1 8d 5d
|  d6 6d 82 d0 54 09 84 f8  9f 97 01 75 05 9c 89 d4
|  d5 c9 1e c9 13 d7 2a 6b  30 91 19 d6 d4 42 e0 c4
|  9d 7c 92 71 e1 b2 2f 5c  8d ee f0 f1 17 1e d2 5f
|  31 5b b1 9c bc 20 55 bf  3a 37 42 45 75 dc 90 65

次の例は、0x03整数値のエンコード方法を示しています。 タグ バイトには0x02が含まれており、Length バイトはコンテンツの 1 バイトがあることを指定します。

02 01             ; INTEGER (1 Bytes)
|  03

ASN.1 タイプ システム

ASN.1 型の DER エンコード