Set the pwmd_process() result when finished. Fixes
[libpwmd.git] / src / types.h
blob0094329e7db3d3bb6d66020fccd0491275b1a003
1 /* vim:tw=78:ts=8:sw=4:set ft=c: */
2 /*
3 Copyright (C) 2006-2009 Ben Kibbey <bjk@luxsci.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02110-1301 USA
19 #ifndef TYPES_H
20 #define TYPES_H
22 #include <assuan.h>
24 #ifdef WITH_TCP
25 #include <libssh2.h>
26 #endif
28 #define N_ARRAY(a) (sizeof(a)/sizeof(a[0]))
30 typedef enum {
31 ASYNC_CMD_NONE,
32 #ifdef WITH_TCP
33 ASYNC_CMD_DNS,
34 ASYNC_CMD_CONNECT,
35 ASYNC_CMD_HOSTKEY,
36 #endif
37 ASYNC_CMD_OPEN,
38 ASYNC_CMD_SAVE,
39 } pwmd_async_cmd_t;
41 #ifdef WITH_TCP
42 typedef struct {
43 char *host;
44 unsigned port;
45 char *username;
46 char *known_hosts;
47 char *identity;
48 char *identity_pub;
49 int fd;
50 gpg_error_t rc;
51 ares_channel chan;
52 int async;
53 struct hostent *he;
54 LIBSSH2_SESSION *session;
55 LIBSSH2_CHANNEL *channel;
56 int get_only;
57 char *hostkey;
58 pwmd_async_cmd_t cmd;
59 } pwmd_tcp_conn_t;
60 #endif
62 struct pwm_s {
63 assuan_context_t ctx;
64 #ifdef WITH_TCP
65 pwmd_tcp_conn_t *tcp_conn;
66 #endif
67 int fd;
68 pwmd_async_t state;
69 pwmd_async_cmd_t cmd;
70 char *result; /* temporary: not related to anything the client can see. */
71 #ifdef WITH_PINENTRY
72 pid_t pid;
73 assuan_context_t pctx;
74 gpg_error_t pin_error;
75 #endif
76 int is_open_cmd;
77 int use_pinentry; // this is for a local pinentry, not pwmd pinentry.
78 int pinentry_tries;
79 int ntries;
80 char *pinentry_path;
81 char *pinentry_tty;
82 char *pinentry_term;
83 char *pinentry_display;
84 char *lcctype;
85 char *lcmessages;
86 char *title;
87 char *prompt;
88 char *desc;
89 char *password;
90 char *filename;
91 int pinentry_timeout;
92 pwmd_password_fn passfunc;
93 void *passdata;
94 pwmd_status_fn status_func;
95 void *status_data;
96 pwmd_inquire_fn inquire_func;
97 void *inquire_data;
98 char *name;
101 typedef struct {
102 size_t len;
103 void *buf;
104 } membuf_t;
106 static gpg_error_t assuan_command(pwm_t *pwm, assuan_context_t ctx,
107 char **result, const char *cmd);
109 #endif