X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/36eef8ab7ec7c90e97f2371d7ca8c80d52fd3e27..b7a5a70eb8d8f312325af828b47726977f4fbb79:/keyid.c?ds=sidebyside diff --git a/keyid.c b/keyid.c index ced0c45..95b5dd4 100644 --- a/keyid.c +++ b/keyid.c @@ -4,12 +4,15 @@ * Jonathan McDowell * * Copyright 2002 Project Purple + * + * $Id: keyid.c,v 1.8 2003/11/01 19:25:15 noodles Exp $ */ #include #include "keyid.h" #include "keystructs.h" +#include "log.h" #include "md5.h" #include "sha.h" @@ -93,7 +96,7 @@ unsigned char *get_fingerprint(struct openpgp_packet *packet, memcpy(fingerprint, buff, *len); break; default: - fprintf(stderr, "Unknown key type: %d\n", + logthing(LOGTHING_ERROR, "Unknown key type: %d", packet->data[0]); } @@ -122,20 +125,25 @@ uint64_t get_packetid(struct openpgp_packet *packet) * For a type 2 or 3 key the keyid is the last 64 bits of the * public modulus n, which is stored as an MPI from offset 8 * onwards. - * - * We need to ensure it's an RSA key. */ - if (packet->data[7] == 1) { - offset = (packet->data[8] << 8) + - packet->data[9]; - offset = ((offset + 7) / 8) + 2; - - for (keyid = 0, i = 0; i < 8; i++) { - keyid <<= 8; - keyid += packet->data[offset++]; - } - } else { - fputs("Type 2 or 3 key, but not RSA.\n", stderr); + offset = (packet->data[8] << 8) + + packet->data[9]; + offset = ((offset + 7) / 8) + 2; + + for (keyid = 0, i = 0; i < 8; i++) { + keyid <<= 8; + keyid += packet->data[offset++]; + } + /* + * I thought we needed to ensure it's an RSA key, but pks + * doesn't seem to care and I've seen some type 3 keys. + * So just log a warning. + */ + if (packet->data[7] != 1) { + logthing(LOGTHING_NOTICE, + "Type 2 or 3 key, but not RSA: %llx (type %d)", + keyid, + packet->data[7]); } break; case 4: @@ -148,7 +156,7 @@ uint64_t get_packetid(struct openpgp_packet *packet) break; default: - fprintf(stderr, "Unknown key type: %d\n", + logthing(LOGTHING_ERROR, "Unknown key type: %d", packet->data[0]); }