diff options
| author | Werner Koch <[email protected]> | 1998-04-02 10:30:03 +0000 |
|---|---|---|
| committer | Werner Koch <[email protected]> | 1998-04-02 10:30:03 +0000 |
| commit | 303b1084d51dd1f9d3e614497f180a66744f5185 (patch) | |
| tree | 3e482ba03967ff3f324184e19ecc91016ce4b939 /g10/sig-check.c | |
| parent | some cleanups (diff) | |
| download | gnupg-303b1084d51dd1f9d3e614497f180a66744f5185.tar.gz gnupg-303b1084d51dd1f9d3e614497f180a66744f5185.zip | |
release 0.2.14
Diffstat (limited to 'g10/sig-check.c')
| -rw-r--r-- | g10/sig-check.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/g10/sig-check.c b/g10/sig-check.c index 27e166ace..2e0159348 100644 --- a/g10/sig-check.c +++ b/g10/sig-check.c @@ -251,7 +251,6 @@ do_check( PKT_public_cert *pkc, PKT_signature *sig, MD_HANDLE digest ) int check_key_signature( KBNODE root, KBNODE node, int *is_selfsig ) { - KBNODE unode; MD_HANDLE md; PKT_public_cert *pkc; PKT_signature *sig; @@ -283,8 +282,23 @@ check_key_signature( KBNODE root, KBNODE node, int *is_selfsig ) rc = do_check( pkc, sig, md ); md_close(md); } + else if( sig->sig_class == 0x18 ) { + KBNODE snode = find_prev_kbnode( root, node, PKT_PUBKEY_SUBCERT ); + + if( snode ) { + md = md_open( algo, 0 ); + hash_public_cert( md, pkc ); + hash_public_cert( md, snode->pkt->pkt.public_cert ); + rc = do_check( pkc, sig, md ); + md_close(md); + } + else { + log_error("no subkey for key signature packet\n"); + rc = G10ERR_SIG_CLASS; + } + } else { - unode = find_prev_kbnode( root, node, PKT_USER_ID ); + KBNODE unode = find_prev_kbnode( root, node, PKT_USER_ID ); if( unode ) { PKT_user_id *uid = unode->pkt->pkt.user_id; |
