aboutsummaryrefslogtreecommitdiffstats
path: root/sm/verify.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2003-01-09 12:59:25 +0000
committerWerner Koch <[email protected]>2003-01-09 12:59:25 +0000
commitc13b76ca6a495cda6e51934a7788f48ca6f3bb0e (patch)
treed52174e8d500d7db90181bf71624d69d0c6836c5 /sm/verify.c
parent* keygen.c (keygen_set_std_prefs): Warn when setting an IDEA preference (diff)
downloadgnupg-c13b76ca6a495cda6e51934a7788f48ca6f3bb0e.tar.gz
gnupg-c13b76ca6a495cda6e51934a7788f48ca6f3bb0e.zip
Updated from latest NewPG project
Diffstat (limited to '')
-rw-r--r--sm/verify.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/sm/verify.c b/sm/verify.c
index df7c8bfe8..3461d68af 100644
--- a/sm/verify.c
+++ b/sm/verify.c
@@ -257,6 +257,7 @@ gpgsm_verify (CTRL ctrl, int in_fd, int data_fd, FILE *out_fp)
KsbaSexp serial;
char *msgdigest = NULL;
size_t msgdigestlen;
+ char *ctattr;
err = ksba_cms_get_issuer_serial (cms, signer, &issuer, &serial);
if (!signer && err == KSBA_No_Data && data_fd == -1 && is_detached)
@@ -313,6 +314,35 @@ gpgsm_verify (CTRL ctrl, int in_fd, int data_fd, FILE *out_fp)
else /* real error */
break;
+ err = ksba_cms_get_sigattr_oids (cms, signer,
+ "1.2.840.113549.1.9.3",&ctattr);
+ if (!err)
+ {
+ const char *s;
+
+ if (DBG_X509)
+ log_debug ("signer %d - content-type attribute: %s", signer, ctattr);
+ s = ksba_cms_get_content_oid (cms, 1);
+ if (!s || strcmp (ctattr, s))
+ {
+ log_error ("content-type attribute does not match "
+ "actual content-type\n");
+ ksba_free (ctattr);
+ ctattr = NULL;
+ goto next_signer;
+ }
+ ksba_free (ctattr);
+ ctattr = NULL;
+ }
+ else if (err != -1)
+ {
+ log_error ("error getting content-type attribute: %s\n",
+ ksba_strerror (err));
+ goto next_signer;
+ }
+ err = 0;
+
+
sigval = ksba_cms_get_sig_val (cms, signer);
if (!sigval)
{