Vrstni red byte-ov:
Vsi integer podatki, ki jih uporablja PGP, so
shranjeni po principu MSB (most significant byte). To je zaradi prenosnosti
sporočil in ključev med računalniki in pokriva multiprecision RSA integers,
bit count prefix fields, byte count prefix fields, checksume, key Ids in
timestamps.
| bit 7 | vedno 1, kar pomeni, da je bit CTB |
| bit 6 | rezerviran |
| biti 5-2 | polje CTB tipa, označuje tip paketa, ki sledi |
| 0001 - paket kodirnega, javnega ključa | |
| 0010 - paket kodirnega, tajnega (signatura) ključa | |
| 0110 - certifikat javnega ključa | |
| 1000 - stisnjen podatkovni paket | |
| 1001 - podatki konvencialnega javnega ključa | |
| 1011 - vrstica dobesednih podatkov golega teksta z imenom datoteke in modulom | |
| 1100 - datoteka avtentičnih javnih ključev | |
| 1101 - paket uporabniških ID-jev, povezanih z javnimi in tajnimi ključi | |
| 1110 - paket komentarja | |
| Ostali CTB paketni tipi niso implementirani. | |
| bita 1-0 | 00 - 1 byte-na dolžina polja paketa, ki sledi CTB-ju |
| 01 - 2 byte-na dolžina polja paketa, ki sledi CTB-ju | |
| 10 - 3 byte-na dolžina polja paketa, ki sledi CTB-ju | |
| 11 - neznana dolžina paketa. | |
| 8, 16 ali 32-bitna dolžina polja paketa, ki sledi CTB-ju, podaja dolžino preostanka paketa v byte-ih in v to dolžino nista všteta CTB in polje dolžine paketa. |
| Oznaka | Dolžina | Pomen |
| 0 | 1 | CTB ali RSA kodirni paket javnega ključa |
| 1 | 2 | 16 ali 8-bitna dolžina paketa |
| 3 | 1 | byte verzije, ki lahko vpliva na preostanek polja, ki sledi |
| (=2) za PGP verzije <=2.5 | ||
| (=3) za PGP verzije >=2.6 | ||
| 4 | 8 | 64-bitni ID ključa |
| 12 | 1 | algoritni bit za RSA (=1 je RSA) |
| Algoritni bit vpliva na polje, ki sledi. | ||
| 13 | ? | RSA enkripcijski integer, kodiran konvencionalni ključ paketa (če je MPI, potem ima kot prefiks bitcount) |
Konvencionalni ciphertext paket takoj sledi za
RSA javni-ključ-kodiranim paketom, ki vsebuje konvencionalni ključ.
| Oznaka | Dolžina | Pomen |
| 0 | 1 | CTB for tajni-ključ-enkripcijski (podpisan) paket |
| 1 | 2 | 16-bit (ali 8-bitna) dolžina paketa |
| 3 | 1 | verzijski byte, lahko vpliva na ostanek polja,ki sledi. |
| (=2) za PGP verzije <= 2.5 | ||
| (=3) za PGP verzije >= 2.6 | ||
| 4 | 1 | dolžina spremljajočega materijala, ki je vključen v MD izračunih je (=5). |
| 5 | 1 | Podpisno klasifikacijsko polje (glej spodaj). |
| Običajno je dodan za MD izračune. | ||
| 6 | 4 | 32-bitni timestamp, ki kaže, kdaj je narejeno. |
| Ponavadi se doda pri MD izračunih. | ||
| 10 | 8 | 64-bit ID ključa |
| 18 | 1 | algoritemski byte za shemo javnega ključa (RSA=0x01) in vpliva na definicijo polja, ki sledi. |
| 19 | 1 | algoritemski byte za prebavljeno sporočilo (MD5=0x01). |
| 20 | 2 | prva 2 byte-a prebavljenega sporočila znotraj RSA-encrypcijskega integera, za pomoč pri izbiri pravega RSA ključa za preverjanje signature. |
| 22 | ? | RSA-encrypcijski integer, kodirano sporočilo (MPI s bitcount prefiksom). |
Če je podpisani plaintext vključen v isto datoteko
kot signaturni paket, potem sledi RSA-jevi signaturi tajnega ključa, ki
vsebuje izvleček sporočila. Plaitext ima »črkovni« CTB prefiks.
| Oznaka | Dolžina | Pomen |
| 0 | 1 | CTB za certifikat tajnega ključa |
| 1 | 2 | 16-bitna (ali 8-bitna) dolžina paketa |
| 3 | 1 | byte verzije, lahko vpliva na preostanek polja |
| (=2) za PGP verzije <= 2.5 | ||
| (=3) za PGP verzije >= 2.6 | ||
| 4 | 4 | časovna znamka |
| 8 | 2 | period veljavnosti v številu dni (0 pomeni vedno) |
| 10 | 1 | byte za RSA algoritem (=1 za RSA). |
| --byte algoritma vpliva napreostanek polja | ||
| ? | ? | MPI od RSA javni modul n |
| ? | ? | MPI od RSA javni enkripcijski eksponent e |
| ? | 1 | byte algoritma za cipher, ki ščiti tajne komponente, ki sledijo(0=nekodirano, 1=IDEA cipher) |
| ? | 8 | CFB cipher feedback IV ščiti tajne komponente |
| ? | ? | MPI za RSA tajni dekodirni eksponent d |
| ? | ? | MPI za RSA tajni faktor p |
| ? | ? | MPI za RSA tajni faktor q |
| ? | ? | MPI za RSA tajni večkratni inverz u |
| (vsi MPI-ji imajo have bitcount prefikse) | ||
| ? | 2 | 16-bitni preverjalec seštevka vseh byte-ov tajnih komponent |
Preverjalec seštevka oz. checksum se izračuna
iz vseh byte-ov nekodiranih tajnih komponent. Javna polja niso kodirana.
Checksum se uporablja za preverjanje veljavnosti gesla. Kodirna polja so
narejena v CFB modu. CFB IV polje je enostavno random podatkovno polje,
pri čemer je ničla »true« IV.
| Oznaka | Dolžina | Pomen |
| 0 | 1 | CTB za certifikat javnega ključa |
| 1 | 2 | 16-bitna (ali 8-bitna) dolžina paketa |
| 3 | 1 | byte verzije, lahko vpliva napreostanek polja |
| (=2) za PGP verzije <= 2.5 | ||
| (=3) za PGP verzije >= 2.6 | ||
| 4 | 4 | časovna znamka kreiranja ključa |
| 8 | 2 | period veljavnosti v številu dni (0 pomeni vedno) |
| 10 | 1 | byte algoritma za RSA (=1 za RSA). |
| --algoritemski byte vpliva na definiranost preostanka polja. | ||
| ? | ? | MPI od RSA javni modul n |
| ? | ? | MPI od RSA javni kodirni eksponent e |
| (vsi MPI-ji imajo bitcount prefikse) |
Paket javnega ključa ne vsebuje polje uporabniškega
ID-ja. Uporabniški ID je vključen v posebni paket, ki vedno "pride" za
paketom javnega ključa v datoteki ključev ali v nekem drugem kontekstu.
Period veljavnosti je splošno nastavljen na 0.
| Oznaka | Dolžina | Pomen |
| 0 | 1 | CTB za uporabniški ID paket |
| 1 | 1 | 8-bitna dolžina paketa |
| 2 | ? | uporabniški ID string, dolžina je zapisana v prvem byte-u |
Uporabniški ID paket sledi javnem ključu v datoteki
javnih ključev. Tudi sledi tajnemu ključe v datoteki tajnih ključev.
Kadar je ključ certificiran s signaturo, signatura
prekriva paket javnega ključa in uporabniški ID paket. Torej, certifikat
signature povezuje uporabniški ID in ključ. Paket uporabniškega ključa
je vedno povezan z najnovejšim javnim ključem v datoteki ključev, kar ni
odvisno od paketnega tipa med paketom javnega ključa in paketa uporabniškega
ID-ja.
Za paketom javnega ključa je lahko več paketov
uporabniških ID-jev. Vsi so povezani s tem javnim ključem.