a5ae8ae06b5deea0c86f88450896e44be82b59b1
[gpgme.git] / assuan / assuan.h
1 /* assuan.c - Definitions for the Assuna protocol
2  *      Copyright (C) 2001 Free Software Foundation, Inc.
3  *
4  * This file is part of GnuPG.
5  *
6  * GnuPG is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * GnuPG is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19  */
20
21 #ifndef ASSUAN_H
22 #define ASSUAN_H
23
24 #include <stdio.h>
25 #include <sys/types.h>
26
27 #ifdef __cplusplus
28 extern "C" { 
29 #if 0
30  }
31 #endif
32 #endif
33
34 typedef enum {
35   ASSUAN_No_Error = 0,
36   ASSUAN_General_Error = 1,
37   ASSUAN_Out_Of_Core = 2,
38   ASSUAN_Invalid_Value = 3,
39   ASSUAN_Timeout = 4,  
40   ASSUAN_Read_Error = 5,
41   ASSUAN_Write_Error = 6,
42
43   /* error codes above 99 are meant as status codes */
44   ASSUAN_Not_Implemented = 100,
45   ASSUAN_Server_Fault    = 101,
46   ASSUAN_Invalid_Command = 102,
47   ASSUAN_Unknown_Command = 103,
48   ASSUAN_Syntax_Error    = 104,
49   ASSUAN_Parameter_Error = 105,
50   ASSUAN_Parameter_Conflict = 106,
51   ASSUAN_Line_Too_Long = 107,
52   ASSUAN_Line_Not_Terminated = 108,
53   ASSUAN_No_Input = 109,
54   ASSUAN_No_Output = 110,
55   ASSUAN_Canceled = 111,
56
57   ASSUAN_Cert_Revoked = 301,
58   ASSUAN_No_CRL_For_Cert = 302,
59   ASSUNA_CRL_Too_Old = 303,
60
61 } AssuanError;
62
63 /* This is a list of pre-registered ASSUAN commands */
64 typedef enum {
65   ASSUAN_CMD_NOP = 0,
66   ASSUAN_CMD_CANCEL,    /* cancel the current request */
67   ASSUAN_CMD_BYE,
68   ASSUAN_CMD_AUTH,
69   ASSUAN_CMD_RESET,
70   ASSUAN_CMD_DATA,
71   ASSUAN_CMD_END,
72   ASSUAN_CMD_INPUT,
73   ASSUAN_CMD_OUTPUT,
74
75   ASSUAN_CMD_USER = 256  /* Other commands should be used with this offset*/
76 } AssuanCommand;
77
78
79 struct assuan_context_s;
80 typedef struct assuan_context_s *ASSUAN_CONTEXT;
81
82 /*-- assuan-handler.c --*/
83 int assuan_register_command (ASSUAN_CONTEXT ctx,
84                              int cmd_id, const char *cmd_string,
85                              int (*handler)(ASSUAN_CONTEXT, char *));
86 int assuan_process (ASSUAN_CONTEXT ctx);
87 FILE *assuan_get_data_fp (ASSUAN_CONTEXT ctx);
88 void assuan_write_status (ASSUAN_CONTEXT ctx,
89                           const char *keyword, const char *text);
90
91
92 /*-- assuan-listen.c --*/
93 int assuan_accept (ASSUAN_CONTEXT ctx);
94 int assuan_get_input_fd (ASSUAN_CONTEXT ctx);
95 int assuan_get_output_fd (ASSUAN_CONTEXT ctx);
96
97
98 /*-- assuan-pipe-server.c --*/
99 int assuan_init_pipe_server (ASSUAN_CONTEXT *r_ctx, int filedes[2]);
100 void assuan_deinit_pipe_server (ASSUAN_CONTEXT ctx);
101
102
103 /*-- assuan-connect.c --*/
104 AssuanError assuan_pipe_connect (ASSUAN_CONTEXT *ctx, const char *name,
105                                  char *const argv[]);
106 void assuan_pipe_disconnect (ASSUAN_CONTEXT ctx);
107 pid_t assuan_get_pid (ASSUAN_CONTEXT ctx);
108
109 /*-- assuan-util.c --*/
110 void assuan_set_malloc_hooks ( void *(*new_alloc_func)(size_t n),
111                                void *(*new_realloc_func)(void *p, size_t n),
112                                void (*new_free_func)(void*) );
113 int assuan_set_error (ASSUAN_CONTEXT ctx, int err, const char *text);
114 void assuan_set_pointer (ASSUAN_CONTEXT ctx, void *pointer);
115 void *assuan_get_pointer (ASSUAN_CONTEXT ctx);
116
117
118 /*-- assuan-errors.c (built) --*/
119 const char *assuan_strerror (AssuanError err);
120
121
122 #ifdef __cplusplus
123 }
124 #endif
125 #endif /*ASSUAN_H*/