PGP(5.0)

DESCRIPTION
This document describes the process of integrating PGP with third party applications.

STRATEGIES
There are two basic possible strategies for PGP integration: source level (calling the PGP libraries directly) and executable level (using system(2) or some other method to call the PGP executables). This document will not detail the library method at this time. When PGP 5.5 is released, all support will be migrated to the new Cryptographic Development Kit (CDK) from the existing APIs. Developers are encouraged to either use the executable integration method detailed here or wait for the CDK to be released.

EXECUTABLE INTEGRATION
The most straightforward means of integrating PGP support into your application is to open input and output pipes to the PGP executables. It is possible at that point to monitor for PGP exit codes and output display. In order to facilitate this path, PGP 5.0 has support for a "headers mode." All applications accept the switch --headers, which categorize the output into one of five headers:

PRI Primary PGP output. This is the decrypted message for pgpv(1), the key or listing of keys for pgpk(1) or the encrypted or signed message for pgpe(1) and pgps(1).

INF Informational output. This is for information about the primary output. This is primarily used by pgpv(1) to provide information about who signed a message and when.

QRY Interaction output. Not necessarily a query, per se, but, rather, output that either requests input from the user or provides information leading up to such a request.

STA Status output. Information about where PGP is in the current operation.

WRN Warnings. These are messages which indicate something may be amiss, but generally allow the user to make the final decision.

ERR Errors. Not all error messages are critical enough to halt operation, but most are.

EXAMPLE
Headerized output is of the form "HDR:Output," for example: STA:Creating output file foo.asc Is a status message indicating the output file is being written.

CONFIGURATION OPTIONS
Application integrators are encourages to read the pgp.cfg(5) documentation, which details how to pass configuration options on the command line, including the public and private keyrings your application wishes to use.

SEE ALSO
pgp(1), pgpe(1), pgpv(1), pgps(1), pgpk(1), pgp-integration(7), http://www.pgp.com and http://web.mit.edu/network/pgp.html