]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
pullup:
authorAndreas Gustafsson <source@isc.org>
Tue, 10 Apr 2001 01:10:26 +0000 (01:10 +0000)
committerAndreas Gustafsson <source@isc.org>
Tue, 10 Apr 2001 01:10:26 +0000 (01:10 +0000)
 802.   [bug]           DNSSEC key tags were computed incorrectly in almost
                        all cases. [RT #1146]

17 files changed:
CHANGES
bin/tests/dst/Kdh.+002+18088.key
bin/tests/dst/Kdh.+002+18088.private
bin/tests/dst/Kdh.+002+48443.key
bin/tests/dst/Kdh.+002+48443.private
bin/tests/dst/Ktest.+001+00000.key [deleted file]
bin/tests/dst/Ktest.+003+00000.key [deleted file]
bin/tests/dst/Ktest.+003+06204.key
bin/tests/dst/Makefile.in
bin/tests/dst/dst_2_data
bin/tests/dst/dst_test.c
bin/tests/dst/t_dst.c
lib/dns/sec/dst/dst_api.c
lib/dns/sec/dst/hmac_link.c
lib/dns/sec/dst/openssl_link.c
lib/dns/sec/dst/openssldh_link.c
lib/dns/sec/dst/opensslrsa_link.c

diff --git a/CHANGES b/CHANGES
index 7564282305d1650d1f8ed0d9b15f5936218204ef..0a24f7cb12ab49a649a4be663bad88fe88ddb70b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,9 @@
                        situations.  This would be most common on systems
                        with user-space threads. [RT #1131]
 
+ 802.  [bug]           DNSSEC key tags were computed incorrectly in almost
+                       all cases. [RT #1146]
+
  800.  [bug]           dnssec-signzone produced incorrect statistics for
                        large zones. [RT #1133]
 
index 09b4cf56aa06a1d2c134bbbae94ffe2ccefb0d87..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-dh. IN KEY 0 2 2 AAEBAAAAYIHI/wjtOagNga9GILSoS02IVelgLilPE/TfhtvShsiDAXqb IfxQcj2JkuOnNLs5ttb2WZXWl5/jsSjIxHMwMF2XY4gwt/lwHBf/vgYH r7aIxnKXov1jk9rymTLHGKIOtg==
index a2245bfa34da269a0ae07236486dbdd8a7a619e2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,6 +0,0 @@
-Private-key-format: v1.2
-Algorithm: 2 (DH)
-Prime(p): ///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxObIlFKCHmONATd75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjo2IP//////////
-Generator(g): Ag==
-Private_value(x): bpdsGQ1jbV3f2CGN/0Pk5KM1MlkFmMryPO1J1zoGn585fRmc9Ygw6l/HKmi2ViiDNorvd9/eV9uyYO6lYZC82R3D7rST1mAqCwbg/8gNE5dXBRbRIIq3qIl6GUYYs8mK
-Public_value(y): gcj/CO05qA2Br0YgtKhLTYhV6WAuKU8T9N+G29KGyIMBepsh/FByPYmS46c0uzm21vZZldaXn+OxKMjEczAwXZdjiDC3+XAcF/++BgevtojGcpei/WOT2vKZMscYog62
index 98388295efa7f660df53e546eb61ca233e3813c8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-dh. IN KEY 0 2 2 AAEBAAAAYOuaKjyMXYame2F6/ZFdEmXv0a2edB+69PEZgrExA6SJlivn 4KqAsfBHr/+0BCb+7nfWeMDSh2BXnSzWkXF1wMaCHMuz9EleG1gKFKeV Q9gKli88Cb8/jbovWChrGBNp2w==
index e191235c89aef0e8043bc78769a90380dcd13e78..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,6 +0,0 @@
-Private-key-format: v1.2
-Algorithm: 2 (DH)
-Prime(p): ///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxObIlFKCHmONATd75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjo2IP//////////
-Generator(g): Ag==
-Private_value(x): WJG0moh+QoZV+DYhqW7Z6O6TYpYGtSlN0Ym6JV6VRnzeH69OqMUFivqZorj3a3ofR/4zogNVyy5KLLj2NFTaLGP4Hcvt7uETJik6HrjLMhGf40QPXYgVK57Im0rv88Ca
-Public_value(y): 65oqPIxdhqZ7YXr9kV0SZe/RrZ50H7r08RmCsTEDpImWK+fgqoCx8Eev/7QEJv7ud9Z4wNKHYFedLNaRcXXAxoIcy7P0SV4bWAoUp5VD2AqWLzwJvz+Nui9YKGsYE2nb
diff --git a/bin/tests/dst/Ktest.+001+00000.key b/bin/tests/dst/Ktest.+001+00000.key
deleted file mode 100644 (file)
index 7a5ec2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-test. IN KEY 49152 2 1
diff --git a/bin/tests/dst/Ktest.+003+00000.key b/bin/tests/dst/Ktest.+003+00000.key
deleted file mode 100644 (file)
index 18ab147..0000000
+++ /dev/null
@@ -1 +0,0 @@
-test. IN KEY 49152 2 3
index 44ad296d10b51198bb3a7d6368b68cd7aea32d5d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-test. IN KEY 16641 3 3 ANp1//lqDlEfTavcFI+cyudNfgEz73V/K7fSDvkA0eDYcGg/kSvEjAEO/oLWCERltkuC55ZcM/mSv17WF1d/wR6kww/pLI9eXwkjftAYqs5sNxk+mbEGl6zwve9wq5z7IoTY5/J4l7XLCKftg/wGvrzXQhggIkRvEh3myhxd+ouILcpfvTIthWlTKiH59tSJpmgmiSMTE7nDYaf10iVRWN6DMSprgejiH05/fpmyZAt44tyAh4m1wXS5u4tam1PXDJYJozn7EfQ8e2weIv1yC+t6PHSx
index 5e22714fe6782950276f0271997b75214ea51c22..577ca6da654e4ca1fda159051ac2b9a4fba6882c 100644 (file)
@@ -13,7 +13,7 @@
 # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: Makefile.in,v 1.26.4.1 2001/01/09 22:34:08 bwelling Exp $
+# $Id: Makefile.in,v 1.26.4.2 2001/04/10 01:10:16 gson Exp $
 
 srcdir =       @srcdir@
 VPATH =                @srcdir@
@@ -51,7 +51,7 @@ t_dst: t_dst.@O@ ${DEPLIBS} ${TLIB}
        ${LIBTOOL} ${CC} -o $@ t_dst.@O@  ${TLIB} ${LIBS}
 
 test: t_dst
-       ../genrandom 50 randomfile
+       ../genrandom 100 randomfile
        -@ ./t_dst -b @srcdir@ -q 1800 -a
 
 clean distclean::
index aa0b9ec85221b52e4692f80e0c6aaea9a63e2987..a3030651b32b8f962297563a23bc57740363f814 100644 (file)
@@ -4,13 +4,13 @@
 # format:
 #      datafile, sigpath, keyname, keyid, alg, exp_result
 #
-t2_data_1      t2_dsasig       test.   6204    DST_ALG_DSA     ISC_R_SUCCESS
+t2_data_1      t2_dsasig       test.   23616   DST_ALG_DSA     ISC_R_SUCCESS
 t2_data_1      t2_rsasig       test.   54622   DST_ALG_RSAMD5  ISC_R_SUCCESS
 # wrong sig
 t2_data_1      t2_dsasig       test.   54622   DST_ALG_RSAMD5  !ISC_R_SUCCESS
 # wrong key
 #t2_data_1     t2_dsasig       test.   54622   DST_ALG_DSA     !ISC_R_SUCCESS
 # wrong alg
-#t2_data_1     t2_dsasig       test.   6204    DST_ALG_RSAMD5  !ISC_R_SUCCESS
+#t2_data_1     t2_dsasig       test.   23616   DST_ALG_RSAMD5  !ISC_R_SUCCESS
 # wrong data
-t2_data_2      t2_dsasig       test.   6204    DST_ALG_DSA     !ISC_R_SUCCESS
+t2_data_2      t2_dsasig       test.   23616   DST_ALG_DSA     !ISC_R_SUCCESS
index e83ca5a2a3c4eb25cb0aced075e5093ba946e45b..2c04f60577bac4b2af52c66e296ab0ba307233cc 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dst_test.c,v 1.35.4.1 2001/01/09 22:34:09 bwelling Exp $ */
+/* $Id: dst_test.c,v 1.35.4.2 2001/04/10 01:10:19 gson Exp $ */
 
 #include <config.h>
 
@@ -253,17 +253,17 @@ main(void) {
        isc_buffer_init(&b, "test.", 5);
        isc_buffer_add(&b, 5);
        dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
-       io(name, 6204, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
+       io(name, 23616, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
        io(name, 54622, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
           mctx);
 
-       io(name, 0, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
-       io(name, 0, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
+       io(name, 49667, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
+       io(name, 2, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
 
        isc_buffer_init(&b, "dh.", 3);
        isc_buffer_add(&b, 3);
        dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
-       dh(name, 18088, name, 48443, mctx);
+       dh(name, 18602, name, 48957, mctx);
 
        generate(DST_ALG_RSAMD5, mctx);
        generate(DST_ALG_DH, mctx);
index f98bd49b05a1342fdf8d655b28e9f781f90ba9bc..d739f3acfabb69eb710ac693a6e5bf19b881f126 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: t_dst.c,v 1.42.4.1 2001/01/09 22:34:10 bwelling Exp $ */
+/* $Id: t_dst.c,v 1.42.4.2 2001/04/10 01:10:20 gson Exp $ */
 
 #include <config.h>
 
@@ -395,24 +395,24 @@ t1(void) {
        isc_buffer_init(&b, "test.", 5);
        isc_buffer_add(&b, 5);
        dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
-       io(name, 6204, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
+       io(name, 23616, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
                        mctx, ISC_R_SUCCESS, &nfails, &nprobs);
        t_info("testing use of stored keys [2]\n");
        io(name, 54622, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
                        mctx, ISC_R_SUCCESS, &nfails, &nprobs);
 
        t_info("testing use of stored keys [3]\n");
-       io(name, 0, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
+       io(name, 49667, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
                        mctx, DST_R_NULLKEY, &nfails, &nprobs);
        t_info("testing use of stored keys [4]\n");
-       io(name, 0, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
+       io(name, 2, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
                        mctx, DST_R_NULLKEY, &nfails, &nprobs);
 
        isc_buffer_init(&b, "dh.", 3);
        isc_buffer_add(&b, 3);
        dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
 
-       dh(name, 18088, name, 48443, mctx, ISC_R_SUCCESS, &nfails, &nprobs);
+       dh(name, 18602, name, 48957, mctx, ISC_R_SUCCESS, &nfails, &nprobs);
 
        t_info("testing use of generated keys\n");
        generate(DST_ALG_RSAMD5, mctx, 512, &nfails);
index 5013819119738a5dec21d49345c05ccbb0f8ece9..a3a67871cbd5e5a93a6d1b10b7ac4b5544ea5457 100644 (file)
@@ -19,7 +19,7 @@
 
 /*
  * Principal Author: Brian Wellington
- * $Id: dst_api.c,v 1.67.2.1 2001/01/09 22:48:18 bwelling Exp $
+ * $Id: dst_api.c,v 1.67.2.2 2001/04/10 01:10:21 gson Exp $
  */
 
 #include <config.h>
@@ -83,6 +83,15 @@ static isc_result_t  buildfilename(dns_name_t *name,
                                      const unsigned int type,
                                      const char *directory,
                                      isc_buffer_t *out);
+static isc_result_t    computeid(dst_key_t *key);
+static isc_result_t    frombuffer(dns_name_t *name,
+                                  const unsigned int alg,
+                                  const unsigned int flags,
+                                  const unsigned int protocol,
+                                  dns_rdataclass_t rdclass,
+                                  isc_buffer_t *source,
+                                  isc_mem_t *mctx,
+                                  dst_key_t **keyp);
 
 #define RETERR(x) do { \
        result = (x); \
@@ -329,13 +338,20 @@ dst_key_fromfile(dns_name_t *name, const isc_uint16_t id,
        if (result != ISC_R_SUCCESS)
                return (result);
 
+       result = computeid(key);
+       if (result != ISC_R_SUCCESS) {
+               dst_key_free(&key);
+               return (result);
+       }
+
        if (!dns_name_equal(name, key->key_name) ||
            id != key->key_id ||
            alg != key->key_alg)
        {
                dst_key_free(&key);
-               return (DST_R_INVALIDPUBLICKEY);
+               return (DST_R_INVALIDPRIVATEKEY);
        }
+
        *keyp = key;
        return (ISC_R_SUCCESS);
 }
@@ -361,6 +377,12 @@ dst_key_fromnamedfile(const char *filename, const int type, isc_mem_t *mctx,
        if (type == DST_TYPE_PUBLIC ||
            (pubkey->key_flags & DNS_KEYFLAG_TYPEMASK) == DNS_KEYTYPE_NOKEY)
        {
+               result = computeid(pubkey);
+               if (result != ISC_R_SUCCESS) {
+                       dst_key_free(&pubkey);
+                       return (result);
+               }
+
                *keyp = pubkey;
                return (ISC_R_SUCCESS);
        }
@@ -385,6 +407,17 @@ dst_key_fromnamedfile(const char *filename, const int type, isc_mem_t *mctx,
                return (result);
        }
 
+       result = computeid(key);
+       if (result != ISC_R_SUCCESS) {
+               dst_key_free(&key);
+               return (result);
+       }
+
+       if (id != key->key_id) {
+               dst_key_free(&key);
+               return (DST_R_INVALIDPRIVATEKEY);
+       }
+
        *keyp = key;
        return (ISC_R_SUCCESS);
 }
@@ -427,12 +460,14 @@ dst_key_fromdns(dns_name_t *name, dns_rdataclass_t rdclass,
 {
        isc_uint8_t alg, proto;
        isc_uint32_t flags, extflags;
+       dst_key_t *key = NULL;
+       dns_keytag_t id;
+       isc_region_t r;
+       isc_result_t result;
 
-       REQUIRE(dst_initialized == ISC_TRUE);
-       REQUIRE(dns_name_isabsolute(name));
-       REQUIRE(source != NULL);
-       REQUIRE(mctx != NULL);
-       REQUIRE(keyp != NULL && *keyp == NULL);
+       REQUIRE(dst_initialized);
+
+       isc_buffer_remainingregion(source, &r);
 
        if (isc_buffer_remaininglength(source) < 4)
                return (DST_R_INVALIDPUBLICKEY);
@@ -443,6 +478,8 @@ dst_key_fromdns(dns_name_t *name, dns_rdataclass_t rdclass,
        if (!dst_algorithm_supported(alg))
                return (DST_R_UNSUPPORTEDALG);
 
+       id = dst_region_computeid(&r, alg);
+
        if (flags & DNS_KEYFLAG_EXTENDED) {
                if (isc_buffer_remaininglength(source) < 2)
                        return (DST_R_INVALIDPUBLICKEY);
@@ -450,8 +487,14 @@ dst_key_fromdns(dns_name_t *name, dns_rdataclass_t rdclass,
                flags |= (extflags << 16);
        }
 
-       return (dst_key_frombuffer(name, alg, flags, proto, rdclass,
-                                  source, mctx, keyp));
+       result = frombuffer(name, alg, flags, proto, rdclass, source,
+                           mctx, &key);
+       if (result != ISC_R_SUCCESS)
+               return (result);
+       key->key_id = id;
+
+       *keyp = key;
+       return (ISC_R_SUCCESS);
 }
 
 isc_result_t
@@ -460,31 +503,23 @@ dst_key_frombuffer(dns_name_t *name, const unsigned int alg,
                   dns_rdataclass_t rdclass,
                   isc_buffer_t *source, isc_mem_t *mctx, dst_key_t **keyp)
 {
-       dst_key_t *key;
-       isc_result_t ret;
+       dst_key_t *key = NULL;
+       isc_result_t result;
 
-       REQUIRE(dst_initialized == ISC_TRUE);
-       REQUIRE(dns_name_isabsolute(name));
-       REQUIRE(source != NULL);
-       REQUIRE(mctx != NULL);
-       REQUIRE(keyp != NULL && *keyp == NULL);
+       REQUIRE(dst_initialized);
 
-       if (dst_algorithm_supported(alg) == ISC_FALSE)
+       if (!dst_algorithm_supported(alg))
                return (DST_R_UNSUPPORTEDALG);
 
-       key = get_key_struct(name, alg, flags, protocol, 0, rdclass, mctx);
-       if (key == NULL)
-               return (ISC_R_NOMEMORY);
-
-       if (key->func->fromdns == NULL) {
-               dst_key_free(&key);
-               return (DST_R_UNSUPPORTEDALG);
-       }
+       result = frombuffer(name, alg, flags, protocol, rdclass, source,
+                           mctx, &key);
+       if (result != ISC_R_SUCCESS)
+               return (result);
 
-       ret = key->func->fromdns(key, source);
-       if (ret != ISC_R_SUCCESS) {
+       result = computeid(key);
+       if (result != ISC_R_SUCCESS) {
                dst_key_free(&key);
-               return (ret);
+               return (result);
        }
 
        *keyp = key;
@@ -563,6 +598,12 @@ dst_key_generate(dns_name_t *name, const unsigned int alg,
                return (ret);
        }
 
+       ret = computeid(key);
+       if (ret != ISC_R_SUCCESS) {
+               dst_key_free(&key);
+               return (ret);
+       }
+
        *keyp = key;
        return (ISC_R_SUCCESS);
 }
@@ -768,9 +809,7 @@ dst_region_computeid(const isc_region_t *source, const unsigned int alg) {
        int size;
 
        REQUIRE(source != NULL);
-
-       if (source->length < 4)
-               return (0);
+       REQUIRE(source->length >= 4);
 
        p = source->base;
        size = source->length;
@@ -1055,6 +1094,57 @@ buildfilename(dns_name_t *name, const unsigned int id,
        return (ISC_R_SUCCESS);
 }
 
+static isc_result_t
+computeid(dst_key_t *key) {
+       isc_buffer_t dnsbuf;
+       unsigned char dns_array[DST_KEY_MAXSIZE];
+       isc_region_t r;
+       isc_result_t ret;
+
+       isc_buffer_init(&dnsbuf, dns_array, sizeof(dns_array));
+       ret = dst_key_todns(key, &dnsbuf);
+       if (ret != ISC_R_SUCCESS) {
+               dst_key_free(&key);
+               return (ret);
+       }
+
+       isc_buffer_usedregion(&dnsbuf, &r);
+       key->key_id = dst_region_computeid(&r, key->key_alg);
+       return (ISC_R_SUCCESS);
+}
+
+isc_result_t
+frombuffer(dns_name_t *name, const unsigned int alg, const unsigned int flags,
+          const unsigned int protocol, dns_rdataclass_t rdclass,
+          isc_buffer_t *source, isc_mem_t *mctx, dst_key_t **keyp)
+{
+       dst_key_t *key;
+       isc_result_t ret;
+
+       REQUIRE(dns_name_isabsolute(name));
+       REQUIRE(source != NULL);
+       REQUIRE(mctx != NULL);
+       REQUIRE(keyp != NULL && *keyp == NULL);
+
+       key = get_key_struct(name, alg, flags, protocol, 0, rdclass, mctx);
+       if (key == NULL)
+               return (ISC_R_NOMEMORY);
+
+       if (key->func->fromdns == NULL) {
+               dst_key_free(&key);
+               return (DST_R_UNSUPPORTEDALG);
+       }
+
+       ret = key->func->fromdns(key, source);
+       if (ret != ISC_R_SUCCESS) {
+               dst_key_free(&key);
+               return (ret);
+       }
+
+       *keyp = key;
+       return (ISC_R_SUCCESS);
+}
+
 void *
 dst__mem_alloc(size_t size) {
        INSIST(dst_memory_pool != NULL);
index 85b3895eb38b8510ba6971708eb586268794d0c1..e0f2a06e4e2b0718d3c12546a0587a26e7e1653b 100644 (file)
@@ -19,7 +19,7 @@
 
 /*
  * Principal Author: Brian Wellington
- * $Id: hmac_link.c,v 1.45.4.1 2001/01/09 22:48:27 bwelling Exp $
+ * $Id: hmac_link.c,v 1.45.4.2 2001/04/10 01:10:22 gson Exp $
  */
 
 #include <config.h>
@@ -210,9 +210,6 @@ hmacmd5_fromdns(dst_key_t *key, isc_buffer_t *data) {
                keylen = r.length;
        }
 
-       r.base = hkey->key;
-       r.length = keylen;
-       key->key_id = dst_region_computeid(&r, key->key_alg);
        key->key_size = keylen * 8;
        key->opaque = hkey;
 
index 7a15b1ca82425e7392c00a460cc2b0ac6ddf4f8f..4290c801a768ec7beea639b421d7803d74c1fe2b 100644 (file)
@@ -19,7 +19,7 @@
 
 /*
  * Principal Author: Brian Wellington
- * $Id: openssl_link.c,v 1.39.4.1 2001/01/09 22:48:28 bwelling Exp $
+ * $Id: openssl_link.c,v 1.39.4.2 2001/04/10 01:10:25 gson Exp $
  */
 #if defined(OPENSSL)
 
@@ -180,11 +180,8 @@ openssldsa_compare(const dst_key_t *key1, const dst_key_t *key2) {
 static isc_result_t
 openssldsa_generate(dst_key_t *key, int unused) {
        DSA *dsa;
-       unsigned char dns_array[DST_KEY_MAXSIZE];
        unsigned char rand_array[ISC_SHA1_DIGESTLENGTH];
-       isc_buffer_t dns;
        isc_result_t result;
-       isc_region_t r;
 
        UNUSED(unused);
 
@@ -208,15 +205,6 @@ openssldsa_generate(dst_key_t *key, int unused) {
 
        key->opaque = dsa;
 
-       isc_buffer_init(&dns, dns_array, sizeof(dns_array));
-       result = openssldsa_todns(key, &dns);
-       if (result != ISC_R_SUCCESS) {
-               DSA_free(dsa);
-               return (result);
-       }
-       isc_buffer_usedregion(&dns, &r);
-       key->key_id = dst_region_computeid(&r, key->key_alg);
-
        return (ISC_R_SUCCESS);
 }
 
@@ -313,9 +301,6 @@ openssldsa_fromdns(dst_key_t *key, isc_buffer_t *data) {
        dsa->pub_key = BN_bin2bn(r.base, p_bytes, NULL);
        r.base += p_bytes;
 
-       isc_buffer_remainingregion(data, &r);
-       r.length = 1 + ISC_SHA1_DIGESTLENGTH + 3 * p_bytes;
-       key->key_id = dst_region_computeid(&r, key->key_alg);
        key->key_size = p_bytes * 8;
 
        isc_buffer_forward(data, 1 + ISC_SHA1_DIGESTLENGTH + 3 * p_bytes);
@@ -377,9 +362,6 @@ openssldsa_fromfile(dst_key_t *key, const isc_uint16_t id, const char *filename)
 {
        dst_private_t priv;
        isc_result_t ret;
-       isc_buffer_t dns;
-       isc_region_t r;
-       unsigned char dns_array[1024];
        int i;
        DSA *dsa = NULL;
        isc_mem_t *mctx = key->mctx;
@@ -424,15 +406,6 @@ openssldsa_fromfile(dst_key_t *key, const isc_uint16_t id, const char *filename)
        dst__privstruct_free(&priv, mctx);
 
        key->key_size = BN_num_bits(dsa->p);
-       isc_buffer_init(&dns, dns_array, sizeof(dns_array));
-       ret = openssldsa_todns(key, &dns);
-       if (ret != ISC_R_SUCCESS)
-               DST_RET(ret);
-       isc_buffer_usedregion(&dns, &r);
-       key->key_id = dst_region_computeid(&r, key->key_alg);
-
-       if (key->key_id != id)
-               DST_RET(DST_R_INVALIDPRIVATEKEY);
 
        return (ISC_R_SUCCESS);
 
index 30dbcd025264678628f8e44aeb67ca97ba495036..30a4022ee7257080438ad69a47be3ca22c6d3f87 100644 (file)
@@ -19,7 +19,7 @@
 
 /*
  * Principal Author: Brian Wellington
- * $Id: openssldh_link.c,v 1.32.4.1 2001/01/09 22:48:29 bwelling Exp $
+ * $Id: openssldh_link.c,v 1.32.4.2 2001/04/10 01:10:23 gson Exp $
  */
 
 #if defined(OPENSSL)
@@ -130,10 +130,6 @@ openssldh_paramcompare(const dst_key_t *key1, const dst_key_t *key2) {
 static isc_result_t
 openssldh_generate(dst_key_t *key, int generator) {
        DH *dh = NULL;
-       unsigned char dns_array[DST_KEY_MAXSIZE];
-       isc_buffer_t dns;
-       isc_region_t r;
-       isc_result_t result;
 
        if (generator == 0) {
                if (key->key_size == 768 || key->key_size == 1024) {
@@ -165,15 +161,6 @@ openssldh_generate(dst_key_t *key, int generator) {
 
        key->opaque = dh;
 
-       isc_buffer_init(&dns, dns_array, sizeof(dns_array));
-       result = openssldh_todns(key, &dns);
-       if (result != ISC_R_SUCCESS) {
-               DH_free(dh);
-               return (result);
-       }
-       isc_buffer_usedregion(&dns, &r);
-       key->key_id = dst_region_computeid(&r, key->key_alg);
-
        return (ISC_R_SUCCESS);
 }
 
@@ -371,9 +358,6 @@ openssldh_fromdns(dst_key_t *key, isc_buffer_t *data) {
        dh->pub_key = BN_bin2bn(r.base, publen, NULL);
        r.base += publen;
 
-       isc_buffer_remainingregion(data, &r);
-       r.length = plen + glen + publen + 6;
-       key->key_id = dst_region_computeid(&r, key->key_alg);
        key->key_size = BN_num_bits(dh->p);
 
        isc_buffer_forward(data, plen + glen + publen + 6);
@@ -428,9 +412,6 @@ openssldh_fromfile(dst_key_t *key, const isc_uint16_t id, const char *filename)
 {
        dst_private_t priv;
        isc_result_t ret;
-       isc_buffer_t dns;
-       isc_region_t r;
-       unsigned char dns_array[1024];
        int i;
        DH *dh = NULL;
        isc_mem_t *mctx;
@@ -449,7 +430,7 @@ openssldh_fromfile(dst_key_t *key, const isc_uint16_t id, const char *filename)
        dh->flags &= ~DH_FLAG_CACHE_MONT_P;
        key->opaque = dh;
 
-       for (i=0; i < priv.nelements; i++) {
+       for (i = 0; i < priv.nelements; i++) {
                BIGNUM *bn;
                bn = BN_bin2bn(priv.elements[i].data,
                               priv.elements[i].length, NULL);
@@ -491,15 +472,6 @@ openssldh_fromfile(dst_key_t *key, const isc_uint16_t id, const char *filename)
                        dh->g = &bn2;
                }
        }
-       isc_buffer_init(&dns, dns_array, sizeof(dns_array));
-       ret = openssldh_todns(key, &dns);
-       if (ret != ISC_R_SUCCESS)
-               DST_RET(ret);
-       isc_buffer_usedregion(&dns, &r);
-       key->key_id = dst_region_computeid(&r, key->key_alg);
-
-       if (key->key_id != id)
-               DST_RET(DST_R_INVALIDPRIVATEKEY);
 
        return (ISC_R_SUCCESS);
 
index 37b6532e262395e4be54f9102d360b9028615a30..f5f1b1ac57147ae02dbe749103a250e6de48aff0 100644 (file)
@@ -17,7 +17,7 @@
 
 /*
  * Principal Author: Brian Wellington
- * $Id: opensslrsa_link.c,v 1.6.4.1 2001/01/09 22:48:31 bwelling Exp $
+ * $Id: opensslrsa_link.c,v 1.6.4.2 2001/04/10 01:10:26 gson Exp $
  */
 #if defined(OPENSSL)
 
@@ -205,10 +205,6 @@ static isc_result_t
 opensslrsa_generate(dst_key_t *key, int exp) {
        RSA *rsa;
        unsigned long e;
-       unsigned char dns_array[DST_KEY_MAXSIZE];
-       isc_buffer_t dns;
-       isc_result_t result;
-       isc_region_t r;
 
        if (exp == 0)
                e = RSA_3;
@@ -224,15 +220,6 @@ opensslrsa_generate(dst_key_t *key, int exp) {
 
        key->opaque = rsa;
 
-       isc_buffer_init(&dns, dns_array, sizeof(dns_array));
-       result = opensslrsa_todns(key, &dns);
-       if (result != ISC_R_SUCCESS) {
-               RSA_free(rsa);
-               return (result);
-       }
-       isc_buffer_usedregion(&dns, &r);
-       key->key_id = dst_region_computeid(&r, key->key_alg);
-
        return (ISC_R_SUCCESS);
 }
 
@@ -326,8 +313,6 @@ opensslrsa_fromdns(dst_key_t *key, isc_buffer_t *data) {
 
        rsa->n = BN_bin2bn(r.base, r.length, NULL);
 
-       isc_buffer_remainingregion(data, &r);
-       key->key_id = dst_region_computeid(&r, key->key_alg);
        key->key_size = BN_num_bits(rsa->n);
 
        isc_buffer_forward(data, r.length);
@@ -424,9 +409,6 @@ opensslrsa_fromfile(dst_key_t *key, const isc_uint16_t id,
 {
        dst_private_t priv;
        isc_result_t ret;
-       isc_buffer_t dns;
-       isc_region_t r;
-       unsigned char dns_array[1024];
        int i;
        RSA *rsa = NULL;
        isc_mem_t *mctx = key->mctx;
@@ -480,15 +462,6 @@ opensslrsa_fromfile(dst_key_t *key, const isc_uint16_t id,
        dst__privstruct_free(&priv, mctx);
 
        key->key_size = BN_num_bits(rsa->n);
-       isc_buffer_init(&dns, dns_array, sizeof(dns_array));
-       ret = opensslrsa_todns(key, &dns);
-       if (ret != ISC_R_SUCCESS)
-               DST_RET(ret);
-       isc_buffer_usedregion(&dns, &r);
-       key->key_id = dst_region_computeid(&r, key->key_alg);
-
-       if (key->key_id != id)
-               DST_RET(DST_R_INVALIDPRIVATEKEY);
 
        return (ISC_R_SUCCESS);