9b702c2
diff -Naur opendnssec-1.4.0b1-orig/signer/src/signer/rrset.c opendnssec-1.4.0b1/signer/src/signer/rrset.c
9b702c2
--- opendnssec-1.4.0b1-orig/signer/src/signer/rrset.c	2012-08-28 10:00:54.000000000 -0400
9b702c2
+++ opendnssec-1.4.0b1/signer/src/signer/rrset.c	2012-11-10 17:16:44.250226281 -0500
9b702c2
@@ -32,6 +32,7 @@
9b702c2
  */
9b702c2
 
9b702c2
 #include "config.h"
9b702c2
+#include "shared/file.h"
9b702c2
 #include "shared/hsm.h"
9b702c2
 #include "shared/log.h"
9b702c2
 #include "shared/util.h"
9b702c2
@@ -557,6 +558,26 @@
9b702c2
 
9b702c2
 
9b702c2
 /**
9b702c2
+ * Is the RRset signed with this locator?
9b702c2
+ *
9b702c2
+ */
9b702c2
+static int
9b702c2
+rrset_siglocator(rrset_type* rrset, const char* locator)
9b702c2
+{
9b702c2
+    size_t i = 0;
9b702c2
+    if (!rrset) {
9b702c2
+        return 0;
9b702c2
+    }
9b702c2
+    for (i=0; i < rrset->rrsig_count; i++) {
9b702c2
+        if (!ods_strcmp(locator, rrset->rrsigs[i].key_locator)) {
9b702c2
+            return 1;
9b702c2
+        }
9b702c2
+    }
9b702c2
+    return 0;
9b702c2
+}
9b702c2
+
9b702c2
+
9b702c2
+/**
9b702c2
  * Transmogrify the RRset to a RRlist.
9b702c2
  *
9b702c2
  */
9b702c2
@@ -702,6 +723,9 @@
9b702c2
             continue;
9b702c2
         }
9b702c2
         /* Additional rules for signatures */
9b702c2
+        if (rrset_siglocator(rrset, zone->signconf->keys->keys[i].locator)) {
9b702c2
+            continue;
9b702c2
+        }
9b702c2
         if (rrset_sigalgo(rrset, zone->signconf->keys->keys[i].algorithm)) {
9b702c2
             continue;
9b702c2
         }