14#include <gvm/util/gpgmeutils.h>
29 nasl_perror (NULL,
"%s failed: %s/%s\n", function, gpgme_strsource (err),
30 gpgme_strerror (err));
46 gpgme_signature_t sig;
50 sig = result->signatures;
54 nasl_trace (NULL,
"examine_signatures: signature #%d:\n", sig_count);
55 nasl_trace (NULL,
"examine_signatures: summary: %d\n", sig->summary);
56 nasl_trace (NULL,
"examine_signatures: validity: %d\n", sig->validity);
57 nasl_trace (NULL,
"examine_signatures: status: %s\n",
58 gpg_strerror (sig->status));
59 nasl_trace (NULL,
"examine_signatures: timestamp: %ld\n",
61 nasl_trace (NULL,
"examine_signatures: exp_timestamp: %ld\n",
63 nasl_trace (NULL,
"examine_signatures: fpr: %s\n", sig->fpr);
66 if (sig->summary & GPGME_SIGSUM_VALID)
68 nasl_trace (NULL,
"examine_signatures: signature is valid\n");
73 nasl_trace (NULL,
"examine_signatures: signature is invalid\n");
100 int retcode = -1, sig_count = 0;
101 char *sigfilename = NULL;
103 gchar *scontent = NULL;
104 gchar *offset = NULL;
105 gchar *endpos = NULL;
106 gchar *path = g_build_filename (OPENVAS_GPG_BASE_DIR,
"gnupg", NULL);
109 gpgme_ctx_t ctx = gvm_init_gpgme_ctx_from_dir (path);
110 gpgme_data_t sig = NULL, text = NULL;
115 nasl_trace (NULL,
"gpgme context could not be initialized.\n");
120 sigfilename = g_malloc0 (strlen (filename) + 4 + 1);
121 strcpy (sigfilename, filename);
122 strcat (sigfilename,
".asc");
123 nasl_trace (NULL,
"nasl_verify_signature: loading signature file '%s'\n",
126 success = g_file_get_contents (sigfilename, &scontent, NULL, NULL);
134 offset = g_strstr_len (scontent, strlen (scontent),
"-----B");
137 nasl_trace (NULL,
"nasl_verify_signature: No signature in '%s'\n",
141 endpos = g_strstr_len (offset, -1,
"-----E");
143 siglen = strlen (offset) - strlen (endpos) + 17;
146 nasl_trace (NULL,
"nasl_verify_signature: No signature in '%s'\n",
156 err = gpgme_data_new_from_mem (&text, fcontent, flen, 1);
164 err = gpgme_data_new_from_mem (&sig, offset, siglen, 1);
166 nasl_trace (NULL,
"nasl_verify_signature: %s: %s\n", sigfilename,
167 gpgme_strerror (err));
170 err = gpgme_op_verify (ctx, sig, text, NULL);
172 "nasl_verify_signature: gpgme_op_verify "
189 offset = g_strstr_len (offset + 1, strlen (offset),
"-----B");
192 if ((endpos = g_strstr_len (offset, strlen (offset),
"-----E")))
193 siglen = (strlen (offset) - strlen (endpos) + 17);
196 nasl_trace (NULL,
"nasl_verify_signature: No signature in '%s'\n",
202 gpgme_data_release (sig);
204 gpgme_data_release (text);
212 gpgme_data_release (sig);
214 gpgme_data_release (text);
217 g_free (sigfilename);
int nasl_trace_enabled(void)
Checks if the nasl_trace_fp is set.
void nasl_trace(lex_ctxt *lexic, char *msg,...)
Prints debug message in printf fashion to nasl_trace_fp if it exists.
void nasl_perror(lex_ctxt *lexic, char *msg,...)
static int examine_signatures(gpgme_verify_result_t result, int sig_count)
Checks whether the signature verification result contains one.
int nasl_verify_signature(const char *filename, const char *fcontent, size_t flen)
static void print_gpgme_error(char *function, gpgme_error_t err)
Prints an error message for errors returned by gpgme.