mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
Add pubkey letters e and E for ECC.
This does not mean we have any kind of ECC support now. It is merely to avoid printing a question mark for the algorithm. Trailing white space changes as usual.
This commit is contained in:
parent
fc1680abdf
commit
04b0b050ff
7 changed files with 216 additions and 199 deletions
|
@ -72,7 +72,7 @@ struct mainproc_context
|
|||
int trustletter; /* Temporary usage in list_node. */
|
||||
ulong symkeys;
|
||||
struct kidlist_item *pkenc_list; /* List of encryption packets. */
|
||||
struct
|
||||
struct
|
||||
{
|
||||
int op;
|
||||
int stop_now;
|
||||
|
@ -135,10 +135,10 @@ add_gpg_control( CTX c, PACKET *pkt )
|
|||
/* New clear text signature.
|
||||
* Process the last one and reset everything */
|
||||
release_list(c);
|
||||
}
|
||||
}
|
||||
else if ( pkt->pkt.gpg_control->control == CTRLPKT_PIPEMODE ) {
|
||||
/* Pipemode control packet */
|
||||
if ( pkt->pkt.gpg_control->datalen < 2 )
|
||||
if ( pkt->pkt.gpg_control->datalen < 2 )
|
||||
log_fatal ("invalid pipemode control packet length\n");
|
||||
if (pkt->pkt.gpg_control->data[0] == 1) {
|
||||
/* start the whole thing */
|
||||
|
@ -156,10 +156,10 @@ add_gpg_control( CTX c, PACKET *pkt )
|
|||
/* and tell the outer loop to terminate */
|
||||
c->pipemode.stop_now = 1;
|
||||
}
|
||||
else
|
||||
else
|
||||
log_fatal ("invalid pipemode control packet code\n");
|
||||
return 0; /* no need to store the packet */
|
||||
}
|
||||
}
|
||||
|
||||
if( c->list ) /* add another packet */
|
||||
add_kbnode( c->list, new_kbnode( pkt ));
|
||||
|
@ -264,14 +264,16 @@ symkey_decrypt_seskey( DEK *dek, byte *seskey, size_t slen )
|
|||
resulted in a garbage algorithm byte, but it's close enough since
|
||||
a bogus byte here will fail later. */
|
||||
if(dek->algo==CIPHER_ALGO_IDEA)
|
||||
idea_cipher_warn(0);
|
||||
{
|
||||
idea_cipher_warn(0);
|
||||
}
|
||||
|
||||
memcpy(dek->key, seskey + 1, dek->keylen);
|
||||
|
||||
/*log_hexdump( "thekey", dek->key, dek->keylen );*/
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
proc_symkey_enc( CTX c, PACKET *pkt )
|
||||
|
@ -403,7 +405,7 @@ proc_pubkey_enc( CTX c, PACKET *pkt )
|
|||
}
|
||||
else if( is_ELGAMAL(enc->pubkey_algo)
|
||||
|| enc->pubkey_algo == PUBKEY_ALGO_DSA
|
||||
|| is_RSA(enc->pubkey_algo)
|
||||
|| is_RSA(enc->pubkey_algo)
|
||||
|| (RFC2440 && enc->pubkey_algo == PUBKEY_ALGO_ELGAMAL)) {
|
||||
/* Note that we also allow type 20 Elgamal keys for decryption.
|
||||
There are still a couple of those keys in active use as a
|
||||
|
@ -464,7 +466,7 @@ print_pkenc_list( struct kidlist_item *list, int failed )
|
|||
for( ; list; list = list->next ) {
|
||||
PKT_public_key *pk;
|
||||
const char *algstr;
|
||||
|
||||
|
||||
if ( failed && !list->reason )
|
||||
continue;
|
||||
if ( !failed && list->reason )
|
||||
|
@ -680,7 +682,7 @@ proc_plaintext( CTX c, PACKET *pkt )
|
|||
|
||||
/* check that we have at least the sigclass and one hash */
|
||||
if ( datalen < 2 )
|
||||
log_fatal("invalid control packet CTRLPKT_CLEARSIGN_START\n");
|
||||
log_fatal("invalid control packet CTRLPKT_CLEARSIGN_START\n");
|
||||
/* Note that we don't set the clearsig flag for not-dash-escaped
|
||||
* documents */
|
||||
clearsig = (*data == 0x01);
|
||||
|
@ -764,7 +766,7 @@ proc_plaintext( CTX c, PACKET *pkt )
|
|||
n = new_kbnode (create_gpg_control (CTRLPKT_PLAINTEXT_MARK, NULL, 0));
|
||||
if (c->list)
|
||||
add_kbnode (c->list, n);
|
||||
else
|
||||
else
|
||||
c->list = n;
|
||||
}
|
||||
|
||||
|
@ -849,7 +851,7 @@ do_check_sig( CTX c, KBNODE node, int *is_selfsig,
|
|||
|| sig->sig_class == 0x1f
|
||||
|| sig->sig_class == 0x20
|
||||
|| sig->sig_class == 0x28
|
||||
|| sig->sig_class == 0x30 ) {
|
||||
|| sig->sig_class == 0x30 ) {
|
||||
if( c->list->pkt->pkttype == PKT_PUBLIC_KEY
|
||||
|| c->list->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
|
||||
return check_key_signature( c->list, node, is_selfsig );
|
||||
|
@ -1102,7 +1104,7 @@ list_node( CTX c, KBNODE node )
|
|||
switch( (rc2=do_check_sig( c, node, &is_selfsig, NULL, NULL )) ) {
|
||||
case 0: sigrc = '!'; break;
|
||||
case G10ERR_BAD_SIGN: sigrc = '-'; break;
|
||||
case G10ERR_NO_PUBKEY:
|
||||
case G10ERR_NO_PUBKEY:
|
||||
case G10ERR_UNU_PUBKEY: sigrc = '?'; break;
|
||||
default: sigrc = '%'; break;
|
||||
}
|
||||
|
@ -1199,7 +1201,7 @@ proc_signature_packets( void *anchor, IOBUF a,
|
|||
messages, send a NODATA status back and return an error code.
|
||||
Using log_error is required because verify_files does not check
|
||||
error codes for each file but we want to terminate the process
|
||||
with an error. */
|
||||
with an error. */
|
||||
if (!rc && !c->any_sig_seen)
|
||||
{
|
||||
write_status_text (STATUS_NODATA, "4");
|
||||
|
@ -1334,7 +1336,7 @@ do_proc_packets( CTX c, IOBUF a )
|
|||
* packet and not to reuse the current one ... It works right
|
||||
* when there is a compression packet inbetween which adds just
|
||||
* an extra layer.
|
||||
* Hmmm: Rewrite this whole module here??
|
||||
* Hmmm: Rewrite this whole module here??
|
||||
*/
|
||||
if( pkt->pkttype != PKT_SIGNATURE && pkt->pkttype != PKT_MDC )
|
||||
c->have_data = pkt->pkttype == PKT_PLAINTEXT;
|
||||
|
@ -1348,8 +1350,8 @@ do_proc_packets( CTX c, IOBUF a )
|
|||
else
|
||||
free_packet(pkt);
|
||||
if ( c->pipemode.stop_now ) {
|
||||
/* we won't get an EOF in pipemode, so we have to
|
||||
* break the loop here */
|
||||
/* we won't get an EOF in pipemode, so we have to
|
||||
* break the loop here */
|
||||
rc = -1;
|
||||
break;
|
||||
}
|
||||
|
@ -1459,7 +1461,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
O{1,n} P S{1,n} -- standard OpenPGP signature.
|
||||
C P S{1,n} -- cleartext signature.
|
||||
|
||||
|
||||
|
||||
O = One-Pass Signature packet.
|
||||
S = Signature packet.
|
||||
P = OpenPGP Message packet (Encrypted | Compressed | Literal)
|
||||
|
@ -1471,7 +1473,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
C = Marker packet for cleartext signatures.
|
||||
|
||||
We reject all other messages.
|
||||
|
||||
|
||||
Actually we are calling this too often, i.e. for verification of
|
||||
each message but better have some duplicate work than to silently
|
||||
introduce a bug here.
|
||||
|
@ -1485,7 +1487,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
|
||||
n = c->list;
|
||||
assert (n);
|
||||
if ( n->pkt->pkttype == PKT_SIGNATURE )
|
||||
if ( n->pkt->pkttype == PKT_SIGNATURE )
|
||||
{
|
||||
/* This is either "S{1,n}" case (detached signature) or
|
||||
"S{1,n} P" (old style PGP2 signature). */
|
||||
|
@ -1504,7 +1506,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
else
|
||||
goto ambiguous;
|
||||
}
|
||||
else if (n->pkt->pkttype == PKT_ONEPASS_SIG)
|
||||
else if (n->pkt->pkttype == PKT_ONEPASS_SIG)
|
||||
{
|
||||
/* This is the "O{1,n} P S{1,n}" case (standard signature). */
|
||||
for (n_onepass=1, n = n->next;
|
||||
|
@ -1552,7 +1554,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
if (n || !n_sig)
|
||||
goto ambiguous;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
ambiguous:
|
||||
log_error(_("can't handle this ambiguous signature data\n"));
|
||||
|
@ -1621,19 +1623,19 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
|
||||
/* If the preferred keyserver thing above didn't work, our second
|
||||
try is to use the URI from a DNS PKA record. */
|
||||
if ( rc == G10ERR_NO_PUBKEY
|
||||
if ( rc == G10ERR_NO_PUBKEY
|
||||
&& opt.keyserver_options.options&KEYSERVER_AUTO_KEY_RETRIEVE
|
||||
&& opt.keyserver_options.options&KEYSERVER_HONOR_PKA_RECORD)
|
||||
{
|
||||
const char *uri = pka_uri_from_sig (sig);
|
||||
|
||||
|
||||
if (uri)
|
||||
{
|
||||
/* FIXME: We might want to locate the key using the
|
||||
fingerprint instead of the keyid. */
|
||||
int res;
|
||||
struct keyserver_spec *spec;
|
||||
|
||||
|
||||
spec = parse_keyserver_uri (uri, 1, NULL, 0);
|
||||
if (spec)
|
||||
{
|
||||
|
@ -1717,7 +1719,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
keyid_str[17] = 0; /* cut off the "[uncertain]" part */
|
||||
write_status_text_and_buffer (statno, keyid_str,
|
||||
un->pkt->pkt.user_id->name,
|
||||
un->pkt->pkt.user_id->len,
|
||||
un->pkt->pkt.user_id->len,
|
||||
-1 );
|
||||
|
||||
p=utf8_to_native(un->pkt->pkt.user_id->name,
|
||||
|
@ -1762,7 +1764,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
|
||||
write_status_text_and_buffer (statno, keyid_str,
|
||||
un? un->pkt->pkt.user_id->name:"[?]",
|
||||
un? un->pkt->pkt.user_id->len:3,
|
||||
un? un->pkt->pkt.user_id->len:3,
|
||||
-1 );
|
||||
|
||||
if(un)
|
||||
|
@ -1785,7 +1787,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
fputs("\n", log_stream() );
|
||||
}
|
||||
|
||||
/* If we have a good signature and already printed
|
||||
/* If we have a good signature and already printed
|
||||
* the primary user ID, print all the other user IDs */
|
||||
if ( count && !rc
|
||||
&& !(opt.verify_options&VERIFY_SHOW_PRIMARY_UID_ONLY) ) {
|
||||
|
@ -1882,7 +1884,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
|||
bufp = bufp + strlen (bufp);
|
||||
if (!vpk->is_primary) {
|
||||
u32 akid[2];
|
||||
|
||||
|
||||
akid[0] = vpk->main_keyid[0];
|
||||
akid[1] = vpk->main_keyid[1];
|
||||
free_public_key (vpk);
|
||||
|
@ -2030,7 +2032,7 @@ proc_tree( CTX c, KBNODE node )
|
|||
log_error (_("not a detached signature\n") );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
for( n1 = node; (n1 = find_next_kbnode(n1, PKT_SIGNATURE )); )
|
||||
check_sig_and_print( c, n1 );
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue