Public Authentication module description

PA takes care of the RIP facilities to deal with
PGP buffers. 
Its main user is the module EP.

The interface is composed with the following functions:

void PA_VerifySignature(struct VerifySignObject *vSO);

VerifySignObject structure description:

struct VerifySignObject {
  char iDocSigFilename[FILENAME_LENGTH],  /* IN  */
    iSigFilename[FILENAME_LENGTH],        /* IN  */
    outputPath[FILENAME_LENGTH],          /* IN  */
    oStream[FILENAME_LENGTH];             /* OUT */
  
  char keyRing[FILENAME_LENGTH];
  int isValid;
  u32 keyID;
  struct VerifySignObject *next;
  struct VerifySignObject *inner;
  int nMsg;
  int type;
  int isMIME;
}

where:
Input fields:
<iDocSigFilename>: filename of the document to be verified
<iSigFilename>   : is a detach signature is present, this 
		   field should point to its filename
<outputPath>     : where to store processed and exploded 
		   files
<keyRing>        : the path of the gnuPG key ring. It should be 
		  something like: /home/dbase/.gnupg/pubring.gpg

Output fields:
<oStream>        : output filename
<isValid>	 : one of the following
   vSO_IS_VALID
   vSO_KO,
   vSO_CRC_ERROR,
   vSO_NO_PUBLIC_KEY,
   vSO_NO_OPENPGP_DATA,
   vSO_NO_IN_FILES,
   vSO_NO_OUT_FILES
<keyID>          : the keyID of the signature
<type>           : one of the following
  vSO_Type_PlainText
  vSO_Type_Unparsed,
  vSO_Type_ToBeGPGVerified,
  vSO_Type_Signed


------
void PA_ImportKey(struct ImportKeyObject *iKO)

Function to add anew public key to a keyring. It handles concurrent
accesses via nfs_lock and nfs_unlock functions.

The passed structure is the following:
struct ImportKeyObject {
  char iFilename[FILENAME_LENGTH];
  char keyRing[FILENAME_LENGTH];
  int rc;
  u32 keyID; 
  char fingerPrint[STRING_LENGTH];
};

where:
Input fields:

<iFilename> : public key filename
<keyRing>   : keyRing path

Output fields:

<rc>        : return code. Its value is one of the following:
   iKO_OK
   iKO_UNCHANGED,
   iKO_NOUSERID,
   iKO_GENERAL,
   iKO_NOTVALIDUSERID,
   iKO_NOPUBLICKEY,
   iKO_NODEFAULTPUBLICKEYRING,
   iKO_CRC_ERROR,
   iKO_NO_OPENPGP_DATA,
   iKO_NO_IN_FILES,
   iKO_SECRET_KEY_PRESENT,
   iKO_GENERALFAILURE

<keyID>       : imported key ID
<fingerPrint> : imported key fingerprint

--------
void PA_RemoveKey(struct ImportKeyObject *iKO);

Provide a remotion mechanism for a public key in a
user specified kkey ring.
It behaves similarly to PA_ImportKey and those two
functions share the same return codes set.

-------
EPNodePtr PA_ParseMessage(EPNodePtr ptr);

This is the main PA function that explode a text file
in its PGP blocks, calling the MIME parser if needed.
Look at the EP module documentation for details
on this function ("RIP/modules/EP/EP.txt")

FP
