Using PGP 2.x keys

An imported public key can be used to encrypt documents to a PGP 2.x private key holder and check signatures made using a PGP 2.x private key. It is important to realize that it is impossible to use a new OpenPGP key to communicate with an PGP 2.x user, so you must import an old style key if you want to communicate with a PGP 2.x user.

Encrypting a document to a PGP 2.x user

Encrypting a document uses several command-line options, and the document to be encrypted must be specified as a file.

alice% gpg --rfc1991 --cipher-algo idea --compress-algo 1 --encrypt --recipient alice secret 
gpg:
RSA keys are deprecated; please consider creating a new key and use this key in the future 
gpg: this cipher algorithm is depreciated; please use a more standard one!

Each of the command-line options are necessary.

Signing a document for a PGP 2.x user

Signing a document is no different than when any other key is used.

alice% gpg --local-user 0x24E2C409 --sign document 
You need a passphrase to unlock the secret key for 
user: "Alice <alice@cyb.com>" 
1024-bit RSA key, ID 24E2C409, created 1999-09-18 

gpg: RSA keys are deprecated; please consider creating a new key and use this 
key in the future 

In this example, the option local-user is used to specify which private key to use for signing. Also, the output file is document.gpg. If the signature is to be verified using PGP 2.x, it must be renamed to a filename with a .pgp extension.

Signing and encrypting a document for a PGP 2.x user

GnuPG does not have native support for both signing a document with an RSA key and encrypting it to an RSA key. GnuPG can be used in a workaround, however, that requires a few steps to implement. The process involves creating a detached signature and then using it to build an encrypted file that can be decrypted and verified using PGP 2.x.

There are four steps. The first creates a detached signature

alice% gpg --detach-signature --recipient alice --local-user 0x24E2C409 document 

You need a passphrase to unlock the secret key for
user: "Alice <alice@cyb.com>"
1024-bit RSA key, ID 24E2C409, created 1999-09-18

gpg: RSA keys are deprecated; please consider creating a new key and use this
key in the future

The second step converts the document to an internal, literal format that is unencrupted.

alice% gpg --store -z 0 --output document.lit document 

The third step combines the detached signature with the literal document. This is what PGP 2.x uses to verify the signature after decryption.

alice% cat Notes.sig Notes.lit | gpg --no-options --no-literal --store --compress-algo 1 --output document.z 
gpg: NOTE: --no-literal is not for normal use!

The fourth and final step is to use GnuPG to encrypt the combined signature and plaintext to yield an signed and encrypted document that can be decrypted and verified using PGP 2.x.

alice% gpg --rfc1991 --cipher-algo idea --no-literal --encrypt --recipient alice --output document.pgp document.z 
gpg: NOTE: --no-literal is not for normal use!
gpg: RSA keys are deprecated; please consider creating a new key and use this
key in the future
gpg: this cipher algorithm is depreciated; please use a more standard one!

The signed and encrypted document can also be ASCII-armored using the usual options.

alice% gpg --rfc1991 --cipher-algo idea --no-literal --encrypt --recipient alice --output document.asc --armor document.z 
gpg: NOTE: --no-literal is not for normal use!
gpg: RSA keys are deprecated; please consider creating a new key and use this
key in the future
gpg: this cipher algorithm is depreciated; please use a more standard one!

Decrypting a PGP 2.x document

An imported private key may be used to decrypt documents encrypted to the key as well as make signatures using the key. Decrypting a message is no more difficult than when any other key is used.

alice% gpg secret.pgp 

You need a passphrase to unlock the secret key for 
user: "Alice <alice@cyb.org>" 
1024-bit RSA key, ID 24E2C409, created 1999-09-18

gpg: NOTE: cipher algorithm 1 not found in preferences 
gpg: secret.pgp: unknown suffix 
Enter new filename [secret]: 

Again, the file renaming dialog can be avoided by renaming the input file with a .gpg extension. The note emitted by GnuPG regarding cipher algorithm 1 not found in the preferences may be safely ignored if seen.

Verifying a PGP 2.x signature

Verifying a signature made using a PGP 2.x key is straightforward.

alice% gpg document.pgp 
gpg: document.pgp: unknown suffix
Enter new filename [document]:  
File `document' exists. Overwrite (y/N)? y 
gpg: old style (PGP 2.x) signature
gpg: Signature made Sat Sep 18 17:55:30 1999 EST using RSA key ID 24E2C409 
gpg: Good signature from "Alice <alice@cyb.org>"

The file renaming dialog can be avoided if the document being verified is renamed with a .gpg extension before invoking gpg.