| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581 | 
							
- #------------------------------------------------------------------------------
 
- # $File: pgp,v 1.25 2021/04/26 15:56:00 christos Exp $
 
- # pgp:  file(1) magic for Pretty Good Privacy
 
- # Handling of binary PGP keys is in pgp-binary-keys.
 
- # see https://lists.gnupg.org/pipermail/gnupg-devel/1999-September/016052.html
 
- #
 
- 0	beshort		0xa600			PGP encrypted data
 
- #!:mime	application/pgp-encrypted
 
- #0	string		-----BEGIN\040PGP	text/PGP armored data
 
- !:mime	text/PGP # encoding: armored data
 
- #>15	string	PUBLIC\040KEY\040BLOCK-	public key block
 
- #>15	string	MESSAGE-		message
 
- #>15	string	SIGNED\040MESSAGE-	signed message
 
- #>15	string	PGP\040SIGNATURE-	signature
 
- # Update:	Joerg Jenderek
 
- # URL:		http://en.wikipedia.org/wiki/Pretty_Good_Privacy
 
- # Reference:	https://reposcope.com/mimetype/application/pgp-keys
 
- 2	string	---BEGIN\040PGP\040PRIVATE\040KEY\040BLOCK-	PGP private key block
 
- #!:mime	text/PGP
 
- !:mime	application/pgp-keys
 
- !:ext	asc
 
- 2	string	---BEGIN\040PGP\040PUBLIC\040KEY\040BLOCK-	PGP public key block
 
- !:mime	application/pgp-keys
 
- !:ext	asc
 
- >10	search/100	\n\n
 
- >>&0	use		pgp
 
- 0	string	-----BEGIN\040PGP\040MESSAGE-		PGP message
 
- # https://reposcope.com/mimetype/application/pgp-encrypted
 
- #!:mime	application/pgp
 
- !:mime	application/pgp-encrypted
 
- !:ext	asc
 
- #!:ext	asc/pgp/gpg
 
- >10	search/100	\n\n
 
- >>&0	use		pgp
 
- # Reference:	https://www.gnupg.org/gph/en/manual/x135.html
 
- 0	string	-----BEGIN\040PGP\040SIGNED\040MESSAGE-	PGP signed message
 
- #!:mime	text/plain
 
- !:mime	text/PGP
 
- #!:mime	application/pgp
 
- !:ext	asc
 
- 0	string	-----BEGIN\040PGP\040SIGNATURE-		PGP signature
 
- # https://reposcope.com/mimetype/application/pgp-signature
 
- !:mime	application/pgp-signature
 
- !:ext	asc
 
- >10	search/100	\n\n
 
- >>&0	use		pgp
 
- # Decode the type of the packet based on it's base64 encoding.
 
- # Idea from Mark Martinec
 
- # The specification is in RFC 4880, section 4.2 and 4.3:
 
- # https://tools.ietf.org/html/rfc4880#section-4.2
 
- 0	name		pgp
 
- >0	byte		0x67		Reserved (old)
 
- >0	byte		0x68		Public-Key Encrypted Session Key (old)
 
- >0	byte		0x69		Signature (old)
 
- >0	byte		0x6a		Symmetric-Key Encrypted Session Key (old)
 
- >0	byte		0x6b		One-Pass Signature (old)
 
- >0	byte		0x6c		Secret-Key (old)
 
- >0	byte		0x6d		Public-Key (old)
 
- >0	byte		0x6e		Secret-Subkey (old)
 
- >0	byte		0x6f		Compressed Data (old)
 
- >0	byte		0x70		Symmetrically Encrypted Data (old)
 
- >0	byte		0x71		Marker (old)
 
- >0	byte		0x72		Literal Data (old)
 
- >0	byte		0x73		Trust (old)
 
- >0	byte		0x74		User ID (old)
 
- >0	byte		0x75		Public-Subkey (old)
 
- >0	byte		0x76		Unused (old)
 
- >0	byte		0x77
 
- >>1	byte&0xc0	0x00		Reserved
 
- >>1	byte&0xc0	0x40		Public-Key Encrypted Session Key
 
- >>1	byte&0xc0	0x80		Signature
 
- >>1	byte&0xc0	0xc0		Symmetric-Key Encrypted Session Key
 
- >0	byte		0x78
 
- >>1	byte&0xc0	0x00		One-Pass Signature
 
- >>1	byte&0xc0	0x40		Secret-Key
 
- >>1	byte&0xc0	0x80		Public-Key
 
- >>1	byte&0xc0	0xc0		Secret-Subkey
 
- >0	byte		0x79
 
- >>1	byte&0xc0	0x00		Compressed Data
 
- >>1	byte&0xc0	0x40		Symmetrically Encrypted Data
 
- >>1	byte&0xc0	0x80		Marker
 
- >>1	byte&0xc0	0xc0		Literal Data
 
- >0	byte		0x7a
 
- >>1	byte&0xc0	0x00		Trust
 
- >>1	byte&0xc0	0x40		User ID
 
- >>1	byte&0xc0	0x80		Public-Subkey
 
- >>1	byte&0xc0	0xc0		Unused [z%x]
 
- >0	byte		0x30
 
- >>1	byte&0xc0	0x00		Unused [0%x]
 
- >>1	byte&0xc0	0x40		User Attribute
 
- >>1	byte&0xc0	0x80		Sym. Encrypted and Integrity Protected Data
 
- >>1	byte&0xc0	0xc0		Modification Detection Code
 
- # magic signatures to detect PGP crypto material (from stef)
 
- # detects and extracts metadata from:
 
- #  - symmetric encrypted packet header
 
- #  - RSA (e=65537) secret (sub-)keys
 
- # 1024b RSA encrypted data
 
- 0	string	\x84\x8c\x03		PGP RSA encrypted session key -
 
- >3	belong	x			keyid: %08X
 
- >7	belong	x			%08X
 
- >11	byte	0x01			RSA (Encrypt or Sign) 1024b
 
- >11	byte	0x02			RSA Encrypt-Only 1024b
 
- >12	string	\x04\x00
 
- >12	string	\x03\xff
 
- >12	string	\x03\xfe
 
- >12	string	\x03\xfd
 
- >12	string	\x03\xfc
 
- >12	string	\x03\xfb
 
- >12	string	\x03\xfa
 
- >12	string	\x03\xf9
 
- >142	byte	0xd2			.
 
- # 2048b RSA encrypted data
 
- 0	string	\x85\x01\x0c\x03	PGP RSA encrypted session key -
 
- >4	belong	x			keyid: %08X
 
- >8	belong	x			%08X
 
- >12	byte	0x01			RSA (Encrypt or Sign) 2048b
 
- >12	byte	0x02			RSA Encrypt-Only 2048b
 
- >13	string	\x08\x00
 
- >13	string	\x07\xff
 
- >13	string	\x07\xfe
 
- >13	string	\x07\xfd
 
- >13	string	\x07\xfc
 
- >13	string	\x07\xfb
 
- >13	string	\x07\xfa
 
- >13	string	\x07\xf9
 
- >271	byte	0xd2			.
 
- # 3072b RSA encrypted data
 
- 0	string	\x85\x01\x8c\x03	PGP RSA encrypted session key -
 
- >4	belong	x			keyid: %08X
 
- >8	belong	x			%08X
 
- >12	byte	0x01			RSA (Encrypt or Sign) 3072b
 
- >12	byte	0x02			RSA Encrypt-Only 3072b
 
- >13	string	\x0c\x00
 
- >13	string	\x0b\xff
 
- >13	string	\x0b\xfe
 
- >13	string	\x0b\xfd
 
- >13	string	\x0b\xfc
 
- >13	string	\x0b\xfb
 
- >13	string	\x0b\xfa
 
- >13	string	\x0b\xf9
 
- >399	byte	0xd2			.
 
- # 4096b RSA encrypted data
 
- 0	string	\x85\x02\x0c\x03	PGP RSA encrypted session key -
 
- >4	belong	x			keyid: %08X
 
- >8	belong	x			%08X
 
- >12	byte	0x01			RSA (Encrypt or Sign) 4096b
 
- >12	byte	0x02			RSA Encrypt-Only 4096b
 
- >13	string	\x10\x00
 
- >13	string	\x0f\xff
 
- >13	string	\x0f\xfe
 
- >13	string	\x0f\xfd
 
- >13	string	\x0f\xfc
 
- >13	string	\x0f\xfb
 
- >13	string	\x0f\xfa
 
- >13	string	\x0f\xf9
 
- >527	byte	0xd2			.
 
- # 8192b RSA encrypted data
 
- 0	string	\x85\x04\x0c\x03	PGP RSA encrypted session key -
 
- >4	belong	x			keyid: %08X
 
- >8	belong	x			%08X
 
- >12	byte	0x01			RSA (Encrypt or Sign) 8192b
 
- >12	byte	0x02			RSA Encrypt-Only 8192b
 
- >13	string	\x20\x00
 
- >13	string	\x1f\xff
 
- >13	string	\x1f\xfe
 
- >13	string	\x1f\xfd
 
- >13	string	\x1f\xfc
 
- >13	string	\x1f\xfb
 
- >13	string	\x1f\xfa
 
- >13	string	\x1f\xf9
 
- >1039	byte	0xd2			.
 
- # 1024b Elgamal encrypted data
 
- 0	string	\x85\x01\x0e\x03	PGP Elgamal encrypted session key -
 
- >4	belong	x			keyid: %08X
 
- >8	belong	x			%08X
 
- >12	byte	0x10			Elgamal Encrypt-Only 1024b.
 
- >13	string	\x04\x00
 
- >13	string	\x03\xff
 
- >13	string	\x03\xfe
 
- >13	string	\x03\xfd
 
- >13	string	\x03\xfc
 
- >13	string	\x03\xfb
 
- >13	string	\x03\xfa
 
- >13	string	\x03\xf9
 
- # 2048b Elgamal encrypted data
 
- 0	string	\x85\x02\x0e\x03	PGP Elgamal encrypted session key -
 
- >4	belong	x			keyid: %08X
 
- >8	belong	x			%08X
 
- >12	byte	0x10			Elgamal Encrypt-Only 2048b.
 
- >13	string	\x08\x00
 
- >13	string	\x07\xff
 
- >13	string	\x07\xfe
 
- >13	string	\x07\xfd
 
- >13	string	\x07\xfc
 
- >13	string	\x07\xfb
 
- >13	string	\x07\xfa
 
- >13	string	\x07\xf9
 
- # 3072b Elgamal encrypted data
 
- 0	string	\x85\x03\x0e\x03	PGP Elgamal encrypted session key -
 
- >4	belong	x			keyid: %08X
 
- >8	belong	x			%08X
 
- >12	byte	0x10			Elgamal Encrypt-Only 3072b.
 
- >13	string	\x0c\x00
 
- >13	string	\x0b\xff
 
- >13	string	\x0b\xfe
 
- >13	string	\x0b\xfd
 
- >13	string	\x0b\xfc
 
- >13	string	\x0b\xfb
 
- >13	string	\x0b\xfa
 
- >13	string	\x0b\xf9
 
- # crypto algo mapper
 
- 0	name	crypto
 
- >0	byte	0x00			Plaintext or unencrypted data
 
- >0	byte	0x01			IDEA
 
- >0	byte	0x02			TripleDES
 
- >0	byte	0x03			CAST5 (128 bit key)
 
- >0	byte	0x04			Blowfish (128 bit key, 16 rounds)
 
- >0	byte	0x07			AES with 128-bit key
 
- >0	byte	0x08			AES with 192-bit key
 
- >0	byte	0x09			AES with 256-bit key
 
- >0	byte	0x0a			Twofish with 256-bit key
 
- # hash algo mapper
 
- 0	name	hash
 
- >0	byte	0x01			MD5
 
- >0	byte	0x02			SHA-1
 
- >0	byte	0x03			RIPE-MD/160
 
- >0	byte	0x08			SHA256
 
- >0	byte	0x09			SHA384
 
- >0	byte	0x0a			SHA512
 
- >0	byte	0x0b			SHA224
 
- # display public key algorithms as human readable text
 
- 0	name	key_algo
 
- >0	byte	0x01			RSA (Encrypt or Sign)
 
- # keep old look of version 5.28 without parentheses
 
- >0	byte	0x02			RSA Encrypt-Only
 
- >0	byte	0x03			RSA (Sign-Only)
 
- >0	byte	16			ElGamal (Encrypt-Only)
 
- >0	byte	17			DSA
 
- >0	byte	18			Elliptic Curve
 
- >0	byte	19			ECDSA
 
- >0	byte	20			ElGamal (Encrypt or Sign)
 
- >0	byte	21			Diffie-Hellman
 
- >0	default	x
 
- >>0	ubyte	<22			unknown (pub %d)
 
- # this should never happen
 
- >>0	ubyte	>21			invalid (%d)
 
- # pgp symmetric encrypted data
 
- 0	byte	0x8c			PGP symmetric key encrypted data -
 
- >1	byte	0x0d
 
- >1	byte	0x0c
 
- >2	byte	0x04
 
- >3	use	crypto
 
- >4	byte	0x01			salted -
 
- >>5	use	hash
 
- >>14	byte	0xd2			.
 
- >>14	byte	0xc9			.
 
- >4	byte	0x03			salted & iterated -
 
- >>5	use	hash
 
- >>15	byte	0xd2			.
 
- >>15	byte	0xc9			.
 
- # encrypted keymaterial needs s2k & can be checksummed/hashed
 
- 0	name	chkcrypto
 
- >0	use	crypto
 
- >1	byte	0x00			Simple S2K
 
- >1	byte	0x01			Salted S2K
 
- >1	byte	0x03			Salted&Iterated S2K
 
- >2	use	hash
 
- # all PGP keys start with this prolog
 
- # containing version, creation date, and purpose
 
- 0	name	keyprolog
 
- >0	byte	0x04
 
- >1	beldate	x			created on %s -
 
- >5	byte	0x01			RSA (Encrypt or Sign)
 
- >5	byte	0x02			RSA Encrypt-Only
 
- # end of secret keys known signature
 
- # contains e=65537 and the prolog to
 
- # the encrypted parameters
 
- 0	name	keyend
 
- >0	string	\x00\x11\x01\x00\x01	e=65537
 
- >5	use	crypto
 
- >5	byte	0xff			checksummed
 
- >>6	use	chkcrypto
 
- >5	byte	0xfe			hashed
 
- >>6	use	chkcrypto
 
- # PGP secret keys contain also the public parts
 
- # these vary by bitsize of the key
 
- 0	name	x1024
 
- >0	use	keyprolog
 
- >6	string	\x03\xfe
 
- >6	string	\x03\xff
 
- >6	string	\x04\x00
 
- >136	use	keyend
 
- 0	name	x2048
 
- >0	use	keyprolog
 
- >6	string	\x80\x00
 
- >6	string	\x07\xfe
 
- >6	string	\x07\xff
 
- >264	use	keyend
 
- 0	name	x3072
 
- >0	use	keyprolog
 
- >6	string	\x0b\xfe
 
- >6	string	\x0b\xff
 
- >6	string	\x0c\x00
 
- >392	use	keyend
 
- 0	name	x4096
 
- >0	use	keyprolog
 
- >6	string	\x10\x00
 
- >6	string	\x0f\xfe
 
- >6	string	\x0f\xff
 
- >520	use	keyend
 
- # \x00|\x1f[\xfe\xff]).{1024})'
 
- 0	name	x8192
 
- >0	use	keyprolog
 
- >6	string	\x20\x00
 
- >6	string	\x1f\xfe
 
- >6	string	\x1f\xff
 
- >1032	use	keyend
 
- # depending on the size of the pkt
 
- # we branch into the proper key size
 
- # signatures defined as x{keysize}
 
- 0	name	pgpkey
 
- >0	string	\x01\xd8	1024b
 
- >>2	use	x1024
 
- >0	string	\x01\xeb	1024b
 
- >>2	use	x1024
 
- >0	string	\x01\xfb	1024b
 
- >>2	use	x1024
 
- >0	string	\x01\xfd	1024b
 
- >>2	use	x1024
 
- >0	string	\x01\xf3	1024b
 
- >>2	use	x1024
 
- >0	string	\x01\xee	1024b
 
- >>2	use	x1024
 
- >0	string	\x01\xfe	1024b
 
- >>2	use	x1024
 
- >0	string	\x01\xf4	1024b
 
- >>2	use	x1024
 
- >0	string	\x02\x0d	1024b
 
- >>2	use	x1024
 
- >0	string	\x02\x03	1024b
 
- >>2	use	x1024
 
- >0	string	\x02\x05	1024b
 
- >>2	use	x1024
 
- >0	string	\x02\x15	1024b
 
- >>2	use	x1024
 
- >0	string	\x02\x00	1024b
 
- >>2	use	x1024
 
- >0	string	\x02\x10	1024b
 
- >>2	use	x1024
 
- >0	string	\x02\x04	1024b
 
- >>2	use	x1024
 
- >0	string	\x02\x06	1024b
 
- >>2	use	x1024
 
- >0	string	\x02\x16	1024b
 
- >>2	use	x1024
 
- >0	string	\x03\x98	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xab	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xbb	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xbd	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xcd	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xb3	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xc3	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xc5	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xd5	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xae	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xbe	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xc0	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xd0	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xb4	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xc4	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xc6	2048b
 
- >>2	use	x2048
 
- >0	string	\x03\xd6	2048b
 
- >>2	use	x2048
 
- >0	string	\x05X		3072b
 
- >>2	use	x3072
 
- >0	string	\x05k		3072b
 
- >>2	use	x3072
 
- >0	string	\x05{		3072b
 
- >>2	use	x3072
 
- >0	string	\x05}		3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x8d	3072b
 
- >>2	use	x3072
 
- >0	string	\x05s		3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x83	3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x85	3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x95	3072b
 
- >>2	use	x3072
 
- >0	string	\x05n		3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x7e	3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x80	3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x90	3072b
 
- >>2	use	x3072
 
- >0	string	\x05t		3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x84	3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x86	3072b
 
- >>2	use	x3072
 
- >0	string	\x05\x96	3072b
 
- >>2	use	x3072
 
- >0	string	\x07[		4096b
 
- >>2	use	x4096
 
- >0	string	\x07\x18	4096b
 
- >>2	use	x4096
 
- >0	string	\x07+		4096b
 
- >>2	use	x4096
 
- >0	string	\x07;		4096b
 
- >>2	use	x4096
 
- >0	string	\x07=		4096b
 
- >>2	use	x4096
 
- >0	string	\x07M		4096b
 
- >>2	use	x4096
 
- >0	string	\x073		4096b
 
- >>2	use	x4096
 
- >0	string	\x07C		4096b
 
- >>2	use	x4096
 
- >0	string	\x07E		4096b
 
- >>2	use	x4096
 
- >0	string	\x07U		4096b
 
- >>2	use	x4096
 
- >0	string	\x07.		4096b
 
- >>2	use	x4096
 
- >0	string	\x07>		4096b
 
- >>2	use	x4096
 
- >0	string	\x07@		4096b
 
- >>2	use	x4096
 
- >0	string	\x07P		4096b
 
- >>2	use	x4096
 
- >0	string	\x074		4096b
 
- >>2	use	x4096
 
- >0	string	\x07D		4096b
 
- >>2	use	x4096
 
- >0	string	\x07F		4096b
 
- >>2	use	x4096
 
- >0	string	\x07V		4096b
 
- >>2	use	x4096
 
- >0	string	\x0e[		8192b
 
- >>2	use	x8192
 
- >0	string	\x0e\x18	8192b
 
- >>2	use	x8192
 
- >0	string	\x0e+		8192b
 
- >>2	use	x8192
 
- >0	string	\x0e;		8192b
 
- >>2	use	x8192
 
- >0	string	\x0e=		8192b
 
- >>2	use	x8192
 
- >0	string	\x0eM		8192b
 
- >>2	use	x8192
 
- >0	string	\x0e3		8192b
 
- >>2	use	x8192
 
- >0	string	\x0eC		8192b
 
- >>2	use	x8192
 
- >0	string	\x0eE		8192b
 
- >>2	use	x8192
 
- >0	string	\x0eU		8192b
 
- >>2	use	x8192
 
- >0	string	\x0e.		8192b
 
- >>2	use	x8192
 
- >0	string	\x0e>		8192b
 
- >>2	use	x8192
 
- >0	string	\x0e@		8192b
 
- >>2	use	x8192
 
- >0	string	\x0eP		8192b
 
- >>2	use	x8192
 
- >0	string	\x0e4		8192b
 
- >>2	use	x8192
 
- >0	string	\x0eD		8192b
 
- >>2	use	x8192
 
- >0	string	\x0eF		8192b
 
- >>2	use	x8192
 
- >0	string	\x0eV		8192b
 
- >>2	use	x8192
 
- # PGP RSA (e=65537) secret (sub-)key header
 
- 0	byte	0x97			PGP Secret Sub-key -
 
- >1	use	pgpkey
 
- 0	byte	0x9d
 
- # Update: Joerg Jenderek
 
- # secret subkey packet (tag 7) with same structure as secret key packet (tag 5)
 
- # skip Fetus.Sys16 CALIBUS.MAIN OrbFix.Sys16.Ex by looking for positive len
 
- >1	ubeshort	>0
 
- #>1	ubeshort	x		\b, body length %#x
 
- # next packet type often 88h,89h~(tag 2)~Signature Packet
 
- #>>(1.S+3)	ubyte	x		\b, next packet type %#x
 
- # skip Dragon.SHR DEMO.INIT by looking for positive version
 
- >>3	ubyte		>0
 
- # skip BUISSON.13 GUITAR1 by looking for low version number
 
- >>>3	ubyte		<5		PGP Secret Sub-key
 
- # sub-key are normally part of secret key. So it does not occur as standalone file
 
- #!:ext	bin
 
- # version 2,3~old 4~new . Comment following line for version 5.28 look
 
- >>>>3	ubyte		x		(v%d)
 
- >>>>3	ubyte		x		-
 
- # old versions 2 or 3 but no real example found
 
- >>>>3	ubyte		<4
 
- # 2 byte for key bits in version 5.28 look
 
- >>>>>11		ubeshort	x	%db
 
- >>>>>4		beldate		x	created on %s -
 
- # old versions use 2 additional bytes after time stamp
 
- #>>>>>8		ubeshort	x	%#x
 
- # display key algorithm 1~RSA Encrypt|Sign - 21~Diffie-Hellman
 
- >>>>>10	  	use		key_algo
 
- >>>>>(11.S/8)	ubequad		x
 
- # look after first key
 
- >>>>>>&5	use		keyend
 
- # new version
 
- >>>>3	ubyte		>3
 
- >>>>>9		ubeshort	x	%db
 
- >>>>>4		beldate		x	created on %s -
 
- # display key algorithm
 
- >>>>>8		use		key_algo
 
- >>>>>(9.S/8)	ubequad		x
 
- # look after first key for something like s2k
 
- >>>>>>&3	use		keyend
 
 
  |