INTEGER (Zertifikatregistrierungs-API)
Ganze Zahlen werden in ein TLV-Triplet codiert, das mit einem Tag Wert von 0x02 beginnt. Das Wert- Feld des TLV-Triplets enthält die codierte ganze Zahl, wenn sie positiv ist, oder die Beiden ergänzen, wenn es negativ ist. Wenn die ganze Zahl positiv ist, aber das Bit der hohen Reihenfolge auf 1 festgelegt ist, wird dem Inhalt ein führendes 0x00 hinzugefügt, um anzugeben, dass die Zahl nicht negativ ist. Beispielsweise ist das Byte der hohen Reihenfolge von 0x8F (10001111) 1. Daher wird dem Inhalt ein führendes Nullbyte hinzugefügt, wie in der folgenden Abbildung dargestellt.
Wenn die ganze Zahl weniger als 128 Byte enthält, benötigt das Feld Length nur ein Byte, um die Inhaltslänge anzugeben. Wenn die ganze Zahl mehr als 127 Byte ist, wird Bit 7 des Felds Länge feld auf 1 und Bit 6 bis 0 festgelegt, um die Anzahl zusätzlicher Bytes anzugeben, die zur Identifizierung der Inhaltslänge verwendet werden. Weitere Informationen finden Sie unter Codierten Längen- und Wertbytes.
Das folgende Beispiel aus PKCS #10 Encoded ASN.1zeigt die Codierung für einen öffentlichen 128 Byte-Schlüssel. Das erste Byte enthält den Tag- Wert für den datentyp INTEGER 0x02. Die zweite und dritte Byte enthalten den wert Length. Bit 7 des zweiten Byte ist auf 1 festgelegt, da mehr als 127 Byte Inhalt vorhanden sind. Bits 0 bis 6 des zweiten Byte geben die Anzahl der benötigten nachgestellten Bytes an, in diesem Fall eine, um die Inhaltslänge genau anzugeben. Das dritte Byte gibt die Anzahl der Inhaltsbytes 0x81 an. Das vierte Byte, 0x00, wird dem Inhalt hinzugefügt, um anzugeben, dass die ganze Zahl tatsächlich ein positiver Wert ist, obwohl das Vorzeichenbit des führenden Inhaltsbytes (0x8F) auf 1 festgelegt ist.
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
Das folgende Beispiel zeigt, wie der ganzzahlige Wert 0x03 codiert wird. Das Tag Byte enthält 0x02, und das Length Byte gibt an, dass ein Byte Inhalt vorhanden ist.
02 01 ; INTEGER (1 Bytes)
| 03
Verwandte Themen