1    | /***************************************
2    |   $Revision: 1.14 $
3    | 
4    |   gpg.h - header for gpg.c .
5    | 
6    |   Status: COMPLETE, REVUED, TESTED
7    | 
8    |   ******************/ /******************
9    |   Filename            : gpg.h
10   |   Authors             : filippo@ripe.net
11   |   OSs Tested          : Solaris 7
12   |   ******************/ /******************
13   |   Copyright (c) 2000                              RIPE NCC
14   |  
15   |   All Rights Reserved
16   |   
17   |   Permission to use, copy, modify, and distribute this software and its
18   |   documentation for any purpose and without fee is hereby granted,
19   |   provided that the above copyright notice appear in all copies and that
20   |   both that copyright notice and this permission notice appear in
21   |   supporting documentation, and that the name of the author not be
22   |   used in advertising or publicity pertaining to distribution of the
23   |   software without specific, written prior permission.
24   |   
25   |   THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
26   |   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL
27   |   AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
28   |   DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
29   |   AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
30   |   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
31   |   ***************************************/
32   | 
33   | #ifndef GPG_H
34   | #define GPG_H
35   | 
36   | #include <netdb.h>
37   | #include <unistd.h>
38   | #include "mail_parser.h"
39   | 
40   | /* FP: interface file for RIPE gnuPG */
41   | 
42   | #define INPUT_FD 0
43   | #define OUTPUT_FD 1
44   | #define ERROR_FD 2
45   | 
46   | #define LINE_LENGTH 1024
47   | #define STRING_LENGTH 255
48   | #define FILENAME_LENGTH 1024
49   | 
50   | #define ERRSTRING strerror (errno)
51   | 
52   | #define MAX_LINE_BUF 50000
53   | 
54   | /* FP : global objects used as and interface with gnuPG */
55   | 
56   | struct VerifySignObject {
57   |   char iDocSigFilename[FILENAME_LENGTH],  /* IN  */
58   |     iSigFilename[FILENAME_LENGTH],        /* IN  */
59   |     outputPath[FILENAME_LENGTH],          /* IN  */
60   |     oStream[FILENAME_LENGTH];             /* OUT */
61   |   
62   |   char keyRing[FILENAME_LENGTH];
63   |   int isValid;
64   |   u32 keyID;
65   |   struct VerifySignObject *next;
66   |   struct VerifySignObject *inner;
67   |   int nMsg;
68   |   int type;
69   |   int isMIME;
70   | };
71   | 
72   | struct ReadCryptedObject {
73   |   char iFilename[FILENAME_LENGTH], 
74   |        oStream[FILENAME_LENGTH];
75   |   char keyRing[FILENAME_LENGTH];
76   |   int isValid;
77   |   u32 keyID;
78   | };
79   | 
80   | struct ImportKeyObject {
81   |   char iFilename[FILENAME_LENGTH];
82   |   char keyRing[FILENAME_LENGTH];
83   |   int rc;
84   |   u32 keyID; 
85   |   char fingerPrint[STRING_LENGTH];
86   | };
87   | 
88   | struct RemoveKeyObject {
89   |   char iFilename[FILENAME_LENGTH];
90   |   char keyRing[FILENAME_LENGTH];
91   |   int rc;
92   |   u32 keyID; 
93   | };
94   | 
95   | enum {
96   |    iKO_OK  = 0,
97   |    iKO_UNCHANGED,
98   |    iKO_NOUSERID,
99   |    iKO_GENERAL,
100  |    iKO_NOTVALIDUSERID,
101  |    iKO_NOPUBLICKEY,
102  |    iKO_NODEFAULTPUBLICKEYRING,
103  |    iKO_CRC_ERROR,
104  |    iKO_NO_OPENPGP_DATA,
105  |    iKO_NO_IN_FILES,
106  |    iKO_SECRET_KEY_PRESENT,
107  |    iKO_GENERALFAILURE
108  | };
109  | 
110  | enum {
111  |    vSO_IS_VALID  = 0,
112  |    vSO_KO,
113  |    vSO_CRC_ERROR,
114  |    vSO_NO_PUBLIC_KEY,
115  |    vSO_NO_OPENPGP_DATA,
116  |    vSO_NO_IN_FILES,
117  |    vSO_NO_OUT_FILES
118  | };
119  | 
120  | enum {
121  |   vSO_Type_PlainText = 0,
122  |   vSO_Type_Unparsed,
123  |   vSO_Type_ToBeGPGVerified,
124  |   vSO_Type_Signed
125  | };
126  | 
127  | #ifdef __cplusplus
128  | extern "C" {
129  | #endif
130  | 
131  | void PA_VerifySignature(struct VerifySignObject *vSO);
132  | void PA_ImportKey(struct ImportKeyObject *iKO);
133  | void PA_RemoveKey(struct ImportKeyObject *iKO);
134  | void PA_Decrypt(struct ReadCryptedObject *rDO);
135  | EPNodePtr PA_ParseMessage(EPNodePtr ptr);
136  | 
137  | #ifdef __cplusplus
138  |  }
139  | #endif
140  | 
141  | #endif