components/bind/patches/003-RT40212.patch
author jenny.yung@oracle.com <jenny.yung@oracle.com>
Wed, 02 Dec 2015 16:35:50 -0800
changeset 5143 9b4a483bf8d9
parent 4836 2963a732ee80
permissions -rw-r--r--
22242767 Upgrade GnuTLS to 3.4.6 22080473 problem in LIBRARY/GNUTLS
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4836
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
     1
This patch was obtained from ISC for 9.6-ESV-R11-P3.
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
     2
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
     3
--- old/CHANGES	Mon Aug 24 00:18:22 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
     4
+++ new/CHANGES	Mon Aug 24 00:18:22 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
     5
@@ -1,3 +1,10 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
     6
+	--- 9.6-ESV-R11-P3 released ---
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
     7
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
     8
+4168.	[security]	A buffer accounting error could trigger an
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
     9
+			assertion failure when parsing certain malformed
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    10
+			DNSSEC keys. (CVE-2015-5722)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    11
+			[RT #40212]
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    12
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    13
 	--- 9.6-ESV-R11-P2 released ---
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    14
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    15
 4165.	[security]	A failure to reset a value to NULL in tkey.c could
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    16
--- old/lib/dns/api	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    17
+++ new/lib/dns/api	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    18
@@ -5,5 +5,5 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    19
 # 9.9: 90-109
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    20
 # 9.9-sub: 130-139
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    21
 LIBINTERFACE = 114
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    22
-LIBREVISION = 1
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    23
+LIBREVISION = 2
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    24
 LIBAGE = 1
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    25
--- old/lib/dns/hmac_link.c	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    26
+++ new/lib/dns/hmac_link.c	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    27
@@ -1,5 +1,5 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    28
 /*
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    29
- * Portions Copyright (C) 2004-2008, 2012-2014  Internet Systems Consortium, Inc. ("ISC")
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    30
+ * Portions Copyright (C) 2004-2014  Internet Systems Consortium, Inc. ("ISC")
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    31
  * Portions Copyright (C) 1999-2002  Internet Software Consortium.
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    32
  *
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    33
  * Permission to use, copy, modify, and/or distribute this software for any
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    34
@@ -51,14 +51,10 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    35
 #include "dst_internal.h"
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    36
 #include "dst_parse.h"
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    37
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    38
-#define HMAC_LEN	64
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    39
-#define HMAC_IPAD	0x36
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    40
-#define HMAC_OPAD	0x5c
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    41
-
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    42
 static isc_result_t hmacmd5_fromdns(dst_key_t *key, isc_buffer_t *data);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    43
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    44
 struct dst_hmacmd5_key {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    45
-	unsigned char key[HMAC_LEN];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    46
+	unsigned char key[ISC_MD5_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    47
 };
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    48
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    49
 static isc_result_t
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    50
@@ -80,7 +76,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    51
 	hmacmd5ctx = isc_mem_get(dctx->mctx, sizeof(isc_hmacmd5_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    52
 	if (hmacmd5ctx == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    53
 		return (ISC_R_NOMEMORY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    54
-	isc_hmacmd5_init(hmacmd5ctx, hkey->key, HMAC_LEN);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    55
+	isc_hmacmd5_init(hmacmd5ctx, hkey->key, ISC_MD5_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    56
 	dctx->ctxdata.hmacmd5ctx = hmacmd5ctx;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    57
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    58
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    59
@@ -143,7 +139,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    60
 	else if (hkey1 == NULL || hkey2 == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    61
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    62
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    63
-	if (isc_safe_memcmp(hkey1->key, hkey2->key, HMAC_LEN))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    64
+	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_MD5_BLOCK_LENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    65
 		return (ISC_TRUE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    66
 	else
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    67
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    68
@@ -153,16 +149,16 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    69
 hmacmd5_generate(dst_key_t *key, int pseudorandom_ok) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    70
 	isc_buffer_t b;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    71
 	isc_result_t ret;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    72
-	int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    73
-	unsigned char data[HMAC_LEN];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    74
+	unsigned int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    75
+	unsigned char data[ISC_MD5_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    76
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    77
 	bytes = (key->key_size + 7) / 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    78
-	if (bytes > HMAC_LEN) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    79
-		bytes = HMAC_LEN;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    80
-		key->key_size = HMAC_LEN * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    81
+	if (bytes > ISC_MD5_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    82
+		bytes = ISC_MD5_BLOCK_LENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    83
+		key->key_size = ISC_MD5_BLOCK_LENGTH * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    84
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    85
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    86
-	memset(data, 0, HMAC_LEN);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    87
+	memset(data, 0, ISC_MD5_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    88
 	ret = dst__entropy_getdata(data, bytes, ISC_TF(pseudorandom_ok != 0));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    89
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    90
 	if (ret != ISC_R_SUCCESS)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    91
@@ -171,7 +167,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    92
 	isc_buffer_init(&b, data, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    93
 	isc_buffer_add(&b, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    94
 	ret = hmacmd5_fromdns(key, &b);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    95
-	memset(data, 0, HMAC_LEN);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    96
+	memset(data, 0, ISC_MD5_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    97
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    98
 	return (ret);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
    99
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   100
@@ -185,6 +181,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   101
 static void
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   102
 hmacmd5_destroy(dst_key_t *key) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   103
 	dst_hmacmd5_key_t *hkey = key->keydata.hmacmd5;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   104
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   105
 	memset(hkey, 0, sizeof(dst_hmacmd5_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   106
 	isc_mem_put(key->mctx, hkey, sizeof(dst_hmacmd5_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   107
 	key->keydata.hmacmd5 = NULL;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   108
@@ -224,7 +221,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   109
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   110
 	memset(hkey->key, 0, sizeof(hkey->key));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   111
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   112
-	if (r.length > HMAC_LEN) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   113
+	if (r.length > ISC_MD5_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   114
 		isc_md5_init(&md5ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   115
 		isc_md5_update(&md5ctx, r.base, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   116
 		isc_md5_final(&md5ctx, hkey->key);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   117
@@ -237,6 +234,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   118
 	key->key_size = keylen * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   119
 	key->keydata.hmacmd5 = hkey;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   120
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   121
+	isc_buffer_forward(data, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   122
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   123
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   124
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   125
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   126
@@ -276,7 +275,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   127
 	unsigned int i;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   128
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   129
 	/* read private key file */
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   130
-	result = dst__privstruct_parse(key, DST_ALG_HMACMD5, lexer, mctx, &priv);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   131
+	result = dst__privstruct_parse(key, DST_ALG_HMACMD5, lexer, mctx,
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   132
+				       &priv);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   133
 	if (result != ISC_R_SUCCESS)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   134
 		return (result);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   135
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   136
@@ -337,7 +337,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   137
 static isc_result_t hmacsha1_fromdns(dst_key_t *key, isc_buffer_t *data);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   138
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   139
 struct dst_hmacsha1_key {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   140
-	unsigned char key[ISC_SHA1_DIGESTLENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   141
+	unsigned char key[ISC_SHA1_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   142
 };
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   143
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   144
 static isc_result_t
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   145
@@ -348,7 +348,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   146
 	hmacsha1ctx = isc_mem_get(dctx->mctx, sizeof(isc_hmacsha1_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   147
 	if (hmacsha1ctx == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   148
 		return (ISC_R_NOMEMORY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   149
-	isc_hmacsha1_init(hmacsha1ctx, hkey->key, ISC_SHA1_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   150
+	isc_hmacsha1_init(hmacsha1ctx, hkey->key, ISC_SHA1_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   151
 	dctx->ctxdata.hmacsha1ctx = hmacsha1ctx;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   152
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   153
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   154
@@ -411,7 +411,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   155
 	else if (hkey1 == NULL || hkey2 == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   156
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   157
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   158
-	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA1_DIGESTLENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   159
+	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA1_BLOCK_LENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   160
 		return (ISC_TRUE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   161
 	else
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   162
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   163
@@ -421,16 +421,16 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   164
 hmacsha1_generate(dst_key_t *key, int pseudorandom_ok) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   165
 	isc_buffer_t b;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   166
 	isc_result_t ret;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   167
-	int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   168
-	unsigned char data[HMAC_LEN];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   169
+	unsigned int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   170
+	unsigned char data[ISC_SHA1_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   171
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   172
 	bytes = (key->key_size + 7) / 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   173
-	if (bytes > HMAC_LEN) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   174
-		bytes = HMAC_LEN;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   175
-		key->key_size = HMAC_LEN * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   176
+	if (bytes > ISC_SHA1_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   177
+		bytes = ISC_SHA1_BLOCK_LENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   178
+		key->key_size = ISC_SHA1_BLOCK_LENGTH * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   179
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   180
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   181
-	memset(data, 0, HMAC_LEN);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   182
+	memset(data, 0, ISC_SHA1_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   183
 	ret = dst__entropy_getdata(data, bytes, ISC_TF(pseudorandom_ok != 0));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   184
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   185
 	if (ret != ISC_R_SUCCESS)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   186
@@ -439,7 +439,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   187
 	isc_buffer_init(&b, data, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   188
 	isc_buffer_add(&b, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   189
 	ret = hmacsha1_fromdns(key, &b);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   190
-	memset(data, 0, ISC_SHA1_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   191
+	memset(data, 0, ISC_SHA1_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   192
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   193
 	return (ret);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   194
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   195
@@ -453,6 +453,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   196
 static void
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   197
 hmacsha1_destroy(dst_key_t *key) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   198
 	dst_hmacsha1_key_t *hkey = key->keydata.hmacsha1;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   199
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   200
 	memset(hkey, 0, sizeof(dst_hmacsha1_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   201
 	isc_mem_put(key->mctx, hkey, sizeof(dst_hmacsha1_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   202
 	key->keydata.hmacsha1 = NULL;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   203
@@ -492,7 +493,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   204
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   205
 	memset(hkey->key, 0, sizeof(hkey->key));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   206
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   207
-	if (r.length > ISC_SHA1_DIGESTLENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   208
+	if (r.length > ISC_SHA1_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   209
 		isc_sha1_init(&sha1ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   210
 		isc_sha1_update(&sha1ctx, r.base, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   211
 		isc_sha1_final(&sha1ctx, hkey->key);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   212
@@ -505,6 +506,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   213
 	key->key_size = keylen * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   214
 	key->keydata.hmacsha1 = hkey;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   215
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   216
+	isc_buffer_forward(data, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   217
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   218
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   219
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   220
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   221
@@ -606,7 +609,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   222
 static isc_result_t hmacsha224_fromdns(dst_key_t *key, isc_buffer_t *data);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   223
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   224
 struct dst_hmacsha224_key {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   225
-	unsigned char key[ISC_SHA224_DIGESTLENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   226
+	unsigned char key[ISC_SHA224_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   227
 };
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   228
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   229
 static isc_result_t
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   230
@@ -617,7 +620,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   231
 	hmacsha224ctx = isc_mem_get(dctx->mctx, sizeof(isc_hmacsha224_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   232
 	if (hmacsha224ctx == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   233
 		return (ISC_R_NOMEMORY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   234
-	isc_hmacsha224_init(hmacsha224ctx, hkey->key, ISC_SHA224_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   235
+	isc_hmacsha224_init(hmacsha224ctx, hkey->key, ISC_SHA224_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   236
 	dctx->ctxdata.hmacsha224ctx = hmacsha224ctx;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   237
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   238
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   239
@@ -680,7 +683,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   240
 	else if (hkey1 == NULL || hkey2 == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   241
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   242
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   243
-	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA224_DIGESTLENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   244
+	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA224_BLOCK_LENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   245
 		return (ISC_TRUE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   246
 	else
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   247
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   248
@@ -690,16 +693,16 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   249
 hmacsha224_generate(dst_key_t *key, int pseudorandom_ok) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   250
 	isc_buffer_t b;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   251
 	isc_result_t ret;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   252
-	int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   253
-	unsigned char data[HMAC_LEN];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   254
+	unsigned int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   255
+	unsigned char data[ISC_SHA224_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   256
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   257
 	bytes = (key->key_size + 7) / 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   258
-	if (bytes > HMAC_LEN) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   259
-		bytes = HMAC_LEN;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   260
-		key->key_size = HMAC_LEN * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   261
+	if (bytes > ISC_SHA224_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   262
+		bytes = ISC_SHA224_BLOCK_LENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   263
+		key->key_size = ISC_SHA224_BLOCK_LENGTH * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   264
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   265
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   266
-	memset(data, 0, HMAC_LEN);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   267
+	memset(data, 0, ISC_SHA224_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   268
 	ret = dst__entropy_getdata(data, bytes, ISC_TF(pseudorandom_ok != 0));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   269
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   270
 	if (ret != ISC_R_SUCCESS)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   271
@@ -708,7 +711,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   272
 	isc_buffer_init(&b, data, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   273
 	isc_buffer_add(&b, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   274
 	ret = hmacsha224_fromdns(key, &b);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   275
-	memset(data, 0, ISC_SHA224_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   276
+	memset(data, 0, ISC_SHA224_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   277
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   278
 	return (ret);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   279
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   280
@@ -722,6 +725,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   281
 static void
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   282
 hmacsha224_destroy(dst_key_t *key) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   283
 	dst_hmacsha224_key_t *hkey = key->keydata.hmacsha224;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   284
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   285
 	memset(hkey, 0, sizeof(dst_hmacsha224_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   286
 	isc_mem_put(key->mctx, hkey, sizeof(dst_hmacsha224_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   287
 	key->keydata.hmacsha224 = NULL;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   288
@@ -761,7 +765,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   289
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   290
 	memset(hkey->key, 0, sizeof(hkey->key));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   291
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   292
-	if (r.length > ISC_SHA224_DIGESTLENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   293
+	if (r.length > ISC_SHA224_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   294
 		isc_sha224_init(&sha224ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   295
 		isc_sha224_update(&sha224ctx, r.base, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   296
 		isc_sha224_final(hkey->key, &sha224ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   297
@@ -774,6 +778,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   298
 	key->key_size = keylen * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   299
 	key->keydata.hmacsha224 = hkey;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   300
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   301
+	isc_buffer_forward(data, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   302
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   303
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   304
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   305
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   306
@@ -875,7 +881,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   307
 static isc_result_t hmacsha256_fromdns(dst_key_t *key, isc_buffer_t *data);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   308
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   309
 struct dst_hmacsha256_key {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   310
-	unsigned char key[ISC_SHA256_DIGESTLENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   311
+	unsigned char key[ISC_SHA256_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   312
 };
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   313
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   314
 static isc_result_t
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   315
@@ -886,7 +892,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   316
 	hmacsha256ctx = isc_mem_get(dctx->mctx, sizeof(isc_hmacsha256_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   317
 	if (hmacsha256ctx == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   318
 		return (ISC_R_NOMEMORY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   319
-	isc_hmacsha256_init(hmacsha256ctx, hkey->key, ISC_SHA256_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   320
+	isc_hmacsha256_init(hmacsha256ctx, hkey->key, ISC_SHA256_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   321
 	dctx->ctxdata.hmacsha256ctx = hmacsha256ctx;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   322
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   323
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   324
@@ -949,7 +955,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   325
 	else if (hkey1 == NULL || hkey2 == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   326
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   327
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   328
-	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA256_DIGESTLENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   329
+	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA256_BLOCK_LENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   330
 		return (ISC_TRUE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   331
 	else
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   332
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   333
@@ -959,16 +965,16 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   334
 hmacsha256_generate(dst_key_t *key, int pseudorandom_ok) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   335
 	isc_buffer_t b;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   336
 	isc_result_t ret;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   337
-	int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   338
-	unsigned char data[HMAC_LEN];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   339
+	unsigned int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   340
+	unsigned char data[ISC_SHA256_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   341
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   342
 	bytes = (key->key_size + 7) / 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   343
-	if (bytes > HMAC_LEN) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   344
-		bytes = HMAC_LEN;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   345
-		key->key_size = HMAC_LEN * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   346
+	if (bytes > ISC_SHA256_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   347
+		bytes = ISC_SHA256_BLOCK_LENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   348
+		key->key_size = ISC_SHA256_BLOCK_LENGTH * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   349
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   350
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   351
-	memset(data, 0, HMAC_LEN);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   352
+	memset(data, 0, ISC_SHA256_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   353
 	ret = dst__entropy_getdata(data, bytes, ISC_TF(pseudorandom_ok != 0));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   354
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   355
 	if (ret != ISC_R_SUCCESS)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   356
@@ -977,7 +983,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   357
 	isc_buffer_init(&b, data, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   358
 	isc_buffer_add(&b, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   359
 	ret = hmacsha256_fromdns(key, &b);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   360
-	memset(data, 0, ISC_SHA256_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   361
+	memset(data, 0, ISC_SHA256_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   362
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   363
 	return (ret);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   364
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   365
@@ -991,6 +997,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   366
 static void
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   367
 hmacsha256_destroy(dst_key_t *key) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   368
 	dst_hmacsha256_key_t *hkey = key->keydata.hmacsha256;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   369
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   370
 	memset(hkey, 0, sizeof(dst_hmacsha256_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   371
 	isc_mem_put(key->mctx, hkey, sizeof(dst_hmacsha256_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   372
 	key->keydata.hmacsha256 = NULL;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   373
@@ -1030,7 +1037,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   374
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   375
 	memset(hkey->key, 0, sizeof(hkey->key));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   376
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   377
-	if (r.length > ISC_SHA256_DIGESTLENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   378
+	if (r.length > ISC_SHA256_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   379
 		isc_sha256_init(&sha256ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   380
 		isc_sha256_update(&sha256ctx, r.base, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   381
 		isc_sha256_final(hkey->key, &sha256ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   382
@@ -1043,6 +1050,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   383
 	key->key_size = keylen * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   384
 	key->keydata.hmacsha256 = hkey;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   385
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   386
+	isc_buffer_forward(data, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   387
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   388
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   389
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   390
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   391
@@ -1144,7 +1153,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   392
 static isc_result_t hmacsha384_fromdns(dst_key_t *key, isc_buffer_t *data);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   393
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   394
 struct dst_hmacsha384_key {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   395
-	unsigned char key[ISC_SHA384_DIGESTLENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   396
+	unsigned char key[ISC_SHA384_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   397
 };
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   398
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   399
 static isc_result_t
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   400
@@ -1155,7 +1164,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   401
 	hmacsha384ctx = isc_mem_get(dctx->mctx, sizeof(isc_hmacsha384_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   402
 	if (hmacsha384ctx == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   403
 		return (ISC_R_NOMEMORY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   404
-	isc_hmacsha384_init(hmacsha384ctx, hkey->key, ISC_SHA384_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   405
+	isc_hmacsha384_init(hmacsha384ctx, hkey->key, ISC_SHA384_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   406
 	dctx->ctxdata.hmacsha384ctx = hmacsha384ctx;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   407
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   408
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   409
@@ -1218,7 +1227,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   410
 	else if (hkey1 == NULL || hkey2 == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   411
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   412
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   413
-	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA384_DIGESTLENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   414
+	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA384_BLOCK_LENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   415
 		return (ISC_TRUE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   416
 	else
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   417
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   418
@@ -1228,16 +1237,16 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   419
 hmacsha384_generate(dst_key_t *key, int pseudorandom_ok) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   420
 	isc_buffer_t b;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   421
 	isc_result_t ret;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   422
-	int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   423
-	unsigned char data[HMAC_LEN];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   424
+	unsigned int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   425
+	unsigned char data[ISC_SHA384_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   426
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   427
 	bytes = (key->key_size + 7) / 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   428
-	if (bytes > HMAC_LEN) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   429
-		bytes = HMAC_LEN;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   430
-		key->key_size = HMAC_LEN * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   431
+	if (bytes > ISC_SHA384_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   432
+		bytes = ISC_SHA384_BLOCK_LENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   433
+		key->key_size = ISC_SHA384_BLOCK_LENGTH * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   434
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   435
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   436
-	memset(data, 0, HMAC_LEN);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   437
+	memset(data, 0, ISC_SHA384_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   438
 	ret = dst__entropy_getdata(data, bytes, ISC_TF(pseudorandom_ok != 0));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   439
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   440
 	if (ret != ISC_R_SUCCESS)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   441
@@ -1246,7 +1255,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   442
 	isc_buffer_init(&b, data, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   443
 	isc_buffer_add(&b, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   444
 	ret = hmacsha384_fromdns(key, &b);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   445
-	memset(data, 0, ISC_SHA384_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   446
+	memset(data, 0, ISC_SHA384_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   447
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   448
 	return (ret);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   449
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   450
@@ -1260,6 +1269,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   451
 static void
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   452
 hmacsha384_destroy(dst_key_t *key) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   453
 	dst_hmacsha384_key_t *hkey = key->keydata.hmacsha384;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   454
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   455
 	memset(hkey, 0, sizeof(dst_hmacsha384_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   456
 	isc_mem_put(key->mctx, hkey, sizeof(dst_hmacsha384_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   457
 	key->keydata.hmacsha384 = NULL;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   458
@@ -1299,7 +1309,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   459
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   460
 	memset(hkey->key, 0, sizeof(hkey->key));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   461
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   462
-	if (r.length > ISC_SHA384_DIGESTLENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   463
+	if (r.length > ISC_SHA384_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   464
 		isc_sha384_init(&sha384ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   465
 		isc_sha384_update(&sha384ctx, r.base, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   466
 		isc_sha384_final(hkey->key, &sha384ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   467
@@ -1312,6 +1322,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   468
 	key->key_size = keylen * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   469
 	key->keydata.hmacsha384 = hkey;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   470
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   471
+	isc_buffer_forward(data, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   472
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   473
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   474
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   475
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   476
@@ -1413,7 +1425,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   477
 static isc_result_t hmacsha512_fromdns(dst_key_t *key, isc_buffer_t *data);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   478
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   479
 struct dst_hmacsha512_key {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   480
-	unsigned char key[ISC_SHA512_DIGESTLENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   481
+	unsigned char key[ISC_SHA512_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   482
 };
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   483
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   484
 static isc_result_t
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   485
@@ -1424,7 +1436,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   486
 	hmacsha512ctx = isc_mem_get(dctx->mctx, sizeof(isc_hmacsha512_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   487
 	if (hmacsha512ctx == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   488
 		return (ISC_R_NOMEMORY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   489
-	isc_hmacsha512_init(hmacsha512ctx, hkey->key, ISC_SHA512_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   490
+	isc_hmacsha512_init(hmacsha512ctx, hkey->key, ISC_SHA512_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   491
 	dctx->ctxdata.hmacsha512ctx = hmacsha512ctx;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   492
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   493
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   494
@@ -1487,7 +1499,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   495
 	else if (hkey1 == NULL || hkey2 == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   496
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   497
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   498
-	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA512_DIGESTLENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   499
+	if (isc_safe_memcmp(hkey1->key, hkey2->key, ISC_SHA512_BLOCK_LENGTH))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   500
 		return (ISC_TRUE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   501
 	else
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   502
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   503
@@ -1497,16 +1509,16 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   504
 hmacsha512_generate(dst_key_t *key, int pseudorandom_ok) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   505
 	isc_buffer_t b;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   506
 	isc_result_t ret;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   507
-	int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   508
-	unsigned char data[HMAC_LEN];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   509
+	unsigned int bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   510
+	unsigned char data[ISC_SHA512_BLOCK_LENGTH];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   511
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   512
 	bytes = (key->key_size + 7) / 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   513
-	if (bytes > HMAC_LEN) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   514
-		bytes = HMAC_LEN;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   515
-		key->key_size = HMAC_LEN * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   516
+	if (bytes > ISC_SHA512_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   517
+		bytes = ISC_SHA512_BLOCK_LENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   518
+		key->key_size = ISC_SHA512_BLOCK_LENGTH * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   519
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   520
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   521
-	memset(data, 0, HMAC_LEN);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   522
+	memset(data, 0, ISC_SHA512_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   523
 	ret = dst__entropy_getdata(data, bytes, ISC_TF(pseudorandom_ok != 0));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   524
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   525
 	if (ret != ISC_R_SUCCESS)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   526
@@ -1515,7 +1527,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   527
 	isc_buffer_init(&b, data, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   528
 	isc_buffer_add(&b, bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   529
 	ret = hmacsha512_fromdns(key, &b);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   530
-	memset(data, 0, ISC_SHA512_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   531
+	memset(data, 0, ISC_SHA512_BLOCK_LENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   532
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   533
 	return (ret);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   534
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   535
@@ -1529,6 +1541,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   536
 static void
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   537
 hmacsha512_destroy(dst_key_t *key) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   538
 	dst_hmacsha512_key_t *hkey = key->keydata.hmacsha512;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   539
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   540
 	memset(hkey, 0, sizeof(dst_hmacsha512_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   541
 	isc_mem_put(key->mctx, hkey, sizeof(dst_hmacsha512_key_t));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   542
 	key->keydata.hmacsha512 = NULL;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   543
@@ -1568,7 +1581,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   544
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   545
 	memset(hkey->key, 0, sizeof(hkey->key));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   546
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   547
-	if (r.length > ISC_SHA512_DIGESTLENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   548
+	if (r.length > ISC_SHA512_BLOCK_LENGTH) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   549
 		isc_sha512_init(&sha512ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   550
 		isc_sha512_update(&sha512ctx, r.base, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   551
 		isc_sha512_final(hkey->key, &sha512ctx);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   552
@@ -1581,6 +1594,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   553
 	key->key_size = keylen * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   554
 	key->keydata.hmacsha512 = hkey;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   555
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   556
+	isc_buffer_forward(data, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   557
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   558
 	return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   559
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   560
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   561
--- old/lib/dns/include/dst/dst.h	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   562
+++ new/lib/dns/include/dst/dst.h	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   563
@@ -65,6 +65,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   564
 #define DST_ALG_HMACSHA256	163	/* XXXMPA */
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   565
 #define DST_ALG_HMACSHA384	164	/* XXXMPA */
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   566
 #define DST_ALG_HMACSHA512	165	/* XXXMPA */
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   567
+#define DST_ALG_INDIRECT	252
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   568
 #define DST_ALG_PRIVATE		254
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   569
 #define DST_ALG_EXPAND		255
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   570
 #define DST_MAX_ALGS		255
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   571
--- old/lib/dns/ncache.c	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   572
+++ new/lib/dns/ncache.c	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   573
@@ -35,7 +35,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   574
 #define DNS_NCACHE_RDATA 20U
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   575
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   576
 /*
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   577
- * The format of an ncache rdata is a sequence of one or more records of
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   578
+ * The format of an ncache rdata is a sequence of zero or more records of
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   579
  * the following format:
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   580
  *
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   581
  *	owner name
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   582
@@ -665,13 +665,11 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   583
 		dns_name_fromregion(&tname, &remaining);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   584
 		INSIST(remaining.length >= tname.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   585
 		isc_buffer_forward(&source, tname.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   586
-		remaining.length -= tname.length;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   587
-		remaining.base += tname.length;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   588
+		isc_region_consume(&remaining, tname.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   589
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   590
 		INSIST(remaining.length >= 2);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   591
 		type = isc_buffer_getuint16(&source);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   592
-		remaining.length -= 2;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   593
-		remaining.base += 2;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   594
+		isc_region_consume(&remaining, 2);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   595
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   596
 		if (type != dns_rdatatype_rrsig ||
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   597
 		    !dns_name_equal(&tname, name)) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   598
@@ -683,8 +681,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   599
 		INSIST(remaining.length >= 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   600
 		trust = isc_buffer_getuint8(&source);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   601
 		INSIST(trust <= dns_trust_ultimate);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   602
-		remaining.length -= 1;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   603
-		remaining.base += 1;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   604
+		isc_region_consume(&remaining, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   605
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   606
 		raw = remaining.base;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   607
 		count = raw[0] * 256 + raw[1];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   608
--- old/lib/dns/openssldh_link.c	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   609
+++ new/lib/dns/openssldh_link.c	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   610
@@ -1,5 +1,5 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   611
 /*
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   612
- * Portions Copyright (C) 2004-2008, 2012  Internet Systems Consortium, Inc. ("ISC")
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   613
+ * Portions Copyright (C) 2004-2009, 2011-2014  Internet Systems Consortium, Inc. ("ISC")
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   614
  * Portions Copyright (C) 1999-2002  Internet Software Consortium.
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   615
  *
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   616
  * Permission to use, copy, modify, and/or distribute this software for any
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   617
@@ -93,7 +93,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   618
 	if (r.length < len)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   619
 		return (ISC_R_NOSPACE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   620
 	ret = DH_compute_key(r.base, dhpub->pub_key, dhpriv);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   621
-	if (ret == 0)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   622
+	if (ret <= 0)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   623
 		return (dst__openssl_toresult2("DH_compute_key",
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   624
 					       DST_R_COMPUTESECRETFAILURE));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   625
 	isc_buffer_add(secret, len);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   626
@@ -236,8 +236,10 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   627
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   628
 static void
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   629
 uint16_toregion(isc_uint16_t val, isc_region_t *region) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   630
-	*region->base++ = (val & 0xff00) >> 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   631
-	*region->base++ = (val & 0x00ff);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   632
+	*region->base = (val & 0xff00) >> 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   633
+	isc_region_consume(region, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   634
+	*region->base = (val & 0x00ff);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   635
+	isc_region_consume(region, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   636
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   637
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   638
 static isc_uint16_t
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   639
@@ -248,7 +250,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   640
 	val = ((unsigned int)(cp[0])) << 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   641
 	val |= ((unsigned int)(cp[1]));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   642
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   643
-	region->base += 2;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   644
+	isc_region_consume(region, 2);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   645
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   646
 	return (val);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   647
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   648
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   649
@@ -289,16 +292,16 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   650
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   651
 	else
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   652
 		BN_bn2bin(dh->p, r.base);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   653
-	r.base += plen;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   654
+	isc_region_consume(&r, plen);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   655
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   656
 	uint16_toregion(glen, &r);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   657
 	if (glen > 0)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   658
 		BN_bn2bin(dh->g, r.base);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   659
-	r.base += glen;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   660
+	isc_region_consume(&r, glen);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   661
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   662
 	uint16_toregion(publen, &r);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   663
 	BN_bn2bin(dh->pub_key, r.base);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   664
-	r.base += publen;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   665
+	isc_region_consume(&r, publen);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   666
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   667
 	isc_buffer_add(data, dnslen);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   668
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   669
@@ -339,10 +342,12 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   670
 		return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   671
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   672
 	if (plen == 1 || plen == 2) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   673
-		if (plen == 1)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   674
-			special = *r.base++;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   675
-		else
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   676
+		if (plen == 1) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   677
+			special = *r.base;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   678
+			isc_region_consume(&r, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   679
+		} else {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   680
 			special = uint16_fromregion(&r);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   681
+		}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   682
 		switch (special) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   683
 			case 1:
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   684
 				dh->p = &bn768;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   685
@@ -357,10 +362,9 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   686
 				DH_free(dh);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   687
 				return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   688
 		}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   689
-	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   690
-	else {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   691
+	} else {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   692
 		dh->p = BN_bin2bn(r.base, plen, NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   693
-		r.base += plen;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   694
+		isc_region_consume(&r, plen);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   695
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   696
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   697
 	/*
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   698
@@ -391,8 +395,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   699
 				return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   700
 			}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   701
 		}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   702
-	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   703
-	else {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   704
+	} else {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   705
 		if (glen == 0) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   706
 			DH_free(dh);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   707
 			return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   708
@@ -399,7 +402,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   709
 		}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   710
 		dh->g = BN_bin2bn(r.base, glen, NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   711
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   712
-	r.base += glen;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   713
+	isc_region_consume(&r, glen);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   714
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   715
 	if (r.length < 2) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   716
 		DH_free(dh);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   717
@@ -411,7 +414,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   718
 		return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   719
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   720
 	dh->pub_key = BN_bin2bn(r.base, publen, NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   721
-	r.base += publen;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   722
+	isc_region_consume(&r, publen);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   723
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   724
 	key->key_size = BN_num_bits(dh->p);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   725
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   726
@@ -577,11 +580,11 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   727
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   728
 		s = strchr(hexdigits, tolower((unsigned char)str[i]));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   729
 		RUNTIME_CHECK(s != NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   730
-		high = s - hexdigits;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   731
+		high = (unsigned int)(s - hexdigits);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   732
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   733
 		s = strchr(hexdigits, tolower((unsigned char)str[i + 1]));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   734
 		RUNTIME_CHECK(s != NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   735
-		low = s - hexdigits;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   736
+		low = (unsigned int)(s - hexdigits);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   737
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   738
 		data[i/2] = (unsigned char)((high << 4) + low);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   739
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   740
--- old/lib/dns/openssldsa_link.c	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   741
+++ new/lib/dns/openssldsa_link.c	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   742
@@ -1,5 +1,5 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   743
 /*
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   744
- * Portions Copyright (C) 2004-2009, 2011, 2012  Internet Systems Consortium, Inc. ("ISC")
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   745
+ * Portions Copyright (C) 2004-2009, 2011-2013  Internet Systems Consortium, Inc. ("ISC")
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   746
  * Portions Copyright (C) 1999-2002  Internet Software Consortium.
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   747
  *
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   748
  * Permission to use, copy, modify, and/or distribute this software for any
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   749
@@ -137,6 +137,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   750
 	DSA *dsa = key->keydata.dsa;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   751
 	isc_region_t r;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   752
 	DSA_SIG *dsasig;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   753
+	unsigned int klen;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   754
 #if USE_EVP
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   755
 	EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   756
 	EVP_PKEY *pkey;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   757
@@ -209,11 +210,17 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   758
 					       "DSA_do_sign",
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   759
 					       DST_R_SIGNFAILURE));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   760
 #endif
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   761
-	*r.base++ = (key->key_size - 512)/64;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   762
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   763
+	klen = (key->key_size - 512)/64;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   764
+	if (klen > 255)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   765
+		return (ISC_R_FAILURE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   766
+	*r.base = klen;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   767
+	isc_region_consume(&r, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   768
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   769
 	BN_bn2bin_fixed(dsasig->r, r.base, ISC_SHA1_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   770
-	r.base += ISC_SHA1_DIGESTLENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   771
+	isc_region_consume(&r, ISC_SHA1_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   772
 	BN_bn2bin_fixed(dsasig->s, r.base, ISC_SHA1_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   773
-	r.base += ISC_SHA1_DIGESTLENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   774
+	isc_region_consume(&r, ISC_SHA1_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   775
 	DSA_SIG_free(dsasig);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   776
 	isc_buffer_add(sig, ISC_SHA1_DIGESTLENGTH * 2 + 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   777
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   778
@@ -416,15 +423,16 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   779
 	if (r.length < (unsigned int) dnslen)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   780
 		return (ISC_R_NOSPACE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   781
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   782
-	*r.base++ = t;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   783
+	*r.base = t;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   784
+	isc_region_consume(&r, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   785
 	BN_bn2bin_fixed(dsa->q, r.base, ISC_SHA1_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   786
-	r.base += ISC_SHA1_DIGESTLENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   787
+	isc_region_consume(&r, ISC_SHA1_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   788
 	BN_bn2bin_fixed(dsa->p, r.base, key->key_size/8);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   789
-	r.base += p_bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   790
+	isc_region_consume(&r, p_bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   791
 	BN_bn2bin_fixed(dsa->g, r.base, key->key_size/8);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   792
-	r.base += p_bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   793
+	isc_region_consume(&r, p_bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   794
 	BN_bn2bin_fixed(dsa->pub_key, r.base, key->key_size/8);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   795
-	r.base += p_bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   796
+	isc_region_consume(&r, p_bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   797
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   798
 	isc_buffer_add(data, dnslen);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   799
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   800
@@ -449,7 +457,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   801
 		return (ISC_R_NOMEMORY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   802
 	dsa->flags &= ~DSA_FLAG_CACHE_MONT_P;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   803
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   804
-	t = (unsigned int) *r.base++;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   805
+	t = (unsigned int) *r.base;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   806
+	isc_region_consume(&r, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   807
 	if (t > 8) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   808
 		DSA_free(dsa);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   809
 		return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   810
@@ -456,22 +465,22 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   811
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   812
 	p_bytes = 64 + 8 * t;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   813
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   814
-	if (r.length < 1 + ISC_SHA1_DIGESTLENGTH + 3 * p_bytes) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   815
+	if (r.length < ISC_SHA1_DIGESTLENGTH + 3 * p_bytes) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   816
 		DSA_free(dsa);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   817
 		return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   818
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   819
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   820
 	dsa->q = BN_bin2bn(r.base, ISC_SHA1_DIGESTLENGTH, NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   821
-	r.base += ISC_SHA1_DIGESTLENGTH;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   822
+	isc_region_consume(&r, ISC_SHA1_DIGESTLENGTH);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   823
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   824
 	dsa->p = BN_bin2bn(r.base, p_bytes, NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   825
-	r.base += p_bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   826
+	isc_region_consume(&r, p_bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   827
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   828
 	dsa->g = BN_bin2bn(r.base, p_bytes, NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   829
-	r.base += p_bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   830
+	isc_region_consume(&r, p_bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   831
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   832
 	dsa->pub_key = BN_bin2bn(r.base, p_bytes, NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   833
-	r.base += p_bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   834
+	isc_region_consume(&r, p_bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   835
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   836
 	key->key_size = p_bytes * 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   837
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   838
--- old/lib/dns/opensslrsa_link.c	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   839
+++ new/lib/dns/opensslrsa_link.c	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   840
@@ -1,5 +1,5 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   841
 /*
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   842
- * Copyright (C) 2004-2012, 2014  Internet Systems Consortium, Inc. ("ISC")
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   843
+ * Copyright (C) 2004-2009, 2011-2014  Internet Systems Consortium, Inc. ("ISC")
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   844
  * Copyright (C) 2000-2003  Internet Software Consortium.
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   845
  *
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   846
  * Permission to use, copy, modify, and/or distribute this software for any
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   847
@@ -908,6 +908,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   848
 	RSA *rsa;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   849
 	isc_region_t r;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   850
 	unsigned int e_bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   851
+	unsigned int length;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   852
 #if USE_EVP
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   853
 	EVP_PKEY *pkey;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   854
 #endif
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   855
@@ -915,6 +916,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   856
 	isc_buffer_remainingregion(data, &r);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   857
 	if (r.length == 0)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   858
 		return (ISC_R_SUCCESS);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   859
+	length = r.length;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   860
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   861
 	rsa = RSA_new();
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   862
 	if (rsa == NULL)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   863
@@ -925,8 +927,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   864
 		RSA_free(rsa);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   865
 		return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   866
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   867
-	e_bytes = *r.base++;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   868
-	r.length--;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   869
+	e_bytes = *r.base;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   870
+	isc_region_consume(&r, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   871
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   872
 	if (e_bytes == 0) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   873
 		if (r.length < 2) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   874
@@ -933,9 +935,10 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   875
 			RSA_free(rsa);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   876
 			return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   877
 		}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   878
-		e_bytes = ((*r.base++) << 8);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   879
-		e_bytes += *r.base++;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   880
-		r.length -= 2;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   881
+		e_bytes = (*r.base) << 8;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   882
+		isc_region_consume(&r, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   883
+		e_bytes += *r.base;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   884
+		isc_region_consume(&r, 1);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   885
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   886
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   887
 	if (r.length < e_bytes) {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   888
@@ -943,14 +946,13 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   889
 		return (DST_R_INVALIDPUBLICKEY);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   890
 	}
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   891
 	rsa->e = BN_bin2bn(r.base, e_bytes, NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   892
-	r.base += e_bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   893
-	r.length -= e_bytes;
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   894
+	isc_region_consume(&r, e_bytes);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   895
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   896
 	rsa->n = BN_bin2bn(r.base, r.length, NULL);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   897
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   898
 	key->key_size = BN_num_bits(rsa->n);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   899
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   900
-	isc_buffer_forward(data, r.length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   901
+	isc_buffer_forward(data, length);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   902
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   903
 #if USE_EVP
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   904
 	pkey = EVP_PKEY_new();
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   905
--- old/lib/dns/resolver.c	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   906
+++ new/lib/dns/resolver.c	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   907
@@ -8572,6 +8572,12 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   908
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   909
 	REQUIRE(VALID_RESOLVER(resolver));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   910
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   911
+	/*
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   912
+	 * DH is unsupported for DNSKEYs, see RFC 4034 sec. A.1.
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   913
+	 */
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   914
+	if ((alg == DST_ALG_DH) || (alg == DST_ALG_INDIRECT))
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   915
+		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   916
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   917
 #if USE_ALGLOCK
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   918
 	RWLOCK(&resolver->alglock, isc_rwlocktype_read);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   919
 #endif
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   920
@@ -8591,6 +8597,7 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   921
 #endif
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   922
 	if (found)
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   923
 		return (ISC_FALSE);
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   924
+
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   925
 	return (dst_algorithm_supported(alg));
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   926
 }
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   927
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   928
--- old/lib/isc/include/isc/md5.h	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   929
+++ new/lib/isc/include/isc/md5.h	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   930
@@ -46,7 +46,8 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   931
 #include <isc/lang.h>
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   932
 #include <isc/types.h>
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   933
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   934
-#define ISC_MD5_DIGESTLENGTH 16U
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   935
+#define ISC_MD5_DIGESTLENGTH   16U
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   936
+#define        ISC_MD5_BLOCK_LENGTH    64U
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   937
 
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   938
 typedef struct {
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   939
 	isc_uint32_t buf[4];
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   940
--- old/version	Mon Aug 24 00:18:24 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   941
+++ new/version	Mon Aug 24 00:18:23 2015
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   942
@@ -10,4 +10,4 @@
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   943
 PATCHVER=
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   944
 RELEASETYPE=-ESV
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   945
 RELEASEVER=-R11
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   946
-EXTENSIONS=-P2
2963a732ee80 21674580 Upgrade Solaris to BIND 9.6-ESV-R11-P3
William.D.Johnston <William.D.Johnston@oracle.com>
parents:
diff changeset
   947
+EXTENSIONS=-P3