]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - keyid.c
cscvs to tla changeset 125
[onak.git] / keyid.c
diff --git a/keyid.c b/keyid.c
index 0a61c1f91c926b8f838b42aba0e510b5b2928321..95b5dd4452ce7c400557dee75e9e321629b50b7c 100644 (file)
--- a/keyid.c
+++ b/keyid.c
@@ -4,6 +4,8 @@
  * Jonathan McDowell <noodles@earth.li>
  *
  * Copyright 2002 Project Purple
  * Jonathan McDowell <noodles@earth.li>
  *
  * Copyright 2002 Project Purple
+ *
+ * $Id: keyid.c,v 1.8 2003/11/01 19:25:15 noodles Exp $
  */
 
 #include <sys/types.h>
  */
 
 #include <sys/types.h>
@@ -123,21 +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.
                 * 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 {
-                       logthing(LOGTHING_ERROR,
-                                       "Type 2 or 3 key, but not RSA.");
+               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:
                }
                break;
        case 4: