diff --git a/lee/key_protocol/src/key_management/key_tree/keys_private.rs b/lee/key_protocol/src/key_management/key_tree/keys_private.rs index 8e43de98..18144a47 100644 --- a/lee/key_protocol/src/key_management/key_tree/keys_private.rs +++ b/lee/key_protocol/src/key_management/key_tree/keys_private.rs @@ -34,10 +34,12 @@ impl ChildKeysPrivate { #[must_use] pub fn nth_child(&self, cci: u32) -> Self { + const DOMAIN: &[u8; 21] = b"/LEE/v0.3/Keys/Parent"; + // `parent_hash`` is used to incorporate entropy based on the parent node's keys // to generate the `ssk` and `ccc` values. let mut parent_hash = sha2::Sha256::new(); - parent_hash.update(b"LEE/keys"); + parent_hash.update(DOMAIN); parent_hash.update(self.value.0.private_key_holder.nullifier_secret_key()); parent_hash.update(self.value.0.private_key_holder.viewing_secret_key.d); parent_hash.update(self.value.0.private_key_holder.viewing_secret_key.z); @@ -241,37 +243,37 @@ mod tests { let child_node = ChildKeysPrivate::nth_child(&root_node, 42_u32); let expected_ssk = key_management::secret_holders::SecretSpendingKey([ - 147, 244, 221, 25, 228, 53, 3, 55, 123, 178, 86, 169, 79, 154, 246, 163, 157, 33, 28, - 244, 16, 118, 43, 39, 193, 5, 29, 152, 132, 154, 95, 26, + 109, 21, 107, 97, 112, 105, 143, 134, 185, 35, 168, 205, 138, 110, 125, 155, 193, 57, + 36, 19, 214, 180, 194, 46, 107, 235, 43, 80, 132, 19, 254, 231, ]); let expected_ccc = [ - 18, 103, 41, 76, 65, 124, 115, 176, 148, 75, 103, 77, 166, 183, 172, 236, 189, 17, 53, - 249, 173, 195, 106, 161, 244, 2, 14, 94, 158, 49, 84, 164, + 64, 218, 41, 59, 115, 126, 128, 3, 77, 77, 54, 84, 87, 253, 181, 112, 244, 254, 176, + 243, 86, 127, 219, 255, 64, 164, 218, 129, 83, 65, 176, 179, ]; let expected_ask = lee_core::AuthorizationSecretKey([ - 11, 214, 158, 158, 46, 193, 62, 186, 255, 46, 72, 251, 83, 23, 191, 113, 182, 211, 86, - 144, 187, 225, 221, 167, 83, 141, 174, 223, 217, 171, 50, 87, + 33, 29, 199, 63, 191, 14, 196, 15, 51, 70, 236, 125, 93, 120, 78, 99, 90, 239, 220, + 168, 226, 46, 208, 238, 70, 117, 17, 28, 163, 89, 177, 129, ]); let expected_nsk: NullifierSecretKey = [ - 89, 206, 155, 18, 194, 73, 132, 144, 61, 65, 163, 8, 52, 169, 8, 140, 255, 86, 219, - 218, 141, 64, 238, 76, 118, 16, 30, 186, 23, 70, 79, 222, + 97, 83, 94, 170, 125, 55, 27, 105, 106, 42, 73, 99, 169, 221, 210, 124, 117, 52, 98, + 131, 98, 202, 79, 95, 151, 196, 239, 242, 6, 127, 160, 160, ]; let expected_npk = lee_core::NullifierPublicKey([ - 29, 80, 209, 224, 61, 151, 130, 4, 70, 165, 106, 126, 91, 188, 92, 203, 46, 39, 37, 11, - 136, 10, 158, 67, 32, 147, 250, 231, 112, 76, 133, 178, + 81, 199, 141, 154, 209, 135, 105, 75, 106, 240, 124, 190, 245, 233, 152, 34, 225, 234, + 212, 221, 121, 68, 255, 97, 231, 142, 26, 54, 169, 53, 69, 242, ]); let expected_vsk = ViewingSecretKey::new( [ - 87, 215, 216, 10, 193, 212, 245, 90, 212, 110, 113, 151, 70, 34, 227, 123, 166, - 189, 105, 219, 135, 194, 119, 50, 69, 66, 100, 121, 13, 217, 34, 135, + 14, 173, 255, 235, 8, 1, 246, 119, 243, 18, 235, 31, 209, 92, 142, 7, 175, 223, + 228, 201, 173, 165, 148, 137, 141, 160, 175, 161, 110, 139, 54, 183, ], [ - 103, 65, 25, 44, 172, 134, 69, 145, 152, 56, 155, 81, 211, 101, 141, 240, 222, 39, - 175, 218, 137, 42, 131, 133, 193, 25, 222, 112, 3, 80, 255, 98, + 10, 253, 101, 172, 213, 221, 88, 85, 178, 89, 218, 73, 28, 212, 1, 2, 105, 161, + 180, 24, 49, 6, 182, 155, 22, 220, 121, 42, 175, 59, 233, 109, ], ); @@ -279,68 +281,69 @@ mod tests { // implementation, unlike every other vector here; its trailing 32 bytes are // rho = SHA3-512(d || 3)[..32] per FIPS-203, checked against the independent `d`. let expected_vpk: [u8; 1184] = [ - 70, 98, 188, 35, 130, 206, 210, 76, 99, 161, 241, 144, 206, 228, 9, 64, 229, 7, 98, 67, - 101, 1, 53, 181, 205, 7, 43, 212, 16, 207, 248, 34, 80, 88, 18, 51, 104, 163, 6, 33, - 119, 127, 223, 148, 109, 72, 52, 53, 190, 193, 153, 2, 68, 97, 142, 118, 59, 64, 6, - 108, 56, 99, 136, 111, 50, 130, 13, 90, 73, 154, 85, 126, 246, 146, 39, 18, 104, 88, 8, - 90, 13, 109, 124, 22, 52, 104, 24, 244, 179, 19, 84, 85, 63, 14, 138, 53, 185, 167, 15, - 82, 218, 67, 155, 184, 88, 58, 122, 136, 189, 12, 179, 96, 12, 25, 224, 197, 72, 222, - 85, 41, 48, 228, 133, 135, 139, 29, 213, 250, 177, 85, 75, 201, 115, 242, 47, 156, 145, - 40, 50, 33, 85, 168, 4, 85, 83, 198, 207, 246, 220, 138, 131, 166, 134, 42, 114, 116, - 190, 164, 15, 64, 227, 8, 214, 88, 1, 118, 197, 79, 179, 194, 18, 184, 84, 163, 163, - 12, 49, 140, 115, 84, 222, 136, 117, 140, 215, 169, 179, 240, 118, 51, 68, 130, 99, - 152, 170, 26, 7, 54, 188, 81, 76, 196, 25, 133, 147, 218, 136, 212, 42, 27, 178, 48, - 129, 207, 167, 137, 35, 154, 1, 137, 213, 166, 105, 107, 46, 1, 103, 29, 18, 132, 29, - 210, 150, 10, 117, 129, 45, 248, 97, 38, 245, 113, 200, 165, 130, 87, 161, 100, 25, - 132, 53, 135, 154, 139, 86, 92, 9, 171, 130, 72, 75, 228, 212, 180, 1, 7, 67, 81, 208, - 178, 239, 37, 182, 156, 196, 113, 3, 198, 191, 60, 24, 131, 58, 10, 14, 35, 249, 38, - 144, 97, 22, 66, 27, 105, 153, 210, 173, 182, 54, 177, 122, 180, 191, 7, 149, 127, 125, - 214, 46, 9, 0, 88, 246, 69, 33, 166, 120, 47, 138, 18, 53, 160, 215, 76, 93, 122, 103, - 139, 90, 160, 78, 149, 31, 53, 161, 46, 92, 228, 161, 169, 149, 166, 48, 48, 76, 229, - 102, 68, 80, 37, 137, 220, 44, 39, 143, 252, 40, 242, 90, 114, 140, 17, 191, 158, 225, - 102, 201, 181, 190, 215, 164, 100, 131, 76, 7, 126, 199, 151, 24, 59, 50, 94, 248, 132, - 4, 113, 89, 50, 115, 199, 206, 48, 1, 224, 88, 19, 32, 20, 196, 255, 71, 197, 180, 211, - 139, 139, 131, 88, 204, 107, 123, 132, 145, 4, 74, 252, 106, 165, 113, 81, 79, 4, 111, - 140, 244, 15, 216, 86, 42, 253, 243, 29, 21, 55, 46, 200, 242, 199, 216, 97, 49, 53, 3, - 134, 221, 178, 117, 192, 40, 149, 6, 212, 32, 222, 218, 100, 75, 200, 171, 19, 155, 45, - 186, 248, 180, 147, 140, 191, 242, 6, 96, 69, 200, 74, 213, 116, 0, 204, 209, 154, 220, - 219, 44, 5, 216, 40, 0, 109, 4, 233, 236, 130, 181, 186, 188, 115, 59, 174, 207, 74, - 19, 210, 41, 162, 1, 203, 141, 58, 72, 196, 219, 186, 113, 236, 138, 186, 107, 115, - 119, 254, 42, 201, 237, 2, 62, 89, 176, 52, 47, 59, 36, 188, 214, 185, 185, 187, 191, - 34, 160, 29, 185, 184, 15, 12, 210, 97, 252, 160, 38, 141, 164, 143, 33, 68, 6, 25, - 170, 192, 134, 24, 178, 164, 137, 57, 95, 245, 188, 224, 182, 94, 5, 52, 141, 104, 26, - 41, 8, 39, 98, 226, 244, 3, 237, 90, 24, 201, 250, 92, 120, 152, 26, 150, 230, 71, 192, - 154, 74, 201, 180, 62, 16, 140, 15, 167, 90, 16, 96, 65, 185, 232, 145, 63, 212, 156, - 160, 191, 38, 207, 46, 131, 97, 51, 98, 142, 116, 138, 92, 104, 186, 56, 229, 140, 92, - 196, 193, 204, 107, 139, 22, 34, 0, 39, 50, 10, 159, 222, 115, 4, 90, 170, 64, 150, - 116, 37, 172, 86, 24, 144, 248, 126, 251, 144, 119, 73, 36, 7, 50, 102, 14, 134, 216, - 16, 38, 185, 0, 29, 185, 191, 2, 82, 3, 14, 225, 24, 170, 74, 118, 158, 180, 18, 95, 1, - 192, 120, 68, 112, 21, 2, 130, 16, 235, 133, 67, 18, 171, 147, 179, 159, 146, 236, 162, - 254, 152, 200, 102, 104, 131, 71, 246, 134, 124, 64, 97, 118, 89, 159, 188, 166, 104, - 59, 7, 187, 224, 124, 194, 38, 248, 132, 233, 231, 53, 96, 208, 172, 11, 203, 9, 92, - 55, 63, 164, 114, 118, 2, 56, 63, 197, 92, 91, 98, 196, 37, 25, 23, 206, 172, 249, 19, - 156, 165, 91, 36, 216, 17, 195, 163, 192, 37, 86, 98, 44, 201, 74, 163, 117, 157, 174, - 74, 34, 250, 183, 63, 194, 91, 131, 1, 12, 5, 147, 136, 176, 107, 84, 34, 69, 230, 153, - 106, 87, 160, 68, 170, 75, 39, 230, 172, 113, 91, 8, 231, 244, 51, 23, 124, 43, 32, - 176, 141, 43, 153, 5, 24, 107, 161, 216, 71, 177, 44, 195, 134, 28, 17, 127, 137, 245, - 23, 250, 232, 98, 157, 186, 199, 224, 162, 34, 155, 180, 65, 82, 234, 1, 147, 162, 98, - 128, 194, 121, 90, 150, 183, 35, 250, 124, 207, 33, 70, 65, 25, 195, 143, 228, 70, 193, - 86, 73, 75, 128, 36, 219, 75, 143, 231, 91, 77, 223, 216, 163, 62, 185, 207, 111, 215, - 163, 49, 65, 128, 10, 247, 78, 88, 230, 127, 222, 203, 36, 149, 210, 171, 76, 26, 105, - 85, 18, 139, 24, 80, 148, 231, 58, 194, 153, 87, 84, 103, 210, 79, 236, 203, 52, 95, - 74, 164, 84, 192, 99, 40, 215, 123, 114, 244, 102, 89, 97, 160, 255, 212, 68, 206, 50, - 133, 145, 132, 82, 93, 117, 39, 227, 134, 84, 80, 211, 28, 110, 163, 127, 19, 2, 22, - 46, 124, 53, 213, 12, 31, 161, 70, 153, 251, 105, 121, 52, 145, 124, 7, 203, 107, 252, - 33, 145, 70, 243, 82, 69, 241, 20, 121, 54, 201, 135, 58, 183, 17, 161, 150, 62, 69, - 76, 253, 34, 206, 192, 171, 119, 101, 113, 128, 185, 32, 185, 185, 84, 17, 59, 40, 40, - 52, 20, 98, 81, 85, 8, 42, 58, 189, 65, 219, 101, 124, 72, 44, 108, 128, 147, 120, 123, - 171, 213, 17, 5, 157, 200, 141, 55, 118, 174, 232, 160, 155, 36, 117, 193, 24, 2, 117, - 204, 209, 199, 72, 233, 38, 99, 88, 85, 122, 160, 11, 88, 84, 79, 232, 50, 34, 195, - 136, 128, 47, 128, 186, 109, 179, 129, 205, 26, 81, 65, 242, 17, 13, 250, 48, 41, 220, - 71, 126, 3, 23, 221, 52, 196, 62, 153, 102, 167, 242, 188, 195, 89, 170, 91, 131, 6, - 157, 28, 78, 58, 201, 176, 185, 202, 90, 233, 112, 172, 105, 2, 129, 252, 38, 101, 194, - 181, 7, 196, 76, 68, 114, 20, 208, 215, 62, 49, 209, 90, 29, 238, 78, 190, 42, 134, - 255, 44, 171, 200, 73, 155, 242, 162, 87, 76, 97, 216, 137, 95, 83, + 153, 195, 136, 113, 42, 34, 28, 116, 169, 190, 53, 81, 59, 6, 163, 170, 199, 98, 201, + 54, 24, 171, 26, 191, 144, 248, 95, 63, 199, 113, 27, 67, 97, 49, 210, 66, 190, 74, 54, + 252, 12, 143, 197, 243, 27, 111, 198, 43, 23, 146, 3, 183, 171, 41, 72, 92, 46, 112, + 184, 160, 0, 25, 155, 109, 203, 70, 196, 88, 135, 121, 147, 12, 96, 230, 205, 217, 66, + 55, 78, 215, 196, 6, 8, 160, 186, 73, 56, 218, 76, 10, 31, 148, 182, 170, 131, 26, 101, + 210, 125, 125, 242, 160, 146, 35, 195, 59, 182, 55, 130, 198, 67, 109, 245, 66, 229, + 226, 154, 189, 112, 5, 160, 39, 7, 139, 152, 58, 197, 167, 81, 160, 37, 96, 175, 250, + 78, 232, 181, 152, 131, 41, 92, 45, 33, 184, 142, 25, 157, 62, 166, 111, 148, 137, 143, + 241, 176, 74, 176, 243, 178, 26, 232, 204, 119, 181, 17, 128, 91, 134, 8, 90, 35, 11, + 124, 98, 76, 76, 43, 82, 135, 85, 215, 72, 177, 37, 218, 131, 158, 139, 59, 155, 104, + 13, 13, 150, 34, 192, 54, 115, 90, 44, 84, 132, 51, 174, 155, 64, 26, 42, 246, 28, 30, + 252, 136, 227, 69, 174, 27, 233, 56, 214, 102, 117, 141, 177, 133, 181, 177, 8, 150, + 85, 104, 243, 123, 22, 25, 7, 42, 152, 226, 88, 93, 213, 201, 197, 235, 17, 185, 84, + 57, 161, 179, 37, 251, 129, 62, 214, 48, 161, 247, 124, 147, 120, 180, 197, 9, 83, 63, + 38, 182, 206, 20, 116, 28, 143, 134, 173, 55, 54, 1, 254, 86, 9, 67, 213, 144, 95, 48, + 29, 47, 119, 156, 188, 70, 18, 37, 202, 65, 173, 22, 177, 14, 244, 120, 166, 20, 82, + 203, 162, 24, 56, 240, 154, 249, 11, 31, 182, 55, 71, 171, 196, 3, 20, 151, 112, 159, + 131, 91, 201, 80, 116, 228, 6, 184, 140, 55, 205, 4, 91, 116, 46, 224, 32, 216, 146, + 46, 232, 75, 156, 109, 54, 193, 146, 248, 2, 49, 17, 102, 214, 150, 202, 1, 6, 110, 2, + 202, 34, 162, 107, 205, 241, 123, 83, 108, 152, 145, 231, 219, 158, 24, 171, 48, 121, + 2, 193, 15, 21, 9, 173, 172, 30, 111, 58, 94, 0, 18, 1, 140, 7, 52, 209, 214, 59, 127, + 228, 30, 154, 102, 119, 233, 170, 160, 120, 108, 154, 117, 28, 23, 70, 56, 35, 11, 9, + 39, 198, 86, 79, 119, 213, 88, 193, 5, 15, 214, 139, 199, 236, 243, 159, 171, 185, 22, + 35, 216, 20, 149, 137, 17, 74, 117, 165, 55, 116, 139, 171, 181, 204, 196, 104, 178, + 246, 103, 73, 249, 165, 108, 237, 234, 155, 133, 35, 139, 98, 136, 51, 220, 98, 181, + 40, 151, 80, 58, 242, 84, 206, 242, 199, 145, 156, 160, 61, 116, 100, 77, 89, 184, 213, + 119, 25, 4, 107, 26, 23, 87, 101, 85, 68, 115, 221, 171, 170, 123, 246, 26, 51, 108, + 13, 101, 217, 17, 0, 103, 110, 15, 136, 70, 255, 12, 197, 89, 225, 158, 25, 116, 32, + 53, 169, 122, 4, 32, 108, 30, 181, 180, 142, 250, 141, 217, 8, 33, 111, 89, 48, 196, + 90, 158, 207, 213, 165, 97, 196, 21, 193, 114, 199, 167, 123, 95, 118, 101, 107, 130, + 161, 186, 67, 27, 27, 161, 192, 157, 252, 98, 131, 186, 124, 64, 224, 199, 126, 47, + 230, 66, 92, 97, 38, 0, 35, 197, 178, 219, 121, 240, 149, 197, 18, 165, 39, 3, 137, 58, + 8, 227, 152, 124, 247, 103, 85, 150, 194, 140, 108, 96, 151, 57, 117, 182, 177, 47, + 168, 112, 184, 214, 42, 48, 65, 3, 30, 179, 187, 137, 179, 122, 98, 210, 3, 7, 102, + 235, 3, 145, 107, 200, 72, 4, 153, 135, 43, 202, 155, 170, 174, 148, 161, 37, 43, 219, + 16, 229, 65, 45, 225, 49, 126, 168, 215, 93, 153, 179, 49, 108, 51, 131, 227, 82, 134, + 77, 28, 175, 237, 136, 49, 137, 164, 197, 224, 42, 85, 250, 48, 109, 196, 70, 12, 236, + 65, 121, 254, 3, 37, 183, 201, 124, 246, 130, 174, 89, 7, 81, 235, 147, 148, 40, 147, + 174, 204, 99, 22, 150, 133, 195, 22, 108, 119, 59, 21, 104, 37, 251, 61, 92, 82, 9, + 122, 73, 48, 97, 82, 52, 170, 10, 79, 134, 17, 8, 247, 96, 108, 186, 230, 6, 138, 90, + 16, 36, 56, 45, 179, 121, 179, 17, 1, 174, 106, 4, 170, 81, 185, 60, 47, 201, 26, 67, + 199, 160, 52, 60, 63, 12, 82, 114, 122, 87, 166, 141, 168, 101, 177, 129, 197, 127, + 226, 166, 159, 168, 108, 218, 112, 31, 246, 4, 73, 134, 155, 197, 192, 8, 71, 135, 163, + 9, 122, 183, 127, 156, 60, 178, 124, 135, 129, 7, 185, 105, 232, 250, 199, 173, 80, 18, + 15, 118, 183, 3, 105, 56, 189, 107, 157, 44, 101, 103, 60, 99, 69, 187, 220, 146, 116, + 202, 85, 115, 219, 87, 241, 209, 39, 14, 184, 154, 236, 211, 31, 117, 106, 24, 68, 233, + 161, 49, 229, 105, 179, 58, 171, 215, 194, 178, 6, 243, 155, 2, 148, 202, 45, 145, 118, + 210, 233, 112, 208, 186, 157, 150, 68, 148, 94, 184, 49, 69, 36, 16, 33, 89, 36, 188, + 156, 122, 117, 124, 48, 83, 99, 153, 72, 148, 163, 14, 116, 15, 162, 169, 50, 10, 244, + 155, 136, 105, 76, 118, 209, 144, 130, 88, 102, 85, 234, 137, 222, 195, 37, 93, 169, + 179, 227, 195, 162, 203, 242, 19, 175, 252, 19, 197, 230, 97, 174, 167, 72, 10, 169, + 184, 26, 249, 41, 49, 199, 54, 205, 183, 178, 241, 5, 35, 142, 227, 196, 245, 2, 91, + 201, 6, 41, 62, 214, 158, 48, 39, 106, 189, 134, 27, 86, 2, 83, 27, 170, 30, 140, 103, + 7, 87, 65, 87, 163, 117, 188, 132, 38, 15, 116, 251, 23, 157, 113, 156, 165, 96, 41, + 112, 103, 3, 81, 200, 3, 166, 137, 98, 14, 86, 183, 200, 161, 100, 212, 199, 206, 167, + 114, 15, 235, 131, 103, 77, 103, 188, 254, 5, 30, 172, 183, 174, 176, 252, 9, 29, 90, + 78, 178, 188, 101, 158, 74, 200, 231, 75, 89, 233, 113, 206, 254, 122, 136, 41, 148, + 20, 10, 217, 144, 177, 108, 42, 124, 210, 7, 40, 138, 167, 223, 156, 151, 106, 236, 94, + 84, 183, 48, 39, 81, 77, 54, 129, 140, 133, 183, 107, 9, 8, 193, 99, 90, 185, 41, 229, + 43, 138, 11, 86, 161, 39, 124, 40, 114, 119, 122, 101, 124, 226, 227, 192, 241, 54, + 182, 89, 37, 186, 17, 90, 171, 245, 185, 119, 76, 21, 11, 170, 146, 46, 110, 228, 51, + 213, 162, 5, 193, 211, 153, 112, 148, 208, 43, 3, 254, 16, 173, 51, 88, 252, 219, 69, + 48, 242, 206, 198, 185, 105, 26, ]; assert!(expected_ssk == child_node.value.0.secret_spending_key);