26 #include <gvm/util/gpgmeutils.h>
41 nasl_perror (NULL,
"%s failed: %s/%s\n",
function, gpgme_strsource (err),
42 gpgme_strerror (err));
58 gpgme_signature_t sig;
62 sig = result->signatures;
66 nasl_trace (NULL,
"examine_signatures: signature #%d:\n", sig_count);
67 nasl_trace (NULL,
"examine_signatures: summary: %d\n", sig->summary);
68 nasl_trace (NULL,
"examine_signatures: validity: %d\n", sig->validity);
69 nasl_trace (NULL,
"examine_signatures: status: %s\n",
70 gpg_strerror (sig->status));
71 nasl_trace (NULL,
"examine_signatures: timestamp: %ld\n",
73 nasl_trace (NULL,
"examine_signatures: exp_timestamp: %ld\n",
75 nasl_trace (NULL,
"examine_signatures: fpr: %s\n", sig->fpr);
78 if (sig->summary & GPGME_SIGSUM_VALID)
80 nasl_trace (NULL,
"examine_signatures: signature is valid\n");
85 nasl_trace (NULL,
"examine_signatures: signature is invalid\n");
112 int retcode = -1, sig_count = 0;
113 char *sigfilename = NULL;
115 gchar *scontent = NULL;
116 gchar *offset = NULL;
117 gchar *endpos = NULL;
118 gchar *path = g_build_filename (OPENVAS_SYSCONF_DIR,
"gnupg", NULL);
121 gpgme_ctx_t ctx = gvm_init_gpgme_ctx_from_dir (path);
122 gpgme_data_t sig = NULL, text = NULL;
127 nasl_trace (NULL,
"gpgme context could not be initialized.\n");
132 sigfilename = g_malloc0 (strlen (filename) + 4 + 1);
133 strcpy (sigfilename, filename);
134 strcat (sigfilename,
".asc");
135 nasl_trace (NULL,
"nasl_verify_signature: loading signature file '%s'\n",
138 success = g_file_get_contents (sigfilename, &scontent, NULL, NULL);
146 offset = g_strstr_len (scontent, strlen (scontent),
"-----B");
149 nasl_trace (NULL,
"nasl_verify_signature: No signature in '%s'\n",
153 endpos = g_strstr_len (offset, -1,
"-----E");
155 siglen = strlen (offset) - strlen (endpos) + 17;
158 nasl_trace (NULL,
"nasl_verify_signature: No signature in '%s'\n",
168 err = gpgme_data_new_from_mem (&text, fcontent, flen, 1);
176 err = gpgme_data_new_from_mem (&sig, offset, siglen, 1);
178 nasl_trace (NULL,
"nasl_verify_signature: %s: %s\n", sigfilename,
179 gpgme_strerror (err));
182 err = gpgme_op_verify (ctx, sig, text, NULL);
184 "nasl_verify_signature: gpgme_op_verify "
201 offset = g_strstr_len (offset + 1, strlen (offset),
"-----B");
204 if ((endpos = g_strstr_len (offset, strlen (offset),
"-----E")))
205 siglen = (strlen (offset) - strlen (endpos) + 17);
208 nasl_trace (NULL,
"nasl_verify_signature: No signature in '%s'\n",
214 gpgme_data_release (sig);
216 gpgme_data_release (text);
224 gpgme_data_release (sig);
226 gpgme_data_release (text);
229 g_free (sigfilename);