aboutsummaryrefslogtreecommitdiffstats
path: root/sm/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'sm/server.c')
-rw-r--r--sm/server.c185
1 files changed, 92 insertions, 93 deletions
diff --git a/sm/server.c b/sm/server.c
index 57e5d8f38..d7046c59e 100644
--- a/sm/server.c
+++ b/sm/server.c
@@ -32,7 +32,7 @@
#include "gpgsm.h"
-#define set_error(e,t) assuan_set_error (ctx, ASSUAN_ ## e, (t))
+#define set_error(e,t) assuan_set_error (ctx, gpg_error (e), (t))
/* The filepointer for status message used in non-server mode */
@@ -88,7 +88,7 @@ has_option (const char *line, const char *name)
static void
-close_message_fd (CTRL ctrl)
+close_message_fd (ctrl_t ctrl)
{
if (ctrl->server_local->message_fd != -1)
{
@@ -99,24 +99,24 @@ close_message_fd (CTRL ctrl)
static int
-option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
+option_handler (assuan_context_t ctx, const char *key, const char *value)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
if (!strcmp (key, "include-certs"))
{
int i = *value? atoi (value) : -1;
if (ctrl->include_certs < -2)
- return ASSUAN_Parameter_Error;
+ return gpg_error (GPG_ERR_ASS_PARAMETER);
ctrl->include_certs = i;
}
- else if (!strcmp (key, "display"))
+ else if (!strcmp (key, "display"))
{
if (opt.display)
free (opt.display);
opt.display = strdup (value);
if (!opt.display)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
}
else if (!strcmp (key, "ttyname"))
{
@@ -124,7 +124,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
free (opt.ttyname);
opt.ttyname = strdup (value);
if (!opt.ttyname)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
}
else if (!strcmp (key, "ttytype"))
{
@@ -132,7 +132,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
free (opt.ttytype);
opt.ttytype = strdup (value);
if (!opt.ttytype)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
}
else if (!strcmp (key, "lc-ctype"))
{
@@ -140,7 +140,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
free (opt.lc_ctype);
opt.lc_ctype = strdup (value);
if (!opt.lc_ctype)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
}
else if (!strcmp (key, "lc-messages"))
{
@@ -148,7 +148,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
free (opt.lc_messages);
opt.lc_messages = strdup (value);
if (!opt.lc_messages)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
}
else if (!strcmp (key, "list-mode"))
{
@@ -169,7 +169,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
ctrl->server_local->list_external = 1;
}
else
- return ASSUAN_Parameter_Error;
+ return gpg_error (GPG_ERR_ASS_PARAMETER);
}
else if (!strcmp (key, "with-validation"))
{
@@ -177,7 +177,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
ctrl->with_validation = i;
}
else
- return ASSUAN_Invalid_Option;
+ return gpg_error (GPG_ERR_UNKNOWN_OPTION);
return 0;
}
@@ -186,9 +186,9 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
static void
-reset_notify (ASSUAN_CONTEXT ctx)
+reset_notify (assuan_context_t ctx)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
gpgsm_release_certlist (ctrl->server_local->recplist);
gpgsm_release_certlist (ctrl->server_local->signerlist);
@@ -201,9 +201,9 @@ reset_notify (ASSUAN_CONTEXT ctx)
static void
-input_notify (ASSUAN_CONTEXT ctx, const char *line)
+input_notify (assuan_context_t ctx, const char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
ctrl->autodetect_encoding = 0;
ctrl->is_pem = 0;
@@ -219,9 +219,9 @@ input_notify (ASSUAN_CONTEXT ctx, const char *line)
}
static void
-output_notify (ASSUAN_CONTEXT ctx, const char *line)
+output_notify (assuan_context_t ctx, const char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
ctrl->create_pem = 0;
ctrl->create_base64 = 0;
@@ -245,9 +245,9 @@ output_notify (ASSUAN_CONTEXT ctx, const char *line)
client has to take care of this. All RECIPIENT commands are
cumulative until a RESET or an successful ENCRYPT command. */
static int
-cmd_recipient (ASSUAN_CONTEXT ctx, char *line)
+cmd_recipient (assuan_context_t ctx, char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
int rc;
rc = gpgsm_add_to_certlist (ctrl, line, 0, &ctrl->server_local->recplist, 0);
@@ -268,7 +268,7 @@ cmd_recipient (ASSUAN_CONTEXT ctx, char *line)
line, NULL);
}
- return map_to_assuan_status (rc);
+ return rc;
}
/* SIGNER <userID>
@@ -288,9 +288,9 @@ cmd_recipient (ASSUAN_CONTEXT ctx, char *line)
Note that this command returns an INV_RECP status which is a bit
strange, but they are very similar. */
static int
-cmd_signer (ASSUAN_CONTEXT ctx, char *line)
+cmd_signer (assuan_context_t ctx, char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
int rc;
rc = gpgsm_add_to_certlist (ctrl, line, 1,
@@ -312,7 +312,7 @@ cmd_signer (ASSUAN_CONTEXT ctx, char *line)
"0",
line, NULL);
}
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -330,9 +330,9 @@ cmd_signer (ASSUAN_CONTEXT ctx, char *line)
have been done while setting the recipients. The input and output
pipes are closed. */
static int
-cmd_encrypt (ASSUAN_CONTEXT ctx, char *line)
+cmd_encrypt (assuan_context_t ctx, char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
certlist_t cl;
int inp_fd, out_fd;
FILE *out_fp;
@@ -340,14 +340,14 @@ cmd_encrypt (ASSUAN_CONTEXT ctx, char *line)
inp_fd = assuan_get_input_fd (ctx);
if (inp_fd == -1)
- return set_error (No_Input, NULL);
+ return set_error (GPG_ERR_ASS_NO_INPUT, NULL);
out_fd = assuan_get_output_fd (ctx);
if (out_fd == -1)
- return set_error (No_Output, NULL);
+ return set_error (GPG_ERR_ASS_NO_OUTPUT, NULL);
out_fp = fdopen ( dup(out_fd), "w");
if (!out_fp)
- return set_error (General_Error, "fdopen() failed");
+ return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
/* Now add all encrypt-to marked recipients from the default
list. */
@@ -371,7 +371,7 @@ cmd_encrypt (ASSUAN_CONTEXT ctx, char *line)
close_message_fd (ctrl);
assuan_close_input_fd (ctx);
assuan_close_output_fd (ctx);
- return map_to_assuan_status (rc);
+ return rc;
}
/* DECRYPT
@@ -382,23 +382,23 @@ cmd_encrypt (ASSUAN_CONTEXT ctx, char *line)
no need to ask the client for a protecting passphrase - GpgAgent
does take care of this by requesting this from the user. */
static int
-cmd_decrypt (ASSUAN_CONTEXT ctx, char *line)
+cmd_decrypt (assuan_context_t ctx, char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
int inp_fd, out_fd;
FILE *out_fp;
int rc;
inp_fd = assuan_get_input_fd (ctx);
if (inp_fd == -1)
- return set_error (No_Input, NULL);
+ return set_error (GPG_ERR_ASS_NO_INPUT, NULL);
out_fd = assuan_get_output_fd (ctx);
if (out_fd == -1)
- return set_error (No_Output, NULL);
+ return set_error (GPG_ERR_ASS_NO_OUTPUT, NULL);
out_fp = fdopen ( dup(out_fd), "w");
if (!out_fp)
- return set_error (General_Error, "fdopen() failed");
+ return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
rc = gpgsm_decrypt (ctrl, inp_fd, out_fp);
fclose (out_fp);
@@ -407,7 +407,7 @@ cmd_decrypt (ASSUAN_CONTEXT ctx, char *line)
assuan_close_input_fd (ctx);
assuan_close_output_fd (ctx);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -421,22 +421,22 @@ cmd_decrypt (ASSUAN_CONTEXT ctx, char *line)
the signed material and the client must provide it.
*/
static int
-cmd_verify (ASSUAN_CONTEXT ctx, char *line)
+cmd_verify (assuan_context_t ctx, char *line)
{
int rc;
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
int fd = assuan_get_input_fd (ctx);
int out_fd = assuan_get_output_fd (ctx);
FILE *out_fp = NULL;
if (fd == -1)
- return set_error (No_Input, NULL);
+ return set_error (GPG_ERR_ASS_NO_INPUT, NULL);
if (out_fd != -1)
{
out_fp = fdopen ( dup(out_fd), "w");
if (!out_fp)
- return set_error (General_Error, "fdopen() failed");
+ return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
}
rc = gpgsm_verify (assuan_get_pointer (ctx), fd,
@@ -449,7 +449,7 @@ cmd_verify (ASSUAN_CONTEXT ctx, char *line)
assuan_close_input_fd (ctx);
assuan_close_output_fd (ctx);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -459,9 +459,9 @@ cmd_verify (ASSUAN_CONTEXT ctx, char *line)
set by OUTPUT. With "--detached" specified, a detached signature is
created (surprise). */
static int
-cmd_sign (ASSUAN_CONTEXT ctx, char *line)
+cmd_sign (assuan_context_t ctx, char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
int inp_fd, out_fd;
FILE *out_fp;
int detached;
@@ -469,16 +469,16 @@ cmd_sign (ASSUAN_CONTEXT ctx, char *line)
inp_fd = assuan_get_input_fd (ctx);
if (inp_fd == -1)
- return set_error (No_Input, NULL);
+ return set_error (GPG_ERR_ASS_NO_INPUT, NULL);
out_fd = assuan_get_output_fd (ctx);
if (out_fd == -1)
- return set_error (No_Output, NULL);
+ return set_error (GPG_ERR_ASS_NO_OUTPUT, NULL);
detached = has_option (line, "--detached");
out_fp = fdopen ( dup(out_fd), "w");
if (!out_fp)
- return set_error (General_Error, "fdopen() failed");
+ return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
rc = gpgsm_sign (assuan_get_pointer (ctx), ctrl->server_local->signerlist,
inp_fd, detached, out_fp);
@@ -489,7 +489,7 @@ cmd_sign (ASSUAN_CONTEXT ctx, char *line)
assuan_close_input_fd (ctx);
assuan_close_output_fd (ctx);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -500,14 +500,14 @@ cmd_sign (ASSUAN_CONTEXT ctx, char *line)
the certificate but not of the entire chain. It is possible to
import expired certificates. */
static int
-cmd_import (ASSUAN_CONTEXT ctx, char *line)
+cmd_import (assuan_context_t ctx, char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
int rc;
int fd = assuan_get_input_fd (ctx);
if (fd == -1)
- return set_error (No_Input, NULL);
+ return set_error (GPG_ERR_ASS_NO_INPUT, NULL);
rc = gpgsm_import (assuan_get_pointer (ctx), fd);
@@ -516,21 +516,21 @@ cmd_import (ASSUAN_CONTEXT ctx, char *line)
assuan_close_input_fd (ctx);
assuan_close_output_fd (ctx);
- return map_to_assuan_status (rc);
+ return rc;
}
static int
-cmd_export (ASSUAN_CONTEXT ctx, char *line)
+cmd_export (assuan_context_t ctx, char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
int fd = assuan_get_output_fd (ctx);
FILE *out_fp;
char *p;
STRLIST list, sl;
if (fd == -1)
- return set_error (No_Output, NULL);
+ return set_error (GPG_ERR_ASS_NO_OUTPUT, NULL);
/* break the line down into an STRLIST */
list = NULL;
@@ -546,7 +546,7 @@ cmd_export (ASSUAN_CONTEXT ctx, char *line)
if (!sl)
{
free_strlist (list);
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
}
sl->flags = 0;
strcpy_escaped_plus (sl->d, line);
@@ -559,7 +559,7 @@ cmd_export (ASSUAN_CONTEXT ctx, char *line)
if (!out_fp)
{
free_strlist (list);
- return set_error (General_Error, "fdopen() failed");
+ return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
}
gpgsm_export (ctrl, list, out_fp);
@@ -574,9 +574,9 @@ cmd_export (ASSUAN_CONTEXT ctx, char *line)
static int
-cmd_delkeys (ASSUAN_CONTEXT ctx, char *line)
+cmd_delkeys (assuan_context_t ctx, char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
char *p;
STRLIST list, sl;
int rc;
@@ -595,7 +595,7 @@ cmd_delkeys (ASSUAN_CONTEXT ctx, char *line)
if (!sl)
{
free_strlist (list);
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
}
sl->flags = 0;
strcpy_escaped_plus (sl->d, line);
@@ -612,7 +612,7 @@ cmd_delkeys (ASSUAN_CONTEXT ctx, char *line)
assuan_close_input_fd (ctx);
assuan_close_output_fd (ctx);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -622,22 +622,22 @@ cmd_delkeys (ASSUAN_CONTEXT ctx, char *line)
Set the file descriptor to read a message which is used with
detached signatures */
static int
-cmd_message (ASSUAN_CONTEXT ctx, char *line)
+cmd_message (assuan_context_t ctx, char *line)
{
char *endp;
int fd;
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
if (strncmp (line, "FD=", 3))
- return set_error (Syntax_Error, "FD=<n> expected");
+ return set_error (GPG_ERR_ASS_SYNTAX, "FD=<n> expected");
line += 3;
if (!digitp (line))
- return set_error (Syntax_Error, "number required");
+ return set_error (GPG_ERR_ASS_SYNTAX, "number required");
fd = strtoul (line, &endp, 10);
if (*endp)
- return set_error (Syntax_Error, "garbage found");
+ return set_error (GPG_ERR_ASS_SYNTAX, "garbage found");
if (fd == -1)
- return set_error (No_Input, NULL);
+ return set_error (GPG_ERR_ASS_NO_INPUT, NULL);
ctrl->server_local->message_fd = fd;
return 0;
@@ -645,9 +645,9 @@ cmd_message (ASSUAN_CONTEXT ctx, char *line)
static int
-do_listkeys (ASSUAN_CONTEXT ctx, char *line, int mode)
+do_listkeys (assuan_context_t ctx, char *line, int mode)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
FILE *fp = assuan_get_data_fp (ctx);
char *p;
STRLIST list, sl;
@@ -655,7 +655,7 @@ do_listkeys (ASSUAN_CONTEXT ctx, char *line, int mode)
gpg_error_t err;
if (!fp)
- return set_error (General_Error, "no data stream");
+ return set_error (GPG_ERR_ASS_GENERAL, "no data stream");
/* break the line down into an STRLIST */
list = NULL;
@@ -671,7 +671,7 @@ do_listkeys (ASSUAN_CONTEXT ctx, char *line, int mode)
if (!sl)
{
free_strlist (list);
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
}
sl->flags = 0;
strcpy_escaped_plus (sl->d, line);
@@ -688,17 +688,17 @@ do_listkeys (ASSUAN_CONTEXT ctx, char *line, int mode)
listmode |= (1<<7);
err = gpgsm_list_keys (assuan_get_pointer (ctx), list, fp, listmode);
free_strlist (list);
- return map_to_assuan_status (err);
+ return err;
}
static int
-cmd_listkeys (ASSUAN_CONTEXT ctx, char *line)
+cmd_listkeys (assuan_context_t ctx, char *line)
{
return do_listkeys (ctx, line, 3);
}
static int
-cmd_listsecretkeys (ASSUAN_CONTEXT ctx, char *line)
+cmd_listsecretkeys (assuan_context_t ctx, char *line)
{
return do_listkeys (ctx, line, 2);
}
@@ -710,23 +710,23 @@ cmd_listsecretkeys (ASSUAN_CONTEXT ctx, char *line)
certificate request to the output.
*/
static int
-cmd_genkey (ASSUAN_CONTEXT ctx, char *line)
+cmd_genkey (assuan_context_t ctx, char *line)
{
- CTRL ctrl = assuan_get_pointer (ctx);
+ ctrl_t ctrl = assuan_get_pointer (ctx);
int inp_fd, out_fd;
FILE *out_fp;
int rc;
inp_fd = assuan_get_input_fd (ctx);
if (inp_fd == -1)
- return set_error (No_Input, NULL);
+ return set_error (GPG_ERR_ASS_NO_INPUT, NULL);
out_fd = assuan_get_output_fd (ctx);
if (out_fd == -1)
- return set_error (No_Output, NULL);
+ return set_error (GPG_ERR_ASS_NO_OUTPUT, NULL);
out_fp = fdopen ( dup(out_fd), "w");
if (!out_fp)
- return set_error (General_Error, "fdopen() failed");
+ return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
rc = gpgsm_genkey (ctrl, inp_fd, out_fp);
fclose (out_fp);
@@ -734,7 +734,7 @@ cmd_genkey (ASSUAN_CONTEXT ctx, char *line)
assuan_close_input_fd (ctx);
assuan_close_output_fd (ctx);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -743,11 +743,11 @@ cmd_genkey (ASSUAN_CONTEXT ctx, char *line)
/* Tell the assuan library about our commands */
static int
-register_commands (ASSUAN_CONTEXT ctx)
+register_commands (assuan_context_t ctx)
{
static struct {
const char *name;
- int (*handler)(ASSUAN_CONTEXT, char *line);
+ int (*handler)(assuan_context_t, char *line);
} table[] = {
{ "RECIPIENT", cmd_recipient },
{ "SIGNER", cmd_signer },
@@ -785,7 +785,7 @@ gpgsm_server (certlist_t default_recplist)
{
int rc;
int filedes[2];
- ASSUAN_CONTEXT ctx;
+ assuan_context_t ctx;
struct server_control_s ctrl;
static const char hello[] = ("GNU Privacy Guard's S/M server "
VERSION " ready");
@@ -802,14 +802,14 @@ gpgsm_server (certlist_t default_recplist)
if (rc)
{
log_error ("failed to initialize the server: %s\n",
- assuan_strerror(rc));
+ gpg_strerror (rc));
gpgsm_exit (2);
}
rc = register_commands (ctx);
if (rc)
{
log_error ("failed to the register commands with Assuan: %s\n",
- assuan_strerror(rc));
+ gpg_strerror(rc));
gpgsm_exit (2);
}
if (opt.verbose || opt.debug)
@@ -862,14 +862,14 @@ gpgsm_server (certlist_t default_recplist)
}
else if (rc)
{
- log_info ("Assuan accept problem: %s\n", assuan_strerror (rc));
+ log_info ("Assuan accept problem: %s\n", gpg_strerror (rc));
break;
}
rc = assuan_process (ctx);
if (rc)
{
- log_info ("Assuan processing failed: %s\n", assuan_strerror (rc));
+ log_info ("Assuan processing failed: %s\n", gpg_strerror (rc));
continue;
}
}
@@ -966,7 +966,7 @@ get_status_string ( int no )
gpg_error_t
-gpgsm_status2 (CTRL ctrl, int no, ...)
+gpgsm_status2 (ctrl_t ctrl, int no, ...)
{
gpg_error_t err = 0;
va_list arg_ptr;
@@ -1015,7 +1015,7 @@ gpgsm_status2 (CTRL ctrl, int no, ...)
}
else
{
- ASSUAN_CONTEXT ctx = ctrl->server_local->assuan_ctx;
+ assuan_context_t ctx = ctrl->server_local->assuan_ctx;
char buf[950], *p;
size_t n;
@@ -1032,8 +1032,7 @@ gpgsm_status2 (CTRL ctrl, int no, ...)
*p++ = *text++;
}
*p = 0;
- err = map_assuan_err (assuan_write_status (ctx,
- get_status_string (no), buf));
+ err = assuan_write_status (ctx, get_status_string (no), buf);
}
va_end (arg_ptr);
@@ -1041,13 +1040,13 @@ gpgsm_status2 (CTRL ctrl, int no, ...)
}
gpg_error_t
-gpgsm_status (CTRL ctrl, int no, const char *text)
+gpgsm_status (ctrl_t ctrl, int no, const char *text)
{
return gpgsm_status2 (ctrl, no, text, NULL);
}
gpg_error_t
-gpgsm_status_with_err_code (CTRL ctrl, int no, const char *text,
+gpgsm_status_with_err_code (ctrl_t ctrl, int no, const char *text,
gpg_err_code_t ec)
{
char buf[30];