aboutsummaryrefslogtreecommitdiffstats
path: root/sm
diff options
context:
space:
mode:
Diffstat (limited to 'sm')
-rw-r--r--sm/ChangeLog14
-rw-r--r--sm/base64.c8
-rw-r--r--sm/call-agent.c62
-rw-r--r--sm/call-dirmngr.c78
-rw-r--r--sm/certcheck.c4
-rw-r--r--sm/certlist.c12
-rw-r--r--sm/certreqgen.c6
-rw-r--r--sm/delete.c4
-rw-r--r--sm/encrypt.c10
-rw-r--r--sm/export.c6
-rw-r--r--sm/gpgsm.c5
-rw-r--r--sm/gpgsm.h32
-rw-r--r--sm/import.c14
-rw-r--r--sm/keydb.c2
-rw-r--r--sm/keylist.c4
-rw-r--r--sm/server.c185
-rw-r--r--sm/sign.c8
-rw-r--r--sm/verify.c2
18 files changed, 236 insertions, 220 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog
index 149ba4786..3c60f6f9c 100644
--- a/sm/ChangeLog
+++ b/sm/ChangeLog
@@ -1,3 +1,17 @@
+2006-09-06 Werner Koch <[email protected]>
+
+ * gpgsm.h (OUT_OF_CORE): Removed and changed all callers to
+ out_of_core.
+ (CTRL): Removed and changed everywhere to ctrl_t.
+ (CERTLIST): Ditto.
+
+ Replaced all Assuan error codes by libgpg-error codes. Removed
+ all map_to_assuan_status and map_assuan_err.
+
+ * gpgsm.c (main): Call assuan_set_assuan_err_source to have Assuan
+ switch to gpg-error codes.
+ * server.c (set_error): Adjusted.
+
2006-08-29 Werner Koch <[email protected]>
* call-agent.c (gpgsm_agent_pkdecrypt): Allow decryption using
diff --git a/sm/base64.c b/sm/base64.c
index 59ab6f24b..1d5456788 100644
--- a/sm/base64.c
+++ b/sm/base64.c
@@ -522,7 +522,7 @@ base64_finish_write (struct writer_cb_parm_s *parm)
until no more objects were found. */
int
gpgsm_create_reader (Base64Context *ctx,
- CTRL ctrl, FILE *fp, int allow_multi_pem,
+ ctrl_t ctrl, FILE *fp, int allow_multi_pem,
ksba_reader_t *r_reader)
{
int rc;
@@ -531,7 +531,7 @@ gpgsm_create_reader (Base64Context *ctx,
*r_reader = NULL;
*ctx = xtrycalloc (1, sizeof **ctx);
if (!*ctx)
- return OUT_OF_CORE (errno);
+ return out_of_core ();
(*ctx)->u.rparm.allow_multi_pem = allow_multi_pem;
rc = ksba_reader_new (&r);
@@ -595,7 +595,7 @@ gpgsm_destroy_reader (Base64Context ctx)
function on. */
int
gpgsm_create_writer (Base64Context *ctx,
- CTRL ctrl, FILE *fp, ksba_writer_t *r_writer)
+ ctrl_t ctrl, FILE *fp, ksba_writer_t *r_writer)
{
int rc;
ksba_writer_t w;
@@ -603,7 +603,7 @@ gpgsm_create_writer (Base64Context *ctx,
*r_writer = NULL;
*ctx = xtrycalloc (1, sizeof **ctx);
if (!*ctx)
- return OUT_OF_CORE (errno);
+ return out_of_core ();
rc = ksba_writer_new (&w);
if (rc)
diff --git a/sm/call-agent.c b/sm/call-agent.c
index 61332144e..2ab52ab7c 100644
--- a/sm/call-agent.c
+++ b/sm/call-agent.c
@@ -129,7 +129,7 @@ start_agent (ctrl_t ctrl)
no_close_list[i] = -1;
/* Connect to the agent and perform initial handshaking. */
- rc = assuan_pipe_connect (&ctx, opt.agent_program, (char**)argv,
+ rc = assuan_pipe_connect (&ctx, opt.agent_program, argv,
no_close_list);
}
}
@@ -162,7 +162,7 @@ start_agent (ctrl_t ctrl)
rc = assuan_socket_connect (&ctx, infostr, pid);
xfree (infostr);
- if (rc == ASSUAN_Connect_Failed)
+ if (gpg_err_code (rc) == GPG_ERR_ASS_CONNECT_FAILED)
{
log_error (_("can't connect to the agent - trying fall back\n"));
force_pipe_server = 1;
@@ -172,7 +172,7 @@ start_agent (ctrl_t ctrl)
if (rc)
{
- log_error ("can't connect to the agent: %s\n", assuan_strerror (rc));
+ log_error ("can't connect to the agent: %s\n", gpg_strerror (rc));
return gpg_error (GPG_ERR_NO_AGENT);
}
agent_ctx = ctx;
@@ -182,7 +182,7 @@ start_agent (ctrl_t ctrl)
rc = assuan_transact (agent_ctx, "RESET", NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
return send_pinentry_environment (agent_ctx, GPG_ERR_SOURCE_DEFAULT,
opt.display, opt.ttyname, opt.ttytype,
@@ -190,7 +190,7 @@ start_agent (ctrl_t ctrl)
}
-static AssuanError
+static int
membuf_data_cb (void *opaque, const void *buffer, size_t length)
{
membuf_t *data = opaque;
@@ -225,13 +225,13 @@ gpgsm_agent_pksign (ctrl_t ctrl, const char *keygrip, const char *desc,
rc = assuan_transact (agent_ctx, "RESET", NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
snprintf (line, DIM(line)-1, "SIGKEY %s", keygrip);
line[DIM(line)-1] = 0;
rc = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
if (desc)
{
@@ -240,7 +240,7 @@ gpgsm_agent_pksign (ctrl_t ctrl, const char *keygrip, const char *desc,
rc = assuan_transact (agent_ctx, line,
NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
}
sprintf (line, "SETHASH %d ", digestalgo);
@@ -249,7 +249,7 @@ gpgsm_agent_pksign (ctrl_t ctrl, const char *keygrip, const char *desc,
sprintf (p, "%02X", digest[i]);
rc = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
init_membuf (&data, 1024);
rc = assuan_transact (agent_ctx, "PKSIGN",
@@ -257,7 +257,7 @@ gpgsm_agent_pksign (ctrl_t ctrl, const char *keygrip, const char *desc,
if (rc)
{
xfree (get_membuf (&data, &len));
- return map_assuan_err (rc);
+ return rc;
}
*r_buf = get_membuf (&data, r_buflen);
@@ -267,7 +267,7 @@ gpgsm_agent_pksign (ctrl_t ctrl, const char *keygrip, const char *desc,
return gpg_error (GPG_ERR_INV_VALUE);
}
- return *r_buf? 0 : OUT_OF_CORE (errno);
+ return *r_buf? 0 : out_of_core ();
}
@@ -275,11 +275,11 @@ gpgsm_agent_pksign (ctrl_t ctrl, const char *keygrip, const char *desc,
/* Handle a CIPHERTEXT inquiry. Note, we only send the data,
assuan_transact talkes care of flushing and writing the end */
-static AssuanError
+static int
inq_ciphertext_cb (void *opaque, const char *keyword)
{
struct cipher_parm_s *parm = opaque;
- AssuanError rc;
+ int rc;
assuan_begin_confidential (parm->ctx);
rc = assuan_send_data (parm->ctx, parm->ciphertext, parm->ciphertextlen);
@@ -317,14 +317,14 @@ gpgsm_agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
rc = assuan_transact (agent_ctx, "RESET", NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
assert ( DIM(line) >= 50 );
snprintf (line, DIM(line)-1, "SETKEY %s", keygrip);
line[DIM(line)-1] = 0;
rc = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
if (desc)
{
@@ -333,7 +333,7 @@ gpgsm_agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
rc = assuan_transact (agent_ctx, line,
NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
}
init_membuf (&data, 1024);
@@ -346,7 +346,7 @@ gpgsm_agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
if (rc)
{
xfree (get_membuf (&data, &len));
- return map_assuan_err (rc);
+ return rc;
}
put_membuf (&data, "", 1); /* Make sure it is 0 terminated. */
@@ -390,11 +390,11 @@ gpgsm_agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
/* Handle a KEYPARMS inquiry. Note, we only send the data,
assuan_transact takes care of flushing and writing the end */
-static AssuanError
+static int
inq_genkey_parms (void *opaque, const char *keyword)
{
struct genkey_parm_s *parm = opaque;
- AssuanError rc;
+ int rc;
rc = assuan_send_data (parm->ctx, parm->sexp, parm->sexplen);
return rc;
@@ -420,7 +420,7 @@ gpgsm_agent_genkey (ctrl_t ctrl,
rc = assuan_transact (agent_ctx, "RESET", NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
init_membuf (&data, 1024);
gk_parm.ctx = agent_ctx;
@@ -434,7 +434,7 @@ gpgsm_agent_genkey (ctrl_t ctrl,
if (rc)
{
xfree (get_membuf (&data, &len));
- return map_assuan_err (rc);
+ return rc;
}
buf = get_membuf (&data, &len);
if (!buf)
@@ -467,7 +467,7 @@ gpgsm_agent_readkey (ctrl_t ctrl, const char *hexkeygrip,
rc = assuan_transact (agent_ctx, "RESET",NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
snprintf (line, DIM(line)-1, "READKEY %s", hexkeygrip);
line[DIM(line)-1] = 0;
@@ -479,7 +479,7 @@ gpgsm_agent_readkey (ctrl_t ctrl, const char *hexkeygrip,
if (rc)
{
xfree (get_membuf (&data, &len));
- return map_assuan_err (rc);
+ return rc;
}
buf = get_membuf (&data, &len);
if (!buf)
@@ -519,7 +519,7 @@ gpgsm_agent_istrusted (ctrl_t ctrl, ksba_cert_t cert)
xfree (fpr);
rc = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
- return map_assuan_err (rc);
+ return rc;
}
/* Ask the agent to mark CERT as a trusted Root-CA one */
@@ -553,7 +553,7 @@ gpgsm_agent_marktrusted (ctrl_t ctrl, ksba_cert_t cert)
xfree (fpr);
rc = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
- return map_assuan_err (rc);
+ return rc;
}
@@ -577,11 +577,11 @@ gpgsm_agent_havekey (ctrl_t ctrl, const char *hexkeygrip)
line[DIM(line)-1] = 0;
rc = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
- return map_assuan_err (rc);
+ return rc;
}
-static AssuanError
+static int
learn_cb (void *opaque, const void *buffer, size_t length)
{
struct learn_parm_s *parm = opaque;
@@ -671,7 +671,7 @@ gpgsm_agent_learn (ctrl_t ctrl)
NULL, NULL, NULL, NULL);
xfree (get_membuf (&data, &len));
if (rc)
- return map_assuan_err (rc);
+ return rc;
return learn_parm.error;
}
@@ -699,14 +699,14 @@ gpgsm_agent_passwd (ctrl_t ctrl, const char *hexkeygrip, const char *desc)
rc = assuan_transact (agent_ctx, line,
NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
- return map_assuan_err (rc);
+ return rc;
}
snprintf (line, DIM(line)-1, "PASSWD %s", hexkeygrip);
line[DIM(line)-1] = 0;
rc = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
- return map_assuan_err (rc);
+ return rc;
}
@@ -727,5 +727,5 @@ gpgsm_agent_get_confirmation (ctrl_t ctrl, const char *desc)
line[DIM(line)-1] = 0;
rc = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
- return map_assuan_err (rc);
+ return rc;
}
diff --git a/sm/call-dirmngr.c b/sm/call-dirmngr.c
index 0de09a9ba..376940bd5 100644
--- a/sm/call-dirmngr.c
+++ b/sm/call-dirmngr.c
@@ -48,25 +48,25 @@ struct membuf {
-static ASSUAN_CONTEXT dirmngr_ctx = NULL;
+static assuan_context_t dirmngr_ctx = NULL;
static int force_pipe_server = 0;
struct inq_certificate_parm_s {
- ASSUAN_CONTEXT ctx;
+ assuan_context_t ctx;
ksba_cert_t cert;
ksba_cert_t issuer_cert;
};
struct isvalid_status_parm_s {
- CTRL ctrl;
+ ctrl_t ctrl;
int seen;
unsigned char fpr[20];
};
struct lookup_parm_s {
- CTRL ctrl;
- ASSUAN_CONTEXT ctx;
+ ctrl_t ctrl;
+ assuan_context_t ctx;
void (*cb)(void *, ksba_cert_t);
void *cb_value;
struct membuf data;
@@ -74,7 +74,7 @@ struct lookup_parm_s {
};
struct run_command_parm_s {
- ASSUAN_CONTEXT ctx;
+ assuan_context_t ctx;
};
@@ -148,7 +148,7 @@ start_dirmngr (void)
{
int rc;
char *infostr, *p;
- ASSUAN_CONTEXT ctx;
+ assuan_context_t ctx;
int try_default = 0;
if (dirmngr_ctx)
@@ -200,7 +200,7 @@ start_dirmngr (void)
no_close_list[i] = -1;
/* connect to the agent and perform initial handshaking */
- rc = assuan_pipe_connect (&ctx, opt.dirmngr_program, (char**)argv,
+ rc = assuan_pipe_connect (&ctx, opt.dirmngr_program, argv,
no_close_list);
}
else
@@ -237,7 +237,7 @@ start_dirmngr (void)
rc = assuan_socket_connect (&ctx, infostr, pid);
xfree (infostr);
- if (rc == ASSUAN_Connect_Failed)
+ if (gpg_err_code (rc) == GPG_ERR_ASS_CONNECT_FAILED)
{
log_error (_("can't connect to the dirmngr - trying fall back\n"));
force_pipe_server = 1;
@@ -247,7 +247,7 @@ start_dirmngr (void)
if (rc)
{
- log_error ("can't connect to the dirmngr: %s\n", assuan_strerror (rc));
+ log_error ("can't connect to the dirmngr: %s\n", gpg_strerror (rc));
return gpg_error (GPG_ERR_NO_DIRMNGR);
}
dirmngr_ctx = ctx;
@@ -260,11 +260,11 @@ start_dirmngr (void)
/* Handle a SENDCERT inquiry. */
-static AssuanError
+static int
inq_certificate (void *opaque, const char *line)
{
struct inq_certificate_parm_s *parm = opaque;
- AssuanError rc;
+ int rc;
const unsigned char *der;
size_t derlen;
int issuer_mode = 0;
@@ -296,7 +296,7 @@ inq_certificate (void *opaque, const char *line)
else
{
log_error ("unsupported inquiry `%s'\n", line);
- return ASSUAN_Inquire_Unknown;
+ return gpg_error (GPG_ERR_ASS_UNKNOWN_INQUIRE);
}
if (!*line)
@@ -304,7 +304,7 @@ inq_certificate (void *opaque, const char *line)
der = ksba_cert_get_image (issuer_mode? parm->issuer_cert : parm->cert,
&derlen);
if (!der)
- rc = ASSUAN_Inquire_Error;
+ rc = gpg_error (GPG_ERR_INV_CERT_OBJ);
else
rc = assuan_send_data (parm->ctx, der, derlen);
}
@@ -312,7 +312,7 @@ inq_certificate (void *opaque, const char *line)
{
log_error ("sending specific issuer certificate back "
"is not yet implemented\n");
- rc = ASSUAN_Inquire_Error;
+ rc = gpg_error (GPG_ERR_ASS_UNKNOWN_INQUIRE);
}
else
{ /* Send the given certificate. */
@@ -324,13 +324,13 @@ inq_certificate (void *opaque, const char *line)
if (err)
{
log_error ("certificate not found: %s\n", gpg_strerror (err));
- rc = ASSUAN_Inquire_Error;
+ rc = gpg_error (GPG_ERR_NOT_FOUND);
}
else
{
der = ksba_cert_get_image (cert, &derlen);
if (!der)
- rc = ASSUAN_Inquire_Error;
+ rc = gpg_error (GPG_ERR_INV_CERT_OBJ);
else
rc = assuan_send_data (parm->ctx, der, derlen);
ksba_cert_release (cert);
@@ -373,7 +373,7 @@ isvalid_status_cb (void *opaque, const char *line)
for (line += 8; *line == ' '; line++)
;
if (gpgsm_status (parm->ctrl, STATUS_PROGRESS, line))
- return ASSUAN_Canceled;
+ return gpg_error (GPG_ERR_ASS_CANCELED);
}
}
else if (!strncmp (line, "ONLY_VALID_IF_CERT_VALID", 24)
@@ -466,8 +466,8 @@ gpgsm_dirmngr_isvalid (ctrl_t ctrl,
inq_certificate, &parm,
isvalid_status_cb, &stparm);
if (opt.verbose > 1)
- log_info ("response of dirmngr: %s\n", rc? assuan_strerror (rc): "okay");
- rc = map_assuan_err (rc);
+ log_info ("response of dirmngr: %s\n", rc? gpg_strerror (rc): "okay");
+ rc = rc;
if (!rc && stparm.seen)
{
@@ -526,7 +526,7 @@ gpgsm_dirmngr_isvalid (ctrl_t ctrl,
/* Lookup helpers*/
-static AssuanError
+static int
lookup_cb (void *opaque, const void *buffer, size_t length)
{
struct lookup_parm_s *parm = opaque;
@@ -632,7 +632,7 @@ pattern_from_strlist (STRLIST names)
return pattern;
}
-static AssuanError
+static int
lookup_status_cb (void *opaque, const char *line)
{
struct lookup_parm_s *parm = opaque;
@@ -644,7 +644,7 @@ lookup_status_cb (void *opaque, const char *line)
for (line += 8; *line == ' '; line++)
;
if (gpgsm_status (parm->ctrl, STATUS_PROGRESS, line))
- return ASSUAN_Canceled;
+ return gpg_error (GPG_ERR_ASS_CANCELED);
}
}
else if (!strncmp (line, "TRUNCATED", 9) && (line[9]==' ' || !line[9]))
@@ -665,7 +665,7 @@ lookup_status_cb (void *opaque, const char *line)
the callback CB which will be passed cert by cert. Note that CTRL
is optional. */
int
-gpgsm_dirmngr_lookup (CTRL ctrl, STRLIST names,
+gpgsm_dirmngr_lookup (ctrl_t ctrl, STRLIST names,
void (*cb)(void*, ksba_cert_t), void *cb_value)
{
int rc;
@@ -680,7 +680,7 @@ gpgsm_dirmngr_lookup (CTRL ctrl, STRLIST names,
pattern = pattern_from_strlist (names);
if (!pattern)
- return OUT_OF_CORE (errno);
+ return out_of_core ();
snprintf (line, DIM(line)-1, "LOOKUP %s", pattern);
line[DIM(line)-1] = 0;
xfree (pattern);
@@ -696,7 +696,7 @@ gpgsm_dirmngr_lookup (CTRL ctrl, STRLIST names,
NULL, NULL, lookup_status_cb, &parm);
xfree (get_membuf (&parm.data, &len));
if (rc)
- return map_assuan_err (rc);
+ return rc;
return parm.error;
}
@@ -705,7 +705,7 @@ gpgsm_dirmngr_lookup (CTRL ctrl, STRLIST names,
/* Run Command helpers*/
/* Fairly simple callback to write all output of dirmngr to stdout. */
-static AssuanError
+static int
run_command_cb (void *opaque, const void *buffer, size_t length)
{
if (buffer)
@@ -717,11 +717,11 @@ run_command_cb (void *opaque, const void *buffer, size_t length)
}
/* Handle inquiries from the dirmngr COMMAND. */
-static AssuanError
+static int
run_command_inq_cb (void *opaque, const char *line)
{
struct run_command_parm_s *parm = opaque;
- AssuanError rc = 0;
+ int rc = 0;
if ( !strncmp (line, "SENDCERT", 8) && (line[8] == ' ' || !line[8]) )
{ /* send the given certificate */
@@ -732,19 +732,19 @@ run_command_inq_cb (void *opaque, const char *line)
line += 8;
if (!*line)
- return ASSUAN_Inquire_Error;
+ return gpg_error (GPG_ERR_ASS_PARAMETER);
err = gpgsm_find_cert (line, NULL, &cert);
if (err)
{
log_error ("certificate not found: %s\n", gpg_strerror (err));
- rc = ASSUAN_Inquire_Error;
+ rc = gpg_error (GPG_ERR_NOT_FOUND);
}
else
{
der = ksba_cert_get_image (cert, &derlen);
if (!der)
- rc = ASSUAN_Inquire_Error;
+ rc = gpg_error (GPG_ERR_INV_CERT_OBJ);
else
rc = assuan_send_data (parm->ctx, der, derlen);
ksba_cert_release (cert);
@@ -758,13 +758,13 @@ run_command_inq_cb (void *opaque, const char *line)
else
{
log_error ("unsupported inquiry `%s'\n", line);
- rc = ASSUAN_Inquire_Unknown;
+ rc = gpg_error (GPG_ERR_ASS_UNKNOWN_INQUIRE);
}
return rc;
}
-static AssuanError
+static int
run_command_status_cb (void *opaque, const char *line)
{
ctrl_t ctrl = opaque;
@@ -780,7 +780,7 @@ run_command_status_cb (void *opaque, const char *line)
for (line += 8; *line == ' '; line++)
;
if (gpgsm_status (ctrl, STATUS_PROGRESS, line))
- return ASSUAN_Canceled;
+ return gpg_error (GPG_ERR_ASS_CANCELED);
}
}
return 0;
@@ -794,7 +794,7 @@ run_command_status_cb (void *opaque, const char *line)
percent characters within the argument strings are percent escaped
so that blanks can act as delimiters. */
int
-gpgsm_dirmngr_run_command (CTRL ctrl, const char *command,
+gpgsm_dirmngr_run_command (ctrl_t ctrl, const char *command,
int argc, char **argv)
{
int rc;
@@ -815,7 +815,7 @@ gpgsm_dirmngr_run_command (CTRL ctrl, const char *command,
len += 1 + 3*strlen (argv[i]); /* enough space for percent escaping */
line = xtrymalloc (len);
if (!line)
- return OUT_OF_CORE (errno);
+ return out_of_core ();
p = stpcpy (line, command);
for (i=0; i < argc; i++)
@@ -843,6 +843,6 @@ gpgsm_dirmngr_run_command (CTRL ctrl, const char *command,
run_command_inq_cb, &parm,
run_command_status_cb, ctrl);
xfree (line);
- log_info ("response of dirmngr: %s\n", rc? assuan_strerror (rc): "okay");
- return map_assuan_err (rc);
+ log_info ("response of dirmngr: %s\n", rc? gpg_strerror (rc): "okay");
+ return rc;
}
diff --git a/sm/certcheck.c b/sm/certcheck.c
index 732356149..e8b842b88 100644
--- a/sm/certcheck.c
+++ b/sm/certcheck.c
@@ -54,7 +54,7 @@ do_encode_md (gcry_md_hd_t md, int algo, int pkalgo, unsigned int nbits,
}
frame = xtrymalloc (nframe);
if (!frame)
- return OUT_OF_CORE (errno);
+ return out_of_core ();
memcpy (frame, gcry_md_read (md, algo), nframe);
n = nframe;
}
@@ -91,7 +91,7 @@ do_encode_md (gcry_md_hd_t md, int algo, int pkalgo, unsigned int nbits,
*/
frame = xtrymalloc (nframe);
if (!frame)
- return OUT_OF_CORE (errno);
+ return out_of_core ();
n = 0;
frame[n++] = 0;
frame[n++] = 1; /* block type */
diff --git a/sm/certlist.c b/sm/certlist.c
index cde2930ec..7e0d4e80a 100644
--- a/sm/certlist.c
+++ b/sm/certlist.c
@@ -258,7 +258,7 @@ gpgsm_add_cert_to_certlist (ctrl_t ctrl, ksba_cert_t cert,
{
certlist_t cl = xtrycalloc (1, sizeof *cl);
if (!cl)
- return OUT_OF_CORE (errno);
+ return out_of_core ();
cl->cert = cert;
ksba_cert_ref (cert);
cl->next = *listaddr;
@@ -274,7 +274,7 @@ gpgsm_add_cert_to_certlist (ctrl_t ctrl, ksba_cert_t cert,
flag in the new create LISTADDR item. */
int
gpgsm_add_to_certlist (ctrl_t ctrl, const char *name, int secret,
- CERTLIST *listaddr, int is_encrypt_to)
+ certlist_t *listaddr, int is_encrypt_to)
{
int rc;
KEYDB_SEARCH_DESC desc;
@@ -379,9 +379,9 @@ gpgsm_add_to_certlist (ctrl_t ctrl, const char *name, int secret,
rc = gpgsm_validate_chain (ctrl, cert, NULL, 0, NULL, 0);
if (!rc)
{
- CERTLIST cl = xtrycalloc (1, sizeof *cl);
+ certlist_t cl = xtrycalloc (1, sizeof *cl);
if (!cl)
- rc = OUT_OF_CORE (errno);
+ rc = out_of_core ();
else
{
cl->cert = cert; cert = NULL;
@@ -400,11 +400,11 @@ gpgsm_add_to_certlist (ctrl_t ctrl, const char *name, int secret,
}
void
-gpgsm_release_certlist (CERTLIST list)
+gpgsm_release_certlist (certlist_t list)
{
while (list)
{
- CERTLIST cl = list->next;
+ certlist_t cl = list->next;
ksba_cert_release (list->cert);
xfree (list);
list = cl;
diff --git a/sm/certreqgen.c b/sm/certreqgen.c
index 9ca16017d..e1006753e 100644
--- a/sm/certreqgen.c
+++ b/sm/certreqgen.c
@@ -606,7 +606,7 @@ create_request (ctrl_t ctrl,
buf = xtrymalloc (strlen (s) + 3);
if (!buf)
{
- rc = OUT_OF_CORE (errno);
+ rc = out_of_core ();
goto leave;
}
*buf = '<';
@@ -631,7 +631,7 @@ create_request (ctrl_t ctrl,
buf = p = xtrymalloc (11 + strlen (numbuf) + len + 3);
if (!buf)
{
- rc = OUT_OF_CORE (errno);
+ rc = out_of_core ();
goto leave;
}
p = stpcpy (p, "(8:dns-name");
@@ -658,7 +658,7 @@ create_request (ctrl_t ctrl,
buf = p = xtrymalloc (6 + strlen (numbuf) + len + 3);
if (!buf)
{
- rc = OUT_OF_CORE (errno);
+ rc = out_of_core ();
goto leave;
}
p = stpcpy (p, "(3:uri");
diff --git a/sm/delete.c b/sm/delete.c
index 0d2f1fd9d..5066a737e 100644
--- a/sm/delete.c
+++ b/sm/delete.c
@@ -38,7 +38,7 @@
/* Delete a certificate or an secret key from a key database. */
static int
-delete_one (CTRL ctrl, const char *username)
+delete_one (ctrl_t ctrl, const char *username)
{
int rc = 0;
KEYDB_SEARCH_DESC desc;
@@ -148,7 +148,7 @@ delete_one (CTRL ctrl, const char *username)
/* Delete the certificates specified by NAMES. */
int
-gpgsm_delete (CTRL ctrl, STRLIST names)
+gpgsm_delete (ctrl_t ctrl, STRLIST names)
{
int rc;
diff --git a/sm/encrypt.c b/sm/encrypt.c
index 07c2ba8ce..8876bcd0e 100644
--- a/sm/encrypt.c
+++ b/sm/encrypt.c
@@ -217,7 +217,7 @@ encrypt_dek (const DEK dek, ksba_cert_t cert, unsigned char **encval)
buf = xtrymalloc (len);
if (!buf)
{
- gpg_error_t tmperr = OUT_OF_CORE (errno);
+ gpg_error_t tmperr = out_of_core ();
gcry_sexp_release (s_ciph);
return tmperr;
}
@@ -304,7 +304,7 @@ encrypt_cb (void *cb_value, char *buffer, size_t count, size_t *nread)
recipients are take from the certificate given in recplist; if this
is NULL it will be encrypted for a default recipient */
int
-gpgsm_encrypt (CTRL ctrl, CERTLIST recplist, int data_fd, FILE *out_fp)
+gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, FILE *out_fp)
{
int rc = 0;
Base64Context b64writer = NULL;
@@ -318,7 +318,7 @@ gpgsm_encrypt (CTRL ctrl, CERTLIST recplist, int data_fd, FILE *out_fp)
DEK dek = NULL;
int recpno;
FILE *data_fp = NULL;
- CERTLIST cl;
+ certlist_t cl;
memset (&encparm, 0, sizeof encparm);
@@ -402,7 +402,7 @@ gpgsm_encrypt (CTRL ctrl, CERTLIST recplist, int data_fd, FILE *out_fp)
/* Create a session key */
dek = xtrycalloc_secure (1, sizeof *dek);
if (!dek)
- rc = OUT_OF_CORE (errno);
+ rc = out_of_core ();
else
{
dek->algoid = opt.def_cipher_algoid;
@@ -430,7 +430,7 @@ gpgsm_encrypt (CTRL ctrl, CERTLIST recplist, int data_fd, FILE *out_fp)
encparm.buffer = xtrymalloc (encparm.bufsize);
if (!encparm.buffer)
{
- rc = OUT_OF_CORE (errno);
+ rc = out_of_core ();
goto leave;
}
diff --git a/sm/export.c b/sm/export.c
index b08a017d2..e230f780e 100644
--- a/sm/export.c
+++ b/sm/export.c
@@ -129,7 +129,7 @@ insert_duptable (duptable_t *table, unsigned char *fpr, int *exists)
/* Export all certificates or just those given in NAMES. */
void
-gpgsm_export (CTRL ctrl, STRLIST names, FILE *fp)
+gpgsm_export (ctrl_t ctrl, STRLIST names, FILE *fp)
{
KEYDB_HANDLE hd = NULL;
KEYDB_SEARCH_DESC *desc = NULL;
@@ -170,7 +170,7 @@ gpgsm_export (CTRL ctrl, STRLIST names, FILE *fp)
if (!ndesc)
{
log_error ("allocating memory for export failed: %s\n",
- gpg_strerror (OUT_OF_CORE (errno)));
+ gpg_strerror (out_of_core ()));
goto leave;
}
@@ -349,7 +349,7 @@ gpgsm_p12_export (ctrl_t ctrl, const char *name, FILE *fp)
if (!desc)
{
log_error ("allocating memory for export failed: %s\n",
- gpg_strerror (OUT_OF_CORE (errno)));
+ gpg_strerror (out_of_core ()));
goto leave;
}
diff --git a/sm/gpgsm.c b/sm/gpgsm.c
index 0855a0062..aaf5c42fe 100644
--- a/sm/gpgsm.c
+++ b/sm/gpgsm.c
@@ -736,8 +736,8 @@ main ( int argc, char **argv)
char *def_digest_string = NULL;
enum cmd_and_opt_values cmd = 0;
struct server_control_s ctrl;
- CERTLIST recplist = NULL;
- CERTLIST signerlist = NULL;
+ certlist_t recplist = NULL;
+ certlist_t signerlist = NULL;
int do_not_setup_keys = 0;
@@ -830,6 +830,7 @@ main ( int argc, char **argv)
assuan_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free);
assuan_set_assuan_log_stream (log_get_stream ());
assuan_set_assuan_log_prefix (log_get_prefix (NULL));
+ assuan_set_assuan_err_source (GPG_ERR_SOURCE_DEFAULT);
keybox_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free);
diff --git a/sm/gpgsm.h b/sm/gpgsm.h
index 0d9bac560..84cfeb675 100644
--- a/sm/gpgsm.h
+++ b/sm/gpgsm.h
@@ -27,20 +27,17 @@
#endif
#define GPG_ERR_SOURCE_DEFAULT GPG_ERR_SOURCE_GPGSM
#include <gpg-error.h>
-#define map_assuan_err(a) \
- map_assuan_err_with_source (GPG_ERR_SOURCE_DEFAULT, (a))
#include <ksba.h>
#include "../common/util.h"
#include "../common/errors.h"
-#define OUT_OF_CORE(a) (gpg_error (gpg_err_code_from_errno ((a))))
-
#define MAX_DIGEST_LEN 24
-/* A large struct named "opt" to keep global flags */
-struct {
+/* A large struct named "opt" to keep global flags. */
+struct
+{
unsigned int debug; /* debug flags (DBG_foo_VALUE) */
int verbose; /* verbosity level */
int quiet; /* be as quiet as possible */
@@ -119,6 +116,7 @@ struct {
} opt;
+/* Debug values and macros. */
#define DBG_X509_VALUE 1 /* debug x.509 data reading/writing */
#define DBG_MPI_VALUE 2 /* debug mpi details */
#define DBG_CRYPTO_VALUE 4 /* debug low level crypto */
@@ -135,11 +133,14 @@ struct {
#define DBG_HASHING (opt.debug & DBG_HASHING_VALUE)
#define DBG_ASSUAN (opt.debug & DBG_ASSUAN_VALUE)
+/* Forward declaration for an object defined in server.c */
struct server_local_s;
-/* Note that the default values for this are set by
- gpgsm_init_default_ctrl() */
-struct server_control_s {
+/* Session control object. This object is passed down to most
+ functions. Note that the default values for it are set by
+ gpgsm_init_default_ctrl(). */
+struct server_control_s
+{
int no_server; /* We are not running under server control */
int status_fd; /* Only for non-server mode */
struct server_local_s *server_local;
@@ -161,20 +162,21 @@ struct server_control_s {
signer) */
int use_ocsp; /* Set to true if OCSP should be used. */
};
-typedef struct server_control_s *CTRL;
typedef struct server_control_s *ctrl_t;
-/* data structure used in base64.c */
+
+/* Data structure used in base64.c. */
typedef struct base64_context_s *Base64Context;
-struct certlist_s {
+/* An object to keep a list of certificates. */
+struct certlist_s
+{
struct certlist_s *next;
ksba_cert_t cert;
int is_encrypt_to; /* True if the certificate has been set through
the --encrypto-to option. */
};
-typedef struct certlist_s *CERTLIST;
typedef struct certlist_s *certlist_t;
/*-- gpgsm.c --*/
@@ -286,11 +288,11 @@ int gpgsm_verify (ctrl_t ctrl, int in_fd, int data_fd, FILE *out_fp);
/*-- sign.c --*/
int gpgsm_get_default_cert (ctrl_t ctrl, ksba_cert_t *r_cert);
-int gpgsm_sign (ctrl_t ctrl, CERTLIST signerlist,
+int gpgsm_sign (ctrl_t ctrl, certlist_t signerlist,
int data_fd, int detached, FILE *out_fp);
/*-- encrypt.c --*/
-int gpgsm_encrypt (ctrl_t ctrl, CERTLIST recplist, int in_fd, FILE *out_fp);
+int gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int in_fd, FILE *out_fp);
/*-- decrypt.c --*/
int gpgsm_decrypt (ctrl_t ctrl, int in_fd, FILE *out_fp);
diff --git a/sm/import.c b/sm/import.c
index b56014a1a..acb55152d 100644
--- a/sm/import.c
+++ b/sm/import.c
@@ -53,7 +53,7 @@ static gpg_error_t parse_p12 (ctrl_t ctrl, ksba_reader_t reader, FILE **retfp,
static void
-print_imported_status (CTRL ctrl, ksba_cert_t cert, int new_cert)
+print_imported_status (ctrl_t ctrl, ksba_cert_t cert, int new_cert)
{
char *fpr;
@@ -76,7 +76,7 @@ print_imported_status (CTRL ctrl, ksba_cert_t cert, int new_cert)
4 := "Error storing certificate".
*/
static void
-print_import_problem (CTRL ctrl, ksba_cert_t cert, int reason)
+print_import_problem (ctrl_t ctrl, ksba_cert_t cert, int reason)
{
char *fpr = NULL;
char buf[25];
@@ -101,7 +101,7 @@ print_import_problem (CTRL ctrl, ksba_cert_t cert, int reason)
void
-print_imported_summary (CTRL ctrl, struct stats_s *stats)
+print_imported_summary (ctrl_t ctrl, struct stats_s *stats)
{
char buf[14*25];
@@ -147,7 +147,7 @@ print_imported_summary (CTRL ctrl, struct stats_s *stats)
static void
-check_and_store (CTRL ctrl, struct stats_s *stats, ksba_cert_t cert, int depth)
+check_and_store (ctrl_t ctrl, struct stats_s *stats, ksba_cert_t cert, int depth)
{
int rc;
@@ -245,7 +245,7 @@ check_and_store (CTRL ctrl, struct stats_s *stats, ksba_cert_t cert, int depth)
static int
-import_one (CTRL ctrl, struct stats_s *stats, int in_fd)
+import_one (ctrl_t ctrl, struct stats_s *stats, int in_fd)
{
int rc;
Base64Context b64reader = NULL;
@@ -406,7 +406,7 @@ import_one (CTRL ctrl, struct stats_s *stats, int in_fd)
int
-gpgsm_import (CTRL ctrl, int in_fd)
+gpgsm_import (ctrl_t ctrl, int in_fd)
{
int rc;
struct stats_s stats;
@@ -424,7 +424,7 @@ gpgsm_import (CTRL ctrl, int in_fd)
int
-gpgsm_import_files (CTRL ctrl, int nfiles, char **files,
+gpgsm_import_files (ctrl_t ctrl, int nfiles, char **files,
int (*of)(const char *fname))
{
int rc = 0;
diff --git a/sm/keydb.c b/sm/keydb.c
index 81936cf6a..3fc7d31b9 100644
--- a/sm/keydb.c
+++ b/sm/keydb.c
@@ -1445,7 +1445,7 @@ keydb_clear_some_cert_flags (ctrl_t ctrl, STRLIST names)
if (!ndesc)
{
log_error ("allocating memory failed: %s\n",
- gpg_strerror (OUT_OF_CORE (errno)));
+ gpg_strerror (out_of_core ()));
goto leave;
}
diff --git a/sm/keylist.c b/sm/keylist.c
index 199737541..4b8f418b2 100644
--- a/sm/keylist.c
+++ b/sm/keylist.c
@@ -1327,7 +1327,7 @@ list_external_cb (void *cb_value, ksba_cert_t cert)
make sense here because it would be unwise to list external secret
keys */
static gpg_error_t
-list_external_keys (CTRL ctrl, STRLIST names, FILE *fp, int raw_mode)
+list_external_keys (ctrl_t ctrl, STRLIST names, FILE *fp, int raw_mode)
{
int rc;
struct list_external_parm_s parm;
@@ -1357,7 +1357,7 @@ list_external_keys (CTRL ctrl, STRLIST names, FILE *fp, int raw_mode)
Bit 8: Do a raw format dump.
*/
gpg_error_t
-gpgsm_list_keys (CTRL ctrl, STRLIST names, FILE *fp, unsigned int mode)
+gpgsm_list_keys (ctrl_t ctrl, STRLIST names, FILE *fp, unsigned int mode)
{
gpg_error_t err = 0;
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];
diff --git a/sm/sign.c b/sm/sign.c
index d656825e8..ae602be24 100644
--- a/sm/sign.c
+++ b/sm/sign.c
@@ -234,7 +234,7 @@ get_default_signer (ctrl_t ctrl)
other certificate up in the chain to the Root-CA to the CMS
object. */
static int
-add_certificate_list (CTRL ctrl, ksba_cms_t cms, ksba_cert_t cert)
+add_certificate_list (ctrl_t ctrl, ksba_cms_t cms, ksba_cert_t cert)
{
gpg_error_t err;
int rc = 0;
@@ -301,7 +301,7 @@ add_certificate_list (CTRL ctrl, ksba_cms_t cms, ksba_cert_t cert)
keys used to sign are taken from SIGNERLIST or the default one will
be used if the value of this argument is NULL. */
int
-gpgsm_sign (CTRL ctrl, CERTLIST signerlist,
+gpgsm_sign (ctrl_t ctrl, certlist_t signerlist,
int data_fd, int detached, FILE *out_fp)
{
int i, rc;
@@ -316,7 +316,7 @@ gpgsm_sign (CTRL ctrl, CERTLIST signerlist,
const char *algoid;
int algo;
ksba_isotime_t signed_at;
- CERTLIST cl;
+ certlist_t cl;
int release_signerlist = 0;
kh = keydb_new (0);
@@ -387,7 +387,7 @@ gpgsm_sign (CTRL ctrl, CERTLIST signerlist,
signerlist = xtrycalloc (1, sizeof *signerlist);
if (!signerlist)
{
- rc = OUT_OF_CORE (errno);
+ rc = out_of_core ();
ksba_cert_release (cert);
goto leave;
}
diff --git a/sm/verify.c b/sm/verify.c
index 4e6574078..b94f2ce5a 100644
--- a/sm/verify.c
+++ b/sm/verify.c
@@ -82,7 +82,7 @@ hash_data (int fd, gcry_md_hd_t md)
must be different than -1. With OUT_FP given and a non-detached
signature, the signed material is written to that stream. */
int
-gpgsm_verify (CTRL ctrl, int in_fd, int data_fd, FILE *out_fp)
+gpgsm_verify (ctrl_t ctrl, int in_fd, int data_fd, FILE *out_fp)
{
int i, rc;
Base64Context b64reader = NULL;