diff options
Diffstat (limited to 'sm')
-rw-r--r-- | sm/ChangeLog | 14 | ||||
-rw-r--r-- | sm/base64.c | 8 | ||||
-rw-r--r-- | sm/call-agent.c | 62 | ||||
-rw-r--r-- | sm/call-dirmngr.c | 78 | ||||
-rw-r--r-- | sm/certcheck.c | 4 | ||||
-rw-r--r-- | sm/certlist.c | 12 | ||||
-rw-r--r-- | sm/certreqgen.c | 6 | ||||
-rw-r--r-- | sm/delete.c | 4 | ||||
-rw-r--r-- | sm/encrypt.c | 10 | ||||
-rw-r--r-- | sm/export.c | 6 | ||||
-rw-r--r-- | sm/gpgsm.c | 5 | ||||
-rw-r--r-- | sm/gpgsm.h | 32 | ||||
-rw-r--r-- | sm/import.c | 14 | ||||
-rw-r--r-- | sm/keydb.c | 2 | ||||
-rw-r--r-- | sm/keylist.c | 4 | ||||
-rw-r--r-- | sm/server.c | 185 | ||||
-rw-r--r-- | sm/sign.c | 8 | ||||
-rw-r--r-- | sm/verify.c | 2 |
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]; @@ -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; |