merged usage() information from master
[fwknop.git] / lib / fko_context.h
1 /*
2  *****************************************************************************
3  *
4  * File:    fko_context.h
5  *
6  * Author:  Damien S. Stuart
7  *
8  * Purpose: fko context definition.
9  *
10  * Copyright 2009-2010 Damien Stuart (dstuart@dstuart.org)
11  *
12  *  License (GNU Public License):
13  *
14  *  This program is free software; you can redistribute it and/or
15  *  modify it under the terms of the GNU General Public License
16  *  as published by the Free Software Foundation; either version 2
17  *  of the License, or (at your option) any later version.
18  *
19  *  This program is distributed in the hope that it will be useful,
20  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  *  GNU General Public License for more details.
23  *
24  *  You should have received a copy of the GNU General Public License
25  *  along with this program; if not, write to the Free Software
26  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
27  *  USA
28  *
29  *****************************************************************************
30 */
31 #ifndef FKO_CONTEXT_H
32 #define FKO_CONTEXT_H 1
33
34 #include "fko_common.h"
35
36 #if HAVE_LIBGPGME
37 /* Stucture to hold a list of the gpg signature information
38  * we are interested in.
39 */
40 struct fko_gpg_sig {
41     struct fko_gpg_sig *next;
42     gpgme_sigsum_t      summary;
43     gpgme_error_t       status;
44     char               *fpr;
45 };
46
47 typedef struct fko_gpg_sig *fko_gpg_sig_t;
48 #endif /* HAVE_LIBGPGME */
49
50 /* The pieces we need to make an FKO  SPA data packet.
51 */
52 struct fko_context {
53     /* FKO SPA user-definable message data */
54     char           *rand_val;
55     char           *username;
56     time_t          timestamp;
57     short           message_type;
58     char           *message;
59     char           *nat_access;
60     char           *server_auth;
61     unsigned int    client_timeout;
62
63     /* FKO SPA user-settable message encoding types */
64     short  digest_type;
65     short  encryption_type;
66     int    encryption_mode;
67
68     /* Computed or predefined data */
69     char           *version;
70     char           *digest;
71
72     /* Digest of raw encrypted/base64 data - this is used
73      * for replay attack detection
74     */
75     char           *raw_digest;
76     short           raw_digest_type;
77
78     /* Computed processed data (encodings, etc.) */
79     char           *encoded_msg;
80     char           *encrypted_msg;
81
82     /* State info */
83     unsigned short  state;
84     unsigned char   initval;
85
86 #if HAVE_LIBGPGME
87     /* For gpgme support */
88     char           *gpg_exe;
89     char           *gpg_recipient;
90     char           *gpg_signer;
91     char           *gpg_home_dir;
92
93     unsigned char   have_gpgme_context;
94
95     gpgme_ctx_t     gpg_ctx;
96     gpgme_key_t     recipient_key;
97     gpgme_key_t     signer_key;
98
99     unsigned char   verify_gpg_sigs;
100     unsigned char   ignore_gpg_sig_error;
101
102     fko_gpg_sig_t   gpg_sigs;
103
104     gpgme_error_t   gpg_err;
105 #endif /* HAVE_LIBGPGME */
106 };
107
108 #endif /* FKO_CONTEXT_H */
109
110 /***EOF***/