aboutsummaryrefslogtreecommitdiffstats
path: root/g10/sig-check.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/sig-check.c')
-rw-r--r--g10/sig-check.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/g10/sig-check.c b/g10/sig-check.c
index f1e5f9b4a..a30d0efcc 100644
--- a/g10/sig-check.c
+++ b/g10/sig-check.c
@@ -30,6 +30,7 @@
#include "keydb.h"
#include "cipher.h"
#include "main.h"
+#include "status.h"
static int do_check( PKT_public_cert *pkc, PKT_signature *sig,
@@ -47,6 +48,12 @@ signature_check( PKT_signature *sig, MD_HANDLE digest )
PKT_public_cert *pkc = m_alloc_clear( sizeof *pkc );
int rc=0;
+
+ #ifndef HAVE_RSA_CIPHER
+ if( is_RSA(sig->pubkey_algo) )
+ write_status(STATUS_RSA_OR_IDEA);
+ #endif
+
if( get_pubkey( pkc, sig->keyid ) )
rc = G10ERR_NO_PUBKEY;
else
@@ -294,6 +301,13 @@ check_key_signature( KBNODE root, KBNODE node, int *is_selfsig )
KBNODE snode = find_prev_kbnode( root, node, PKT_PUBKEY_SUBCERT );
if( snode ) {
+ if( is_selfsig ) {
+ u32 keyid[2];
+
+ keyid_from_pkc( pkc, keyid );
+ if( keyid[0] == sig->keyid[0] && keyid[1] == sig->keyid[1] )
+ *is_selfsig = 1;
+ }
md = md_open( algo, 0 );
hash_public_cert( md, pkc );
hash_public_cert( md, snode->pkt->pkt.public_cert );