8a98b557c5c680083493ddb609611bb5d96c44f5
[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
67     /* Computed or predefined data */
68     char           *version;
69     char           *digest;
70
71     /* Computed processed data (encodings, etc.) */
72     char           *encoded_msg;
73     char           *encrypted_msg;
74
75     /* State info */
76     unsigned short  state;
77     unsigned char   initval;
78
79 #if HAVE_LIBGPGME
80     /* For gpgme support */
81     char           *gpg_exe;
82     char           *gpg_recipient;
83     char           *gpg_signer;
84     char           *gpg_home_dir;
85
86     unsigned char   have_gpgme_context;
87
88     gpgme_ctx_t     gpg_ctx;
89     gpgme_key_t     recipient_key;
90     gpgme_key_t     signer_key;
91
92     unsigned char   verify_gpg_sigs;
93     unsigned char   ignore_gpg_sig_error;
94
95     fko_gpg_sig_t   gpg_sigs;
96
97     gpgme_error_t   gpg_err;
98 #endif /* HAVE_LIBGPGME */
99 };
100
101 #endif /* FKO_CONTEXT_H */
102
103 /***EOF***/