mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
gpg: Unfinished support for v5 signatures.
* g10/parse-packet.c (parse_signature): Allow for v5 signatures. * g10/sig-check.c (check_signature_end_simple): Support the 64bit v5 byte count. * g10/sign.c (hash_sigversion_to_magic): Ditto. (write_signature_packets): Request v5 sig for v5 keys. Remove useless condition. (make_keysig_packet): Request v5 sig for v5 keys. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
3b88bceb4d
commit
64a1e86fc0
4 changed files with 54 additions and 40 deletions
|
@ -1932,7 +1932,7 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
|
|||
{
|
||||
int md5_len = 0;
|
||||
unsigned n;
|
||||
int is_v4 = 0;
|
||||
int is_v4or5 = 0;
|
||||
int rc = 0;
|
||||
int i, ndata;
|
||||
|
||||
|
@ -1945,8 +1945,8 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
|
|||
}
|
||||
sig->version = iobuf_get_noeof (inp);
|
||||
pktlen--;
|
||||
if (sig->version == 4)
|
||||
is_v4 = 1;
|
||||
if (sig->version == 4 || sig->version == 5)
|
||||
is_v4or5 = 1;
|
||||
else if (sig->version != 2 && sig->version != 3)
|
||||
{
|
||||
log_error ("packet(%d) with unknown version %d\n",
|
||||
|
@ -1957,7 +1957,7 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
|
|||
goto leave;
|
||||
}
|
||||
|
||||
if (!is_v4)
|
||||
if (!is_v4or5)
|
||||
{
|
||||
if (pktlen == 0)
|
||||
goto underflow;
|
||||
|
@ -1968,7 +1968,7 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
|
|||
goto underflow;
|
||||
sig->sig_class = iobuf_get_noeof (inp);
|
||||
pktlen--;
|
||||
if (!is_v4)
|
||||
if (!is_v4or5)
|
||||
{
|
||||
if (pktlen < 12)
|
||||
goto underflow;
|
||||
|
@ -1987,7 +1987,7 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
|
|||
pktlen--;
|
||||
sig->flags.exportable = 1;
|
||||
sig->flags.revocable = 1;
|
||||
if (is_v4) /* Read subpackets. */
|
||||
if (is_v4or5) /* Read subpackets. */
|
||||
{
|
||||
if (pktlen < 2)
|
||||
goto underflow;
|
||||
|
@ -2058,7 +2058,7 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
|
|||
sig->digest_start[1] = iobuf_get_noeof (inp);
|
||||
pktlen--;
|
||||
|
||||
if (is_v4 && sig->pubkey_algo) /* Extract required information. */
|
||||
if (is_v4or5 && sig->pubkey_algo) /* Extract required information. */
|
||||
{
|
||||
const byte *p;
|
||||
size_t len;
|
||||
|
@ -2159,7 +2159,7 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
|
|||
(ulong) sig->keyid[0], (ulong) sig->keyid[1],
|
||||
sig->version, (ulong) sig->timestamp, md5_len, sig->sig_class,
|
||||
sig->digest_algo, sig->digest_start[0], sig->digest_start[1]);
|
||||
if (is_v4)
|
||||
if (is_v4or5)
|
||||
{
|
||||
parse_sig_subpkt (sig->hashed, SIGSUBPKT_LIST_HASHED, NULL);
|
||||
parse_sig_subpkt (sig->unhashed, SIGSUBPKT_LIST_UNHASHED, NULL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue