メインコンテンツまでスキップ

5. Data Type Representations Used in the SSH Protocols (SSHプロトコルで使用されるデータ型表現)

byte (バイト)

byteは任意の8ビット値 (オクテット) を表します。固定長データは、byte[n]と記述されるバイト配列として表されることがあります。ここで、nは配列内のバイト数です。

boolean (ブール値)

ブール値 (Boolean Value) は単一のバイトとして格納されます。値0はFALSEを表し、値1はTRUEを表します。すべての非ゼロ値はTRUEとして解釈されなければなりませんが (MUST)、アプリケーションは0と1以外の値を格納してはなりません (MUST NOT)。

uint32 (32ビット符号なし整数)

32ビット符号なし整数 (32-bit Unsigned Integer) を表します。重要度の降順 (ネットワークバイトオーダー) で4バイトとして格納されます。例: 値699921578 (0x29b7f4aa) は 29 b7 f4 aa として格納されます。

uint64 (64ビット符号なし整数)

64ビット符号なし整数 (64-bit Unsigned Integer) を表します。重要度の降順 (ネットワークバイトオーダー) で8バイトとして格納されます。

string (文字列)

任意の長さのバイナリ文字列 (Binary String)。文字列は、null文字や8ビット文字を含む任意のバイナリデータを含むことができます。文字列は、その長さ (後に続くバイト数) を含むuint32と、0 (= 空文字列) 以上のバイトで構成される文字列の値として格納されます。終端のnull文字は使用されません。

文字列はテキストの格納にも使用されます。その場合、内部名にはUS-ASCIIが使用され、ユーザーに表示される可能性のあるテキストにはISO-10646 UTF-8が使用されます。終端のnull文字は通常、文字列に格納すべきではありません (SHOULD NOT)。例: US-ASCII文字列 "testing" は 00 00 00 07 t e s t i n g として表されます。UTF-8マッピングはUS-ASCII文字のエンコーディングを変更しません。

mpint (多倍長整数)

2の補数形式 (Two's Complement Format) の多倍長整数 (Multiple Precision Integer) を表します。文字列として格納され、1バイトあたり8ビット、MSB (最上位ビット) が最初です。負の数は、データパーティションの最初のバイトの最上位ビットとして値1を持ちます。正の数で最上位ビットが設定される場合、その数の前にゼロバイトを付けなければなりません (MUST)。値0または255を持つ不要な先頭バイトを含めてはなりません (MUST NOT)。値ゼロは、データのバイトがゼロの文字列として格納されなければなりません (MUST)。

慣例により、Z_nでのモジュラー計算 (Modular Computation) に使用される数は、0 <= x < nの範囲で表されるべきです (SHOULD)。

例:

値 (16進数)          表現 (16進数)
----------- --------------------
0 00 00 00 00
9a378f9b2e332a7 00 00 00 08 09 a3 78 f9 b2 e3 32 a7
80 00 00 00 02 00 80
-1234 00 00 00 02 ed cc
-deadbeef 00 00 00 05 ff 21 52 41 11

name-list (名前リスト)

カンマ区切りの名前リスト (Comma-separated List) を含む文字列。名前リストは、その長さ (後に続くバイト数) を含むuint32と、それに続く0個以上の名前のカンマ区切りリストとして表されます。名前は非ゼロの長さを持たなければならず (MUST)、カンマ (",") を含んではなりません (MUST NOT)。これは名前のリストであるため、含まれるすべての要素は名前であり、US-ASCIIでなければなりません (MUST)。コンテキストにより、名前に追加の制限が課される場合があります。例えば、名前リスト内の名前は、有効なアルゴリズム識別子のリスト (以下のセクション6を参照)、または [RFC3066] 言語タグのリストである必要がある場合があります。名前リスト内の名前の順序は、重要である場合とそうでない場合があります。繰り返しますが、これはリストが使用されるコンテキストに依存します。終端のnull文字は、個々の名前についても、リスト全体についても使用してはなりません (MUST NOT)。

例:

値                          表現 (16進数)
----- --------------------
(), 空の名前リスト 00 00 00 00
("zlib") 00 00 00 04 7a 6c 69 62
("zlib,none") 00 00 00 09 7a 6c 69 62 2c 6e 6f 6e 65