From 27f5bcf1ae2b356c9508a47aa42512b2eb990092 Mon Sep 17 00:00:00 2001 From: blakehartin Date: Sun, 8 Mar 2026 19:09:50 -0700 Subject: [PATCH] fix hybrideds for legacy compat --- sign/hybrideds/hybrideds.go | 4 ++-- sign/hybrideds/hybrideds_test.go | 28 +++++++++++++++++++----- sign/mldsa/mldsa44/dilithium.go | 7 ++++++ sign/mldsa/mldsa44/internal/dilithium.go | 22 ++++++++++++++++++- 4 files changed, 53 insertions(+), 8 deletions(-) diff --git a/sign/hybrideds/hybrideds.go b/sign/hybrideds/hybrideds.go index c2522e4..6362c9a 100644 --- a/sign/hybrideds/hybrideds.go +++ b/sign/hybrideds/hybrideds.go @@ -71,7 +71,7 @@ const ( PublicKeySize = ed25519.PublicKeySize + mldsa44.PublicKeySize + SlhDsaPublicKeySize PrivateKeySize = ed25519.PrivateKeySize + mldsa44.PrivateKeySize + mldsa44.PublicKeySize + SlhDsaPrivateKeySize - SeedSizeSlhDsa = 96 + SeedSizeSlhDsa = 96 SeedSize = ed25519.SeedSize + mldsa44.SeedSize + SeedSizeSlhDsa CRYPTO_MSG_LENGTH = 32 DILITHIUM_ED25519_SPHINCS_COMPACT_ID = byte(1) @@ -232,7 +232,7 @@ func GenerateKey(random io.Reader) (pub *PublicKey, priv *PrivateKey, err error) return nil, nil, err } - mldsaPubKey, mlDsaPriKey, err := mldsa44.GenerateKey(random) + mldsaPubKey, mlDsaPriKey, err := mldsa44.GenerateKeyInternal(random, false) if err != nil { return nil, nil, err } diff --git a/sign/hybrideds/hybrideds_test.go b/sign/hybrideds/hybrideds_test.go index b468b23..dd7a24e 100644 --- a/sign/hybrideds/hybrideds_test.go +++ b/sign/hybrideds/hybrideds_test.go @@ -12,7 +12,8 @@ const ( ) var ( - CommonSeed = [SeedSize]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159} + CommonSeed = [SeedSize]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159} + DeterministicSeed = [SeedSize]byte{164, 112, 179, 200, 61, 89, 69, 78, 1, 89, 229, 44, 54, 201, 107, 104, 54, 62, 47, 58, 160, 249, 241, 178, 162, 136, 246, 83, 253, 89, 108, 138, 223, 41, 220, 205, 23, 89, 21, 10, 35, 47, 200, 207, 80, 239, 219, 143, 117, 90, 17, 81, 123, 238, 48, 187, 49, 28, 23, 95, 251, 233, 247, 76, 162, 119, 56, 52, 120, 78, 179, 99, 38, 91, 246, 87, 201, 159, 152, 122, 94, 47, 110, 203, 200, 250, 99, 9, 172, 241, 11, 195, 231, 177, 73, 250, 221, 22, 173, 39, 38, 112, 212, 31, 61, 97, 206, 203, 168, 175, 253, 161, 189, 135, 204, 75, 56, 65, 107, 240, 239, 158, 180, 155, 254, 171, 213, 115, 94, 105, 96, 63, 162, 43, 34, 135, 20, 255, 183, 35, 18, 9, 210, 230, 214, 185, 23, 134, 137, 205, 183, 208, 118, 1, 84, 200, 204, 130, 143, 241} ) func TestGenKey(t *testing.T) { @@ -76,7 +77,7 @@ func TestGetKeys(t *testing.T) { if err != nil { t.Fatalf("failed") } - priKeyBytes := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 3, 161, 7, 191, 243, 206, 16, 190, 29, 112, 221, 24, 231, 75, 192, 153, 103, 228, 214, 48, 155, 165, 13, 95, 29, 220, 134, 100, 18, 85, 49, 184, 21, 33, 239, 204, 102, 185, 115, 50, 89, 12, 100, 241, 96, 135, 180, 153, 17, 137, 66, 118, 74, 39, 75, 54, 72, 30, 184, 225, 49, 120, 2, 99, 11, 103, 15, 179, 125, 232, 56, 52, 52, 140, 151, 28, 198, 100, 238, 138, 183, 246, 66, 109, 93, 105, 184, 138, 101, 22, 97, 229, 209, 122, 254, 133, 244, 222, 150, 120, 172, 244, 138, 134, 6, 192, 242, 164, 119, 244, 90, 170, 101, 139, 53, 194, 192, 221, 91, 99, 34, 197, 23, 174, 10, 123, 49, 128, 220, 52, 40, 214, 230, 156, 192, 170, 148, 66, 180, 218, 36, 182, 255, 159, 41, 52, 132, 150, 236, 114, 143, 178, 107, 15, 183, 113, 90, 84, 143, 93, 156, 52, 114, 228, 64, 105, 90, 162, 9, 36, 39, 69, 160, 200, 69, 216, 52, 74, 33, 132, 104, 163, 6, 8, 10, 193, 37, 203, 164, 129, 2, 65, 17, 3, 153, 105, 0, 193, 0, 18, 4, 33, 24, 22, 34, 91, 24, 9, 35, 194, 113, 201, 48, 44, 8, 56, 42, 136, 66, 34, 89, 52, 97, 32, 185, 8, 83, 38, 98, 218, 134, 41, 73, 146, 140, 96, 36, 13, 161, 32, 36, 20, 22, 9, 2, 71, 37, 200, 194, 144, 8, 163, 105, 11, 33, 133, 212, 48, 72, 83, 38, 0, 65, 34, 100, 226, 18, 48, 18, 198, 144, 136, 0, 77, 2, 66, 32, 89, 130, 64, 153, 130, 49, 201, 130, 33, 28, 164, 80, 12, 137, 4, 74, 22, 97, 219, 48, 13, 225, 166, 145, 68, 54, 97, 209, 18, 134, 145, 200, 5, 8, 70, 45, 26, 180, 100, 34, 54, 96, 212, 180, 0, 200, 184, 0, 28, 41, 44, 220, 134, 69, 3, 130, 9, 73, 176, 100, 17, 68, 76, 209, 128, 140, 210, 132, 8, 82, 22, 114, 74, 128, 113, 28, 197, 108, 147, 0, 98, 67, 16, 140, 88, 8, 72, 16, 69, 113, 99, 34, 10, 27, 17, 136, 226, 182, 9, 17, 201, 109, 192, 22, 138, 90, 182, 41, 196, 132, 72, 80, 24, 1, 132, 194, 1, 200, 196, 33, 16, 7, 64, 162, 144, 5, 26, 164, 68, 82, 68, 140, 24, 52, 38, 4, 49, 142, 227, 32, 104, 35, 1, 18, 9, 185, 100, 32, 160, 48, 193, 34, 113, 64, 54, 48, 11, 184, 17, 196, 68, 104, 4, 181, 9, 219, 0, 0, 83, 66, 69, 73, 50, 68, 228, 68, 110, 8, 197, 36, 217, 194, 133, 25, 196, 97, 216, 150, 45, 66, 20, 108, 9, 162, 4, 220, 68, 10, 24, 20, 41, 137, 194, 105, 99, 2, 41, 34, 48, 10, 161, 180, 104, 34, 149, 137, 11, 57, 76, 210, 68, 42, 9, 48, 146, 8, 192, 112, 25, 50, 133, 164, 8, 2, 12, 41, 42, 217, 24, 98, 212, 36, 142, 34, 57, 65, 76, 132, 49, 35, 24, 100, 3, 149, 112, 153, 152, 68, 88, 136, 137, 225, 16, 98, 33, 17, 70, 98, 34, 128, 225, 68, 49, 224, 20, 65, 152, 32, 49, 195, 184, 12, 0, 128, 105, 208, 70, 45, 11, 51, 70, 153, 144, 97, 33, 66, 73, 153, 68, 45, 156, 184, 49, 216, 132, 132, 1, 73, 66, 225, 36, 14, 226, 182, 8, 11, 67, 109, 66, 8, 146, 145, 192, 80, 11, 162, 41, 156, 2, 101, 8, 5, 110, 12, 183, 129, 148, 194, 5, 152, 34, 64, 152, 180, 32, 4, 160, 45, 82, 8, 46, 0, 66, 48, 26, 41, 65, 192, 164, 49, 2, 20, 110, 65, 144, 44, 35, 7, 82, 228, 4, 76, 155, 148, 48, 68, 4, 13, 19, 197, 40, 2, 198, 112, 148, 72, 0, 202, 32, 98, 68, 200, 8, 224, 34, 65, 28, 70, 129, 162, 72, 140, 139, 196, 45, 99, 8, 134, 161, 6, 144, 27, 66, 4, 17, 130, 80, 10, 67, 78, 32, 37, 76, 1, 57, 78, 137, 40, 18, 25, 2, 48, 154, 50, 36, 3, 153, 45, 75, 48, 109, 28, 146, 32, 3, 8, 0, 68, 40, 74, 131, 196, 5, 3, 70, 104, 201, 198, 33, 16, 20, 105, 26, 16, 14, 24, 19, 100, 84, 50, 134, 27, 25, 137, 80, 134, 81, 72, 192, 13, 64, 54, 112, 192, 68, 69, 33, 35, 9, 32, 145, 69, 35, 128, 101, 90, 200, 68, 82, 50, 70, 138, 64, 104, 200, 146, 65, 194, 56, 141, 67, 66, 50, 32, 57, 112, 33, 130, 65, 28, 64, 37, 195, 48, 142, 26, 198, 77, 99, 148, 72, 193, 36, 100, 26, 168, 64, 33, 136, 145, 88, 70, 140, 226, 16, 138, 203, 128, 136, 18, 66, 18, 9, 71, 50, 164, 68, 40, 65, 32, 106, 4, 50, 68, 218, 160, 104, 97, 70, 33, 130, 70, 4, 195, 194, 112, 80, 196, 145, 220, 48, 9, 140, 68, 97, 81, 196, 97, 25, 196, 0, 4, 52, 2, 27, 161, 77, 163, 54, 74, 145, 152, 80, 136, 68, 98, 16, 67, 33, 17, 3, 137, 16, 145, 129, 212, 166, 137, 4, 72, 98, 20, 16, 32, 192, 50, 102, 203, 0, 38, 146, 176, 12, 153, 32, 114, 16, 137, 45, 146, 8, 70, 202, 52, 16, 2, 162, 49, 201, 20, 13, 210, 30, 111, 56, 116, 94, 168, 124, 29, 78, 165, 34, 152, 13, 250, 78, 3, 157, 230, 179, 202, 28, 55, 249, 65, 67, 173, 127, 40, 239, 22, 103, 188, 137, 116, 5, 191, 155, 101, 183, 133, 123, 179, 141, 118, 74, 222, 66, 154, 92, 51, 163, 28, 49, 92, 92, 188, 166, 71, 7, 69, 255, 99, 178, 203, 0, 199, 116, 74, 27, 204, 208, 9, 103, 248, 165, 197, 202, 31, 82, 32, 146, 1, 224, 69, 57, 194, 130, 122, 56, 120, 73, 164, 229, 70, 8, 238, 57, 229, 97, 134, 125, 65, 248, 91, 25, 233, 245, 144, 109, 27, 92, 201, 109, 209, 46, 84, 221, 151, 134, 202, 94, 63, 1, 237, 166, 150, 136, 13, 130, 36, 101, 70, 143, 233, 86, 46, 208, 163, 18, 7, 251, 44, 20, 209, 223, 221, 31, 168, 89, 77, 187, 160, 74, 248, 193, 41, 173, 38, 149, 235, 229, 83, 183, 130, 174, 166, 175, 15, 42, 101, 239, 239, 210, 232, 133, 92, 24, 91, 69, 187, 97, 40, 81, 242, 229, 31, 174, 9, 106, 219, 54, 151, 152, 185, 92, 142, 118, 204, 207, 195, 154, 135, 7, 81, 175, 150, 176, 29, 228, 223, 116, 120, 55, 12, 63, 115, 184, 224, 52, 124, 55, 115, 59, 5, 200, 197, 214, 248, 7, 67, 182, 69, 3, 60, 149, 30, 70, 81, 237, 59, 210, 152, 237, 9, 42, 29, 172, 123, 134, 183, 155, 95, 180, 70, 83, 33, 163, 78, 247, 193, 4, 203, 192, 219, 21, 25, 33, 159, 220, 145, 241, 12, 187, 127, 180, 188, 249, 12, 112, 226, 142, 130, 225, 35, 127, 125, 145, 27, 126, 199, 100, 227, 74, 214, 79, 157, 168, 101, 119, 5, 45, 158, 2, 215, 40, 240, 89, 94, 78, 193, 249, 11, 94, 245, 56, 80, 213, 45, 215, 74, 159, 67, 157, 1, 20, 212, 159, 6, 85, 52, 4, 158, 211, 148, 2, 174, 125, 122, 130, 111, 131, 184, 130, 196, 135, 227, 68, 15, 105, 211, 85, 183, 255, 13, 144, 128, 173, 43, 140, 85, 33, 45, 37, 30, 41, 251, 255, 122, 110, 30, 132, 125, 221, 40, 64, 134, 75, 216, 5, 127, 182, 237, 119, 15, 19, 19, 122, 155, 26, 35, 197, 245, 7, 41, 129, 145, 37, 159, 71, 197, 130, 77, 18, 135, 213, 24, 173, 30, 29, 195, 193, 57, 157, 176, 205, 199, 57, 74, 91, 243, 146, 178, 91, 241, 172, 32, 61, 141, 203, 182, 94, 160, 4, 66, 78, 55, 25, 146, 92, 16, 235, 39, 115, 69, 126, 178, 244, 115, 55, 123, 63, 118, 133, 175, 117, 114, 186, 177, 178, 130, 197, 233, 171, 0, 170, 217, 65, 115, 215, 15, 70, 9, 69, 87, 243, 116, 245, 141, 113, 113, 161, 242, 85, 128, 181, 33, 130, 215, 60, 42, 65, 49, 244, 174, 131, 187, 211, 211, 166, 95, 165, 2, 54, 193, 131, 56, 107, 24, 151, 14, 241, 72, 46, 219, 219, 91, 197, 58, 40, 138, 231, 27, 153, 100, 127, 39, 142, 119, 196, 134, 175, 217, 240, 158, 151, 98, 166, 248, 127, 198, 7, 152, 135, 136, 82, 43, 54, 42, 103, 87, 51, 123, 93, 251, 150, 21, 229, 218, 164, 247, 145, 228, 55, 91, 80, 116, 231, 246, 82, 38, 205, 233, 25, 237, 213, 39, 162, 142, 5, 174, 119, 153, 253, 9, 190, 171, 69, 101, 17, 150, 221, 249, 20, 115, 108, 44, 37, 52, 195, 89, 120, 172, 110, 93, 184, 36, 47, 191, 172, 67, 75, 127, 237, 215, 231, 10, 112, 48, 156, 217, 33, 115, 219, 9, 84, 125, 226, 41, 211, 95, 109, 13, 192, 91, 128, 207, 113, 171, 235, 40, 87, 120, 124, 240, 239, 13, 17, 11, 96, 238, 15, 145, 235, 132, 0, 207, 112, 101, 251, 86, 143, 46, 56, 119, 125, 2, 242, 127, 52, 23, 75, 86, 163, 236, 76, 160, 151, 134, 2, 93, 152, 171, 180, 248, 165, 195, 75, 184, 125, 104, 86, 91, 56, 124, 127, 89, 167, 173, 103, 175, 36, 34, 57, 30, 112, 1, 32, 15, 125, 148, 182, 128, 193, 248, 141, 123, 233, 192, 36, 84, 207, 113, 148, 164, 90, 46, 64, 23, 189, 188, 206, 84, 15, 35, 255, 185, 194, 1, 196, 58, 206, 138, 99, 76, 168, 105, 177, 135, 115, 87, 119, 68, 81, 164, 145, 80, 232, 213, 232, 229, 126, 201, 175, 176, 241, 3, 21, 180, 176, 202, 126, 26, 233, 211, 207, 227, 73, 91, 49, 91, 27, 237, 130, 149, 53, 203, 89, 74, 122, 169, 250, 132, 151, 229, 207, 96, 227, 220, 5, 132, 100, 255, 228, 57, 138, 133, 184, 147, 92, 152, 98, 194, 233, 112, 34, 139, 99, 4, 116, 99, 68, 231, 155, 45, 37, 46, 152, 23, 27, 250, 156, 234, 22, 244, 38, 98, 121, 17, 172, 30, 75, 4, 14, 37, 183, 123, 248, 218, 37, 243, 71, 62, 24, 158, 210, 43, 223, 154, 137, 235, 18, 3, 247, 113, 193, 239, 179, 141, 82, 227, 90, 223, 163, 158, 28, 10, 239, 154, 161, 141, 60, 214, 101, 34, 93, 53, 185, 251, 70, 150, 123, 51, 205, 143, 240, 150, 30, 36, 78, 194, 50, 252, 2, 117, 192, 91, 150, 173, 67, 51, 208, 239, 205, 168, 142, 255, 205, 18, 73, 148, 201, 111, 160, 55, 255, 82, 242, 97, 142, 95, 216, 218, 162, 57, 60, 31, 23, 10, 124, 11, 227, 174, 226, 125, 101, 112, 119, 66, 59, 82, 236, 97, 198, 196, 49, 41, 235, 50, 50, 247, 93, 121, 216, 103, 149, 48, 124, 176, 34, 82, 22, 109, 53, 168, 14, 199, 43, 39, 77, 215, 52, 220, 129, 32, 103, 82, 33, 96, 119, 235, 233, 82, 183, 214, 240, 59, 223, 25, 191, 38, 61, 184, 100, 170, 250, 66, 222, 3, 63, 163, 23, 0, 134, 92, 239, 111, 225, 96, 27, 149, 29, 162, 77, 106, 91, 6, 138, 48, 90, 135, 217, 108, 213, 41, 63, 214, 204, 12, 110, 245, 135, 17, 183, 194, 34, 183, 7, 255, 64, 36, 48, 255, 186, 193, 33, 251, 109, 66, 124, 253, 28, 170, 165, 124, 203, 93, 59, 124, 235, 56, 183, 51, 176, 238, 146, 215, 26, 71, 172, 125, 233, 164, 71, 120, 123, 215, 92, 217, 125, 237, 140, 242, 17, 250, 163, 105, 65, 160, 124, 135, 152, 83, 121, 152, 53, 65, 93, 169, 103, 191, 4, 162, 39, 45, 157, 24, 225, 234, 121, 159, 8, 184, 69, 222, 2, 210, 65, 91, 22, 144, 87, 245, 31, 37, 171, 68, 36, 192, 81, 126, 196, 56, 180, 139, 28, 59, 123, 84, 39, 181, 58, 224, 15, 248, 114, 69, 190, 167, 143, 145, 51, 115, 155, 176, 232, 99, 118, 38, 66, 30, 198, 220, 138, 32, 37, 110, 186, 150, 11, 104, 238, 40, 200, 105, 116, 65, 199, 215, 226, 249, 127, 180, 175, 78, 24, 217, 168, 196, 180, 197, 122, 243, 235, 132, 83, 36, 58, 146, 110, 162, 97, 31, 216, 193, 217, 32, 224, 49, 117, 227, 224, 180, 104, 131, 166, 155, 53, 106, 132, 237, 170, 23, 226, 176, 13, 130, 49, 86, 206, 105, 7, 18, 46, 214, 95, 177, 78, 247, 99, 56, 142, 105, 121, 136, 203, 18, 82, 179, 205, 34, 55, 84, 247, 233, 114, 76, 48, 93, 91, 42, 29, 236, 212, 84, 234, 44, 252, 79, 201, 11, 241, 53, 197, 197, 64, 125, 238, 44, 131, 192, 4, 85, 135, 193, 181, 136, 252, 251, 223, 217, 82, 6, 154, 255, 64, 65, 136, 208, 38, 171, 234, 57, 143, 17, 171, 175, 233, 119, 175, 63, 19, 223, 250, 210, 193, 205, 254, 189, 216, 45, 66, 157, 32, 134, 169, 28, 59, 174, 252, 58, 131, 143, 180, 84, 33, 208, 40, 147, 94, 89, 89, 18, 142, 200, 235, 247, 110, 248, 233, 187, 238, 168, 110, 88, 148, 81, 93, 28, 237, 137, 187, 40, 100, 18, 125, 21, 105, 222, 40, 174, 127, 88, 161, 75, 168, 0, 66, 76, 159, 238, 168, 199, 246, 55, 3, 18, 8, 175, 48, 7, 159, 253, 112, 191, 43, 37, 185, 11, 44, 204, 242, 114, 139, 61, 58, 157, 139, 251, 184, 115, 142, 233, 127, 7, 16, 231, 52, 66, 56, 0, 120, 216, 97, 32, 217, 126, 41, 153, 223, 70, 232, 14, 36, 24, 80, 15, 200, 218, 175, 95, 97, 67, 154, 24, 113, 123, 28, 80, 221, 189, 223, 97, 184, 238, 165, 70, 160, 206, 235, 206, 35, 114, 211, 95, 175, 76, 200, 41, 117, 114, 104, 75, 217, 212, 219, 166, 107, 217, 204, 135, 15, 171, 202, 240, 217, 112, 87, 160, 90, 204, 239, 22, 103, 190, 148, 46, 87, 160, 33, 239, 150, 188, 159, 67, 126, 121, 106, 229, 71, 9, 243, 160, 131, 136, 38, 196, 18, 190, 5, 165, 182, 101, 134, 90, 41, 23, 219, 10, 198, 169, 28, 160, 132, 17, 175, 191, 42, 114, 53, 113, 51, 153, 112, 110, 153, 234, 247, 88, 208, 59, 194, 4, 69, 4, 244, 220, 243, 130, 35, 65, 249, 189, 224, 210, 152, 177, 146, 130, 127, 33, 136, 234, 90, 89, 18, 62, 255, 235, 254, 36, 236, 96, 10, 203, 145, 229, 180, 238, 210, 120, 151, 89, 241, 202, 187, 41, 193, 11, 71, 227, 63, 152, 174, 70, 123, 48, 165, 97, 46, 242, 59, 244, 144, 127, 114, 74, 55, 254, 8, 145, 5, 117, 98, 150, 140, 183, 135, 248, 202, 44, 59, 112, 133, 245, 104, 233, 119, 178, 153, 129, 116, 190, 188, 206, 86, 99, 3, 29, 46, 216, 197, 47, 141, 21, 33, 239, 204, 102, 185, 115, 50, 89, 12, 100, 241, 96, 135, 180, 153, 17, 137, 66, 118, 74, 39, 75, 54, 72, 30, 184, 225, 49, 120, 2, 99, 232, 212, 227, 163, 125, 42, 95, 30, 157, 92, 35, 199, 230, 95, 92, 155, 197, 175, 6, 9, 246, 225, 68, 142, 224, 79, 165, 168, 114, 36, 117, 41, 124, 166, 1, 209, 244, 142, 144, 137, 69, 87, 141, 69, 56, 236, 221, 234, 35, 77, 1, 162, 166, 167, 206, 58, 170, 91, 124, 240, 130, 23, 83, 87, 189, 42, 1, 129, 28, 78, 101, 161, 94, 213, 171, 76, 94, 110, 151, 208, 254, 224, 126, 46, 134, 210, 152, 178, 75, 41, 36, 9, 91, 32, 34, 232, 241, 234, 32, 191, 136, 13, 48, 73, 202, 147, 73, 39, 238, 46, 23, 109, 143, 87, 235, 77, 40, 27, 239, 38, 121, 104, 254, 129, 62, 92, 209, 237, 42, 141, 120, 84, 20, 134, 65, 35, 83, 126, 34, 75, 98, 135, 233, 10, 36, 32, 235, 82, 245, 123, 250, 196, 226, 61, 211, 186, 160, 229, 5, 152, 193, 97, 12, 107, 29, 174, 133, 107, 46, 35, 120, 67, 34, 73, 113, 172, 103, 186, 85, 104, 63, 51, 15, 162, 66, 58, 111, 48, 226, 70, 108, 121, 175, 30, 203, 16, 10, 231, 37, 25, 125, 139, 243, 36, 70, 94, 3, 143, 221, 48, 73, 85, 33, 192, 49, 90, 188, 254, 243, 129, 196, 12, 185, 0, 35, 100, 22, 8, 21, 7, 232, 254, 17, 202, 207, 36, 227, 193, 39, 65, 64, 13, 239, 23, 64, 223, 146, 178, 49, 169, 102, 82, 106, 23, 3, 178, 90, 140, 249, 76, 178, 244, 175, 1, 249, 221, 53, 243, 222, 34, 254, 229, 118, 217, 126, 202, 140, 29, 155, 216, 62, 47, 242, 135, 136, 56, 42, 89, 89, 21, 99, 149, 3, 43, 230, 68, 160, 39, 34, 172, 60, 205, 212, 144, 188, 223, 197, 82, 141, 207, 139, 43, 241, 88, 187, 179, 105, 92, 47, 25, 83, 191, 76, 107, 120, 79, 195, 98, 184, 143, 231, 79, 57, 186, 102, 199, 30, 16, 124, 103, 155, 82, 235, 23, 108, 44, 35, 251, 154, 254, 15, 187, 56, 52, 126, 170, 204, 56, 220, 222, 248, 63, 115, 43, 162, 82, 190, 27, 83, 239, 31, 154, 191, 120, 186, 221, 92, 40, 240, 188, 95, 62, 113, 211, 114, 1, 1, 131, 221, 54, 252, 185, 195, 64, 180, 146, 82, 172, 67, 89, 102, 59, 76, 196, 108, 69, 26, 237, 7, 114, 137, 233, 30, 62, 131, 156, 205, 28, 77, 34, 182, 82, 87, 132, 108, 113, 194, 24, 240, 190, 221, 130, 46, 129, 98, 32, 185, 226, 104, 151, 104, 11, 206, 52, 16, 94, 181, 135, 30, 231, 51, 167, 74, 110, 154, 115, 23, 169, 108, 99, 112, 189, 108, 6, 247, 148, 95, 164, 193, 83, 135, 198, 176, 69, 236, 97, 75, 114, 121, 212, 244, 185, 130, 230, 214, 8, 124, 25, 238, 160, 226, 252, 244, 177, 173, 211, 194, 22, 106, 175, 151, 172, 236, 179, 192, 124, 6, 228, 245, 157, 234, 218, 236, 148, 41, 37, 12, 139, 242, 132, 190, 236, 189, 159, 170, 69, 65, 242, 94, 83, 184, 191, 24, 158, 242, 131, 209, 78, 60, 7, 143, 241, 141, 145, 102, 207, 0, 89, 200, 4, 178, 144, 148, 128, 216, 164, 235, 63, 195, 106, 178, 167, 15, 88, 169, 65, 149, 223, 144, 186, 221, 232, 66, 171, 157, 228, 49, 28, 234, 240, 36, 199, 222, 36, 248, 3, 19, 23, 97, 60, 254, 218, 246, 37, 65, 227, 214, 76, 97, 162, 129, 168, 240, 8, 36, 182, 156, 180, 166, 139, 108, 242, 62, 203, 179, 200, 212, 88, 162, 46, 4, 236, 201, 103, 182, 89, 250, 43, 179, 23, 78, 223, 88, 152, 59, 205, 57, 119, 196, 4, 9, 187, 40, 63, 57, 17, 204, 216, 70, 219, 155, 9, 78, 193, 42, 249, 78, 125, 13, 117, 97, 95, 92, 226, 129, 6, 102, 76, 241, 221, 23, 75, 63, 41, 169, 168, 27, 111, 172, 118, 95, 131, 243, 96, 46, 11, 8, 50, 233, 102, 119, 42, 156, 241, 0, 227, 0, 40, 66, 48, 225, 31, 126, 223, 23, 178, 129, 82, 246, 69, 125, 189, 217, 30, 197, 65, 16, 119, 103, 173, 64, 157, 139, 232, 57, 111, 234, 11, 169, 141, 200, 85, 229, 83, 56, 216, 185, 112, 242, 70, 30, 207, 181, 6, 4, 161, 29, 156, 90, 31, 255, 100, 43, 51, 168, 127, 92, 189, 227, 174, 54, 11, 58, 53, 45, 239, 153, 55, 234, 17, 131, 94, 112, 213, 3, 168, 241, 193, 74, 140, 31, 75, 106, 89, 182, 107, 100, 151, 45, 35, 173, 19, 186, 44, 182, 202, 75, 238, 232, 103, 142, 90, 165, 203, 240, 84, 248, 63, 81, 128, 62, 137, 80, 61, 80, 134, 161, 35, 240, 179, 118, 183, 32, 170, 178, 23, 158, 71, 219, 227, 110, 3, 175, 209, 73, 75, 237, 240, 208, 224, 102, 124, 94, 112, 204, 75, 1, 9, 45, 97, 133, 142, 120, 48, 143, 63, 215, 243, 237, 248, 1, 48, 81, 242, 170, 95, 172, 63, 45, 189, 55, 172, 242, 8, 37, 103, 192, 231, 126, 251, 78, 177, 117, 4, 81, 83, 235, 144, 169, 85, 123, 95, 156, 62, 199, 47, 151, 106, 121, 87, 66, 166, 153, 226, 26, 130, 85, 28, 10, 185, 41, 180, 131, 96, 225, 245, 72, 40, 20, 33, 97, 234, 110, 7, 108, 131, 183, 188, 174, 24, 253, 75, 215, 230, 93, 108, 43, 84, 182, 103, 218, 98, 145, 85, 228, 194, 111, 171, 19, 61, 46, 82, 40, 109, 149, 145, 167, 27, 199, 23, 123, 199, 180, 93, 130, 144, 64, 197, 100, 243, 191, 64, 98, 237, 141, 127, 92, 90, 154, 232, 28, 161, 89, 238, 50, 131, 160, 78, 139, 56, 240, 107, 62, 84, 223, 180, 38, 59, 121, 177, 149, 6, 180, 19, 146, 117, 163, 76, 96, 104, 210, 53, 185, 97, 121, 3, 106, 247, 77, 116, 28, 69, 246, 97, 148, 86, 129, 238, 9, 43, 152, 3, 70, 111, 95, 77, 230, 179, 138, 147, 43, 250, 186, 126, 15, 47, 143, 111, 61, 42, 219, 151, 178, 74, 103, 24, 127, 149, 19, 255, 29, 103, 38, 122, 167, 165, 4, 230, 22, 85, 51, 14, 233, 159, 177, 85, 229, 21, 42, 117, 217, 171, 218, 193, 72, 151, 103, 73, 39, 223, 80, 100, 149, 111, 218, 117, 246, 183, 177, 86, 58, 162, 223, 127, 77, 41, 193, 161, 91, 136, 43, 216, 246, 31, 199, 206, 91, 254, 188, 98, 22, 46, 106, 51, 1, 106, 170, 94, 25, 247, 50, 138, 60, 223, 165, 251, 192, 184, 186, 75, 215, 198, 18, 120, 38, 81, 25, 45, 70, 11, 239, 97, 169, 228, 34, 36, 95, 161, 194, 199, 199, 121, 145, 109, 104, 11, 169, 32, 204, 208, 136, 129, 238, 217, 1, 101, 132, 168, 198, 19, 27, 154, 215, 154, 17, 208, 16, 13, 249, 15, 152, 110, 240, 59, 55, 208, 48, 53, 146, 15, 97, 244, 204, 21, 15, 204, 31, 255, 39, 55, 108, 15, 142, 123, 44, 186, 232, 199, 178, 242, 118, 41, 212, 135, 187, 105, 120, 214, 238, 37, 1, 33, 108, 8, 28, 236, 159, 117, 60, 169, 242, 73, 234, 22, 35, 209, 67, 60, 47, 237, 107, 182, 4, 136, 92, 252, 27, 221, 156, 29, 29, 235, 231, 75, 200, 229, 225, 239, 163, 3, 46, 119, 161, 134, 229, 154, 188, 98, 59, 254, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 123, 124, 65, 95, 76, 98, 200, 137, 83, 250, 67, 120, 111, 87, 193, 203, 31, 47, 218, 48, 108, 206, 156, 7, 2, 162, 119, 230, 29, 130, 144, 149} + priKeyBytes := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 3, 161, 7, 191, 243, 206, 16, 190, 29, 112, 221, 24, 231, 75, 192, 153, 103, 228, 214, 48, 155, 165, 13, 95, 29, 220, 134, 100, 18, 85, 49, 184, 134, 249, 111, 172, 230, 11, 139, 158, 17, 47, 148, 203, 100, 155, 190, 51, 123, 172, 108, 128, 170, 161, 20, 113, 161, 91, 96, 226, 28, 72, 226, 246, 174, 184, 68, 118, 245, 6, 150, 90, 99, 241, 33, 182, 19, 240, 227, 119, 8, 185, 20, 245, 61, 195, 3, 6, 201, 159, 32, 131, 75, 255, 194, 84, 0, 4, 116, 30, 190, 187, 210, 219, 22, 135, 79, 168, 80, 170, 189, 252, 150, 136, 156, 91, 58, 168, 61, 43, 235, 57, 43, 50, 251, 228, 191, 172, 18, 118, 37, 15, 116, 0, 137, 44, 235, 192, 91, 30, 236, 51, 221, 174, 113, 177, 187, 134, 149, 121, 134, 220, 131, 36, 154, 179, 40, 146, 236, 43, 145, 8, 97, 28, 57, 13, 11, 181, 132, 200, 40, 48, 28, 69, 4, 137, 68, 106, 3, 70, 66, 34, 22, 17, 8, 57, 40, 129, 8, 33, 68, 160, 81, 17, 40, 9, 4, 50, 32, 26, 21, 114, 17, 39, 13, 17, 133, 80, 220, 150, 12, 161, 180, 17, 195, 48, 4, 20, 196, 4, 88, 66, 128, 4, 72, 129, 36, 200, 145, 84, 182, 76, 10, 2, 98, 32, 177, 68, 11, 54, 102, 67, 144, 32, 17, 37, 70, 161, 52, 146, 209, 52, 145, 74, 0, 18, 34, 9, 69, 160, 72, 41, 10, 25, 17, 19, 180, 33, 154, 18, 50, 202, 0, 102, 146, 160, 72, 9, 40, 130, 33, 193, 81, 4, 3, 98, 11, 67, 101, 160, 20, 97, 9, 18, 2, 89, 176, 97, 155, 132, 37, 146, 40, 44, 212, 166, 140, 139, 4, 112, 0, 184, 129, 91, 134, 77, 146, 18, 34, 136, 160, 17, 153, 66, 32, 161, 36, 77, 162, 0, 144, 2, 50, 68, 24, 180, 112, 19, 134, 5, 36, 195, 69, 20, 181, 104, 97, 52, 129, 20, 72, 37, 68, 22, 66, 98, 24, 129, 73, 130, 37, 96, 150, 64, 26, 196, 101, 4, 182, 9, 10, 23, 36, 0, 71, 2, 138, 196, 49, 33, 68, 134, 16, 68, 14, 9, 69, 80, 194, 54, 138, 136, 56, 12, 209, 2, 74, 11, 132, 140, 208, 34, 141, 73, 198, 68, 98, 64, 6, 212, 180, 76, 75, 2, 2, 99, 16, 44, 98, 72, 100, 0, 199, 108, 162, 152, 40, 220, 38, 132, 11, 21, 64, 97, 66, 73, 12, 54, 41, 139, 176, 105, 9, 165, 8, 17, 20, 133, 73, 128, 144, 24, 22, 146, 68, 66, 70, 162, 34, 73, 16, 166, 80, 208, 148, 137, 202, 48, 36, 160, 54, 140, 225, 162, 1, 226, 52, 64, 136, 36, 96, 2, 3, 81, 211, 72, 104, 83, 36, 110, 28, 161, 77, 208, 32, 32, 129, 148, 37, 92, 0, 10, 193, 64, 72, 148, 36, 6, 128, 32, 104, 154, 18, 82, 8, 133, 33, 73, 40, 34, 193, 56, 13, 32, 199, 65, 65, 132, 144, 156, 66, 129, 67, 0, 44, 211, 146, 105, 160, 16, 97, 66, 168, 101, 34, 71, 102, 36, 50, 98, 132, 182, 41, 72, 36, 70, 33, 168, 113, 3, 200, 36, 226, 48, 137, 28, 70, 5, 218, 68, 33, 211, 4, 128, 160, 54, 13, 130, 148, 37, 10, 48, 108, 16, 48, 142, 219, 48, 46, 148, 40, 74, 0, 162, 17, 137, 180, 133, 11, 2, 132, 1, 53, 50, 2, 2, 136, 36, 48, 128, 192, 24, 97, 216, 22, 105, 132, 200, 64, 193, 36, 69, 18, 55, 80, 154, 50, 130, 90, 178, 80, 154, 180, 77, 26, 37, 13, 24, 200, 1, 28, 57, 37, 80, 34, 136, 65, 38, 13, 129, 64, 77, 219, 160, 9, 148, 164, 9, 98, 20, 36, 212, 8, 110, 33, 41, 130, 16, 129, 76, 36, 135, 45, 3, 195, 69, 204, 32, 72, 25, 137, 108, 12, 149, 108, 83, 196, 12, 148, 162, 80, 90, 52, 77, 17, 5, 4, 65, 18, 1, 64, 150, 96, 26, 8, 48, 34, 38, 113, 84, 176, 37, 219, 132, 100, 225, 52, 82, 160, 160, 128, 140, 164, 73, 64, 128, 136, 3, 64, 4, 154, 64, 134, 10, 34, 70, 34, 2, 100, 81, 40, 128, 35, 68, 0, 84, 6, 82, 10, 41, 140, 131, 144, 12, 68, 36, 68, 18, 194, 128, 209, 18, 5, 8, 49, 97, 88, 146, 48, 18, 66, 13, 27, 199, 97, 18, 71, 129, 32, 36, 1, 67, 162, 100, 88, 2, 1, 73, 198, 1, 8, 153, 141, 162, 50, 34, 68, 168, 4, 2, 136, 8, 0, 19, 134, 36, 177, 129, 1, 0, 34, 129, 68, 145, 34, 22, 49, 20, 152, 137, 19, 19, 14, 217, 148, 76, 25, 72, 1, 11, 194, 144, 18, 151, 80, 27, 147, 32, 192, 70, 32, 152, 64, 36, 132, 4, 80, 212, 64, 138, 148, 134, 8, 98, 54, 136, 33, 68, 17, 67, 198, 68, 28, 54, 105, 128, 70, 5, 228, 34, 105, 76, 176, 145, 26, 197, 41, 8, 201, 16, 26, 146, 8, 139, 168, 12, 27, 5, 97, 137, 18, 141, 194, 178, 140, 8, 6, 137, 164, 72, 100, 92, 184, 141, 154, 192, 41, 138, 22, 73, 164, 38, 65, 34, 7, 50, 91, 54, 68, 225, 56, 142, 154, 178, 17, 11, 164, 64, 246, 222, 106, 115, 63, 61, 112, 202, 199, 177, 56, 66, 124, 209, 209, 95, 119, 160, 187, 85, 20, 247, 45, 17, 119, 8, 73, 38, 0, 111, 222, 207, 63, 114, 230, 112, 50, 31, 65, 243, 229, 158, 229, 149, 30, 66, 111, 47, 213, 117, 177, 192, 56, 16, 116, 96, 172, 24, 127, 195, 225, 183, 189, 250, 115, 171, 195, 171, 60, 177, 33, 118, 27, 114, 243, 47, 36, 248, 179, 93, 151, 221, 160, 95, 25, 177, 79, 188, 48, 198, 118, 5, 20, 61, 27, 24, 33, 246, 60, 107, 21, 164, 223, 70, 189, 150, 175, 124, 76, 171, 53, 136, 101, 47, 75, 91, 170, 63, 186, 238, 216, 17, 18, 106, 212, 99, 201, 213, 126, 183, 96, 143, 42, 33, 221, 104, 9, 25, 204, 8, 55, 101, 75, 237, 73, 20, 108, 206, 79, 7, 248, 177, 48, 53, 40, 106, 73, 255, 122, 47, 218, 57, 17, 103, 99, 69, 174, 16, 167, 176, 248, 173, 79, 7, 223, 158, 120, 15, 234, 54, 29, 85, 202, 19, 119, 135, 44, 227, 167, 92, 231, 201, 19, 47, 247, 76, 237, 87, 11, 178, 236, 171, 137, 181, 69, 48, 44, 177, 67, 48, 139, 216, 151, 165, 159, 13, 189, 208, 122, 56, 95, 222, 147, 184, 121, 57, 130, 33, 180, 144, 136, 231, 46, 110, 213, 178, 158, 4, 36, 166, 13, 238, 225, 117, 247, 214, 145, 103, 227, 134, 0, 246, 0, 8, 51, 232, 223, 134, 247, 185, 36, 193, 231, 105, 83, 246, 169, 227, 60, 185, 89, 147, 16, 107, 15, 42, 200, 240, 193, 84, 212, 22, 238, 154, 76, 250, 234, 55, 73, 145, 250, 68, 31, 218, 208, 36, 54, 132, 7, 171, 33, 215, 175, 101, 131, 33, 166, 15, 47, 214, 138, 237, 145, 255, 64, 193, 183, 134, 153, 8, 58, 50, 226, 109, 44, 83, 84, 97, 98, 207, 218, 0, 175, 118, 206, 170, 184, 181, 25, 210, 253, 220, 177, 185, 40, 139, 80, 196, 65, 25, 18, 185, 23, 243, 92, 170, 19, 205, 105, 70, 251, 86, 222, 52, 99, 249, 92, 29, 176, 197, 45, 208, 244, 194, 107, 25, 69, 217, 68, 168, 67, 87, 77, 240, 185, 42, 128, 234, 6, 2, 32, 38, 153, 70, 189, 70, 165, 182, 85, 196, 109, 29, 3, 204, 10, 96, 162, 137, 82, 25, 68, 99, 99, 218, 251, 62, 213, 125, 87, 201, 94, 78, 187, 173, 55, 155, 137, 243, 234, 172, 92, 173, 63, 172, 131, 255, 88, 112, 59, 110, 189, 10, 105, 41, 228, 25, 132, 149, 155, 12, 31, 247, 138, 205, 151, 6, 7, 126, 238, 31, 28, 226, 114, 223, 35, 29, 5, 109, 94, 229, 80, 186, 252, 71, 13, 52, 167, 163, 68, 93, 156, 151, 104, 162, 61, 115, 153, 99, 58, 247, 145, 93, 47, 137, 87, 164, 14, 153, 19, 52, 153, 14, 228, 17, 59, 70, 209, 34, 233, 13, 47, 221, 141, 32, 137, 68, 31, 171, 168, 95, 251, 132, 198, 153, 180, 103, 155, 132, 211, 46, 199, 94, 100, 50, 243, 196, 105, 191, 216, 226, 155, 204, 192, 49, 27, 232, 210, 86, 169, 221, 53, 66, 169, 151, 141, 61, 76, 203, 31, 85, 119, 24, 143, 235, 202, 65, 3, 201, 177, 187, 183, 42, 193, 203, 1, 124, 185, 185, 180, 12, 181, 131, 239, 94, 233, 34, 99, 239, 238, 234, 6, 174, 25, 96, 60, 50, 184, 114, 116, 100, 104, 220, 198, 145, 82, 132, 6, 153, 56, 168, 162, 226, 149, 243, 214, 62, 106, 243, 160, 238, 148, 237, 235, 174, 76, 63, 118, 108, 121, 214, 120, 153, 34, 198, 200, 0, 56, 56, 134, 5, 134, 48, 33, 18, 115, 83, 153, 214, 125, 221, 53, 88, 253, 11, 98, 90, 122, 69, 146, 214, 231, 127, 191, 136, 17, 75, 141, 134, 47, 26, 90, 104, 38, 125, 254, 208, 87, 131, 145, 189, 25, 220, 223, 166, 124, 18, 17, 231, 155, 173, 206, 156, 127, 50, 78, 192, 219, 19, 253, 63, 99, 86, 140, 37, 35, 80, 135, 92, 140, 98, 229, 216, 182, 103, 237, 200, 72, 185, 52, 58, 203, 49, 243, 166, 13, 90, 73, 46, 59, 104, 203, 177, 249, 192, 221, 40, 140, 83, 115, 239, 72, 201, 205, 121, 233, 230, 252, 95, 254, 25, 63, 71, 10, 251, 16, 68, 0, 206, 239, 166, 133, 176, 205, 95, 236, 221, 250, 199, 96, 128, 165, 87, 106, 199, 249, 222, 36, 133, 207, 186, 70, 54, 128, 131, 215, 21, 210, 179, 153, 40, 154, 253, 222, 48, 17, 97, 13, 223, 121, 248, 237, 144, 172, 63, 45, 158, 184, 178, 33, 27, 225, 214, 21, 4, 217, 125, 146, 135, 215, 117, 175, 128, 102, 129, 252, 184, 13, 46, 109, 187, 224, 92, 48, 251, 14, 241, 79, 189, 250, 252, 156, 27, 44, 133, 169, 9, 80, 33, 51, 111, 14, 249, 221, 251, 99, 128, 198, 165, 93, 227, 36, 104, 28, 89, 76, 87, 87, 93, 30, 14, 131, 126, 164, 218, 235, 142, 206, 201, 218, 100, 70, 114, 63, 185, 16, 163, 151, 170, 122, 158, 115, 6, 124, 136, 110, 168, 192, 233, 27, 58, 211, 72, 248, 10, 1, 67, 56, 106, 159, 94, 177, 49, 93, 123, 117, 124, 179, 190, 149, 150, 147, 48, 100, 169, 2, 250, 37, 206, 49, 189, 115, 219, 103, 63, 244, 157, 43, 13, 41, 213, 236, 88, 166, 77, 125, 199, 16, 155, 40, 57, 9, 110, 164, 239, 34, 160, 58, 171, 25, 107, 10, 221, 176, 235, 10, 78, 183, 115, 118, 211, 173, 4, 102, 197, 227, 50, 158, 36, 22, 14, 128, 128, 254, 173, 58, 76, 23, 93, 85, 81, 64, 19, 76, 222, 2, 128, 5, 212, 153, 131, 227, 148, 135, 238, 4, 198, 153, 68, 172, 169, 145, 148, 248, 72, 65, 84, 12, 52, 68, 176, 23, 53, 92, 151, 184, 96, 17, 6, 252, 30, 209, 226, 24, 29, 38, 191, 170, 177, 47, 157, 99, 142, 199, 171, 56, 133, 122, 158, 85, 195, 245, 70, 71, 252, 150, 70, 9, 181, 226, 250, 72, 40, 182, 100, 239, 255, 222, 194, 208, 27, 117, 247, 20, 111, 233, 71, 104, 137, 103, 87, 104, 120, 66, 147, 75, 157, 202, 4, 164, 4, 12, 93, 62, 29, 236, 29, 52, 56, 90, 250, 145, 240, 232, 224, 195, 48, 236, 143, 229, 66, 64, 50, 103, 238, 26, 22, 181, 225, 140, 29, 199, 136, 104, 254, 213, 79, 9, 234, 145, 101, 213, 171, 5, 250, 45, 31, 154, 43, 93, 65, 165, 124, 16, 201, 214, 216, 82, 71, 28, 183, 152, 17, 14, 87, 252, 239, 249, 194, 89, 133, 118, 208, 89, 100, 99, 51, 47, 137, 131, 190, 95, 224, 188, 135, 52, 10, 211, 91, 92, 250, 210, 178, 37, 193, 133, 53, 112, 51, 95, 142, 175, 171, 152, 167, 122, 99, 243, 46, 78, 12, 62, 81, 182, 83, 4, 203, 11, 152, 138, 173, 239, 17, 217, 241, 40, 116, 79, 233, 59, 165, 67, 244, 96, 152, 181, 174, 57, 4, 157, 186, 221, 103, 89, 195, 99, 125, 74, 139, 102, 180, 180, 172, 213, 75, 219, 200, 49, 124, 206, 149, 9, 116, 218, 124, 179, 73, 40, 46, 14, 251, 208, 176, 22, 223, 157, 252, 125, 14, 83, 68, 141, 115, 79, 5, 24, 145, 63, 226, 127, 122, 81, 247, 235, 0, 5, 5, 200, 156, 239, 93, 139, 248, 100, 54, 93, 90, 64, 24, 155, 26, 56, 35, 253, 111, 93, 194, 118, 9, 54, 46, 93, 163, 91, 8, 138, 16, 23, 200, 221, 208, 155, 54, 6, 126, 249, 255, 155, 145, 223, 132, 43, 12, 51, 27, 20, 67, 49, 242, 160, 154, 106, 75, 229, 242, 135, 126, 149, 202, 80, 42, 168, 3, 96, 74, 61, 96, 118, 184, 162, 9, 122, 72, 43, 126, 123, 103, 28, 246, 92, 64, 115, 13, 233, 17, 159, 55, 113, 90, 1, 175, 245, 42, 70, 149, 130, 255, 100, 175, 248, 219, 172, 92, 228, 59, 162, 232, 56, 236, 59, 136, 117, 6, 160, 84, 226, 116, 21, 239, 117, 214, 112, 62, 44, 242, 43, 67, 255, 221, 121, 31, 221, 156, 61, 16, 105, 100, 246, 117, 51, 153, 253, 109, 85, 86, 115, 172, 119, 196, 155, 103, 206, 215, 160, 69, 33, 119, 225, 7, 213, 199, 42, 160, 207, 50, 235, 240, 220, 141, 236, 209, 235, 215, 171, 54, 246, 225, 6, 159, 234, 200, 116, 234, 209, 102, 254, 41, 198, 254, 58, 47, 158, 115, 45, 64, 170, 245, 219, 190, 211, 112, 46, 137, 215, 225, 218, 181, 15, 7, 228, 99, 15, 26, 34, 39, 29, 249, 132, 100, 173, 228, 162, 140, 227, 19, 155, 48, 110, 222, 66, 207, 79, 74, 111, 133, 33, 164, 173, 100, 52, 13, 165, 46, 74, 145, 200, 82, 86, 29, 91, 217, 177, 169, 118, 178, 233, 128, 37, 175, 207, 55, 100, 241, 35, 126, 21, 11, 149, 138, 206, 238, 70, 251, 188, 101, 15, 19, 211, 241, 242, 77, 21, 30, 28, 194, 130, 193, 77, 55, 127, 63, 82, 184, 220, 206, 19, 142, 212, 66, 7, 19, 246, 193, 197, 124, 109, 41, 194, 143, 182, 66, 145, 30, 155, 76, 165, 47, 125, 185, 253, 255, 94, 218, 82, 245, 75, 148, 141, 1, 219, 146, 232, 180, 114, 184, 32, 112, 23, 184, 10, 216, 83, 0, 70, 118, 113, 173, 80, 9, 53, 147, 30, 56, 74, 140, 62, 219, 243, 157, 138, 248, 140, 73, 244, 111, 189, 202, 7, 70, 85, 23, 195, 177, 51, 220, 134, 249, 111, 172, 230, 11, 139, 158, 17, 47, 148, 203, 100, 155, 190, 51, 123, 172, 108, 128, 170, 161, 20, 113, 161, 91, 96, 226, 28, 72, 226, 246, 149, 240, 203, 64, 30, 207, 65, 69, 138, 199, 183, 113, 209, 75, 112, 55, 119, 251, 57, 47, 95, 251, 34, 41, 87, 1, 43, 236, 175, 235, 64, 210, 81, 57, 161, 144, 131, 80, 17, 204, 207, 211, 2, 124, 206, 3, 131, 204, 56, 202, 73, 5, 251, 37, 42, 225, 34, 49, 84, 228, 99, 72, 121, 135, 198, 199, 33, 191, 75, 39, 20, 166, 120, 45, 69, 39, 8, 132, 102, 216, 37, 167, 251, 122, 84, 196, 127, 36, 80, 182, 146, 236, 247, 56, 183, 208, 39, 65, 82, 196, 253, 193, 126, 200, 70, 113, 18, 92, 240, 239, 169, 140, 87, 130, 64, 32, 49, 134, 200, 82, 4, 55, 77, 217, 112, 195, 53, 62, 176, 213, 190, 229, 220, 239, 90, 156, 177, 20, 130, 206, 127, 174, 146, 190, 178, 154, 95, 144, 226, 215, 251, 185, 51, 29, 60, 250, 186, 8, 243, 217, 245, 28, 178, 97, 12, 39, 187, 98, 236, 145, 127, 248, 63, 156, 94, 186, 120, 92, 77, 255, 113, 76, 227, 24, 31, 3, 216, 219, 13, 134, 63, 167, 42, 217, 123, 253, 250, 76, 21, 118, 235, 199, 108, 71, 118, 229, 68, 180, 160, 162, 150, 127, 30, 63, 92, 28, 163, 180, 159, 168, 115, 77, 39, 254, 3, 95, 190, 2, 31, 71, 123, 216, 71, 168, 218, 161, 201, 222, 86, 121, 26, 132, 108, 250, 167, 34, 56, 196, 183, 246, 211, 54, 178, 94, 158, 173, 86, 183, 221, 64, 246, 178, 169, 153, 116, 23, 233, 84, 234, 122, 165, 122, 119, 215, 187, 86, 79, 138, 162, 128, 137, 37, 38, 116, 99, 70, 76, 63, 108, 90, 16, 51, 156, 161, 139, 232, 243, 223, 229, 127, 144, 174, 46, 144, 122, 54, 149, 41, 244, 144, 37, 5, 48, 79, 27, 156, 137, 130, 213, 239, 254, 84, 215, 26, 11, 187, 84, 245, 190, 64, 130, 245, 219, 195, 151, 18, 218, 251, 33, 68, 234, 85, 191, 215, 144, 65, 42, 46, 238, 54, 148, 132, 74, 123, 179, 98, 183, 161, 195, 34, 187, 237, 85, 20, 127, 241, 159, 98, 216, 10, 10, 230, 129, 40, 253, 129, 243, 226, 224, 110, 247, 32, 88, 204, 186, 178, 67, 2, 241, 46, 207, 138, 243, 95, 66, 180, 175, 9, 81, 243, 122, 30, 240, 236, 229, 253, 211, 177, 21, 78, 100, 231, 219, 95, 45, 220, 110, 52, 164, 72, 243, 222, 74, 36, 106, 249, 243, 72, 122, 23, 27, 10, 130, 21, 219, 150, 187, 37, 125, 7, 128, 217, 61, 56, 157, 160, 8, 180, 155, 73, 245, 54, 106, 34, 157, 89, 0, 37, 17, 3, 179, 52, 169, 13, 2, 13, 6, 247, 141, 154, 56, 188, 204, 67, 97, 39, 170, 5, 13, 36, 23, 33, 99, 49, 229, 127, 173, 166, 157, 45, 56, 175, 75, 239, 35, 161, 115, 194, 184, 155, 29, 203, 115, 110, 255, 109, 148, 40, 76, 153, 207, 220, 179, 97, 127, 169, 62, 167, 56, 92, 90, 172, 193, 7, 174, 65, 37, 31, 211, 4, 52, 206, 103, 252, 170, 210, 33, 83, 137, 175, 185, 158, 193, 25, 16, 164, 246, 8, 189, 154, 91, 124, 206, 139, 205, 131, 166, 242, 78, 1, 24, 11, 27, 58, 84, 123, 16, 56, 67, 99, 38, 163, 58, 118, 173, 10, 155, 125, 41, 188, 131, 197, 80, 20, 2, 138, 178, 187, 63, 64, 77, 209, 192, 210, 21, 217, 177, 71, 202, 166, 126, 90, 29, 122, 234, 11, 8, 8, 212, 121, 110, 172, 89, 187, 109, 49, 146, 141, 115, 196, 40, 140, 103, 205, 107, 215, 56, 22, 215, 38, 37, 247, 152, 91, 232, 84, 131, 90, 4, 190, 37, 28, 81, 118, 158, 203, 66, 216, 189, 255, 205, 68, 142, 221, 42, 15, 1, 111, 50, 165, 86, 156, 46, 41, 251, 69, 58, 114, 233, 145, 251, 52, 204, 197, 146, 254, 114, 173, 150, 224, 168, 139, 138, 5, 132, 118, 85, 51, 239, 135, 129, 150, 143, 143, 185, 101, 209, 46, 33, 216, 95, 24, 32, 232, 188, 54, 231, 49, 147, 251, 46, 250, 32, 157, 93, 251, 124, 228, 76, 48, 58, 206, 139, 83, 242, 5, 93, 117, 76, 100, 232, 201, 39, 201, 163, 104, 35, 78, 76, 113, 151, 109, 207, 14, 25, 144, 243, 222, 117, 173, 35, 112, 189, 78, 16, 59, 36, 215, 129, 183, 89, 3, 234, 74, 48, 117, 106, 118, 92, 230, 37, 138, 116, 190, 121, 154, 38, 208, 152, 16, 167, 179, 145, 20, 167, 11, 4, 177, 73, 33, 156, 178, 180, 87, 3, 187, 42, 92, 5, 151, 220, 48, 8, 21, 172, 248, 52, 139, 114, 226, 199, 106, 119, 174, 62, 194, 138, 8, 202, 29, 138, 229, 63, 107, 52, 133, 163, 24, 187, 183, 110, 35, 224, 180, 195, 182, 26, 230, 170, 33, 124, 58, 237, 79, 98, 79, 7, 91, 89, 66, 94, 109, 165, 215, 209, 252, 115, 196, 48, 69, 148, 14, 217, 78, 44, 63, 128, 28, 104, 134, 107, 45, 233, 211, 21, 224, 51, 223, 180, 40, 225, 99, 176, 23, 54, 98, 14, 30, 93, 56, 133, 212, 194, 228, 47, 196, 120, 162, 144, 191, 19, 240, 55, 221, 138, 50, 242, 78, 216, 56, 182, 74, 129, 103, 155, 116, 183, 252, 154, 150, 40, 22, 143, 198, 221, 240, 59, 180, 10, 80, 223, 159, 142, 118, 125, 67, 80, 209, 86, 72, 206, 123, 83, 140, 65, 22, 219, 122, 58, 126, 107, 124, 130, 155, 196, 91, 145, 3, 246, 253, 167, 204, 96, 154, 147, 205, 136, 160, 152, 98, 53, 46, 7, 9, 149, 52, 122, 62, 115, 0, 111, 73, 205, 7, 254, 142, 239, 206, 123, 206, 31, 203, 108, 211, 132, 138, 197, 41, 176, 237, 7, 18, 3, 135, 124, 23, 50, 165, 231, 203, 142, 204, 110, 84, 240, 100, 62, 238, 134, 170, 139, 234, 39, 118, 120, 67, 89, 139, 121, 249, 33, 187, 218, 67, 84, 91, 3, 220, 187, 145, 74, 242, 13, 243, 83, 28, 114, 185, 214, 173, 107, 118, 120, 139, 29, 19, 234, 157, 254, 25, 60, 91, 17, 188, 189, 158, 237, 135, 53, 130, 253, 83, 8, 255, 183, 246, 181, 175, 103, 83, 179, 24, 191, 247, 21, 63, 106, 150, 80, 20, 204, 102, 246, 86, 255, 230, 173, 160, 126, 212, 190, 128, 234, 235, 43, 159, 20, 16, 157, 51, 43, 252, 208, 82, 208, 150, 131, 143, 180, 237, 248, 197, 216, 119, 229, 182, 157, 0, 63, 139, 247, 231, 240, 80, 218, 94, 213, 149, 127, 74, 149, 229, 25, 7, 112, 38, 104, 150, 223, 239, 250, 50, 152, 101, 233, 191, 76, 184, 19, 197, 130, 5, 173, 247, 98, 19, 166, 200, 26, 206, 43, 204, 241, 194, 159, 20, 191, 123, 28, 55, 69, 3, 74, 103, 172, 75, 207, 119, 128, 187, 201, 111, 168, 50, 188, 160, 32, 145, 102, 153, 161, 222, 147, 146, 217, 12, 35, 58, 118, 117, 130, 26, 83, 85, 23, 95, 87, 56, 16, 22, 139, 170, 91, 41, 141, 137, 161, 192, 169, 43, 100, 93, 18, 174, 148, 216, 113, 142, 37, 27, 32, 233, 249, 29, 83, 118, 5, 176, 168, 64, 25, 154, 195, 32, 67, 167, 133, 167, 217, 163, 69, 179, 37, 146, 232, 189, 208, 148, 234, 70, 83, 143, 117, 19, 182, 155, 240, 76, 56, 228, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 123, 124, 65, 95, 76, 98, 200, 137, 83, 250, 67, 120, 111, 87, 193, 203, 31, 47, 218, 48, 108, 206, 156, 7, 2, 162, 119, 230, 29, 130, 144, 149} if bytes.Equal(priKey.key, priKeyBytes) == false { t.Fatalf("failed") @@ -99,7 +100,7 @@ func TestGetKeys(t *testing.T) { t.Fatalf("failed") } - pubKeyBytes := []byte{3, 161, 7, 191, 243, 206, 16, 190, 29, 112, 221, 24, 231, 75, 192, 153, 103, 228, 214, 48, 155, 165, 13, 95, 29, 220, 134, 100, 18, 85, 49, 184, 21, 33, 239, 204, 102, 185, 115, 50, 89, 12, 100, 241, 96, 135, 180, 153, 17, 137, 66, 118, 74, 39, 75, 54, 72, 30, 184, 225, 49, 120, 2, 99, 232, 212, 227, 163, 125, 42, 95, 30, 157, 92, 35, 199, 230, 95, 92, 155, 197, 175, 6, 9, 246, 225, 68, 142, 224, 79, 165, 168, 114, 36, 117, 41, 124, 166, 1, 209, 244, 142, 144, 137, 69, 87, 141, 69, 56, 236, 221, 234, 35, 77, 1, 162, 166, 167, 206, 58, 170, 91, 124, 240, 130, 23, 83, 87, 189, 42, 1, 129, 28, 78, 101, 161, 94, 213, 171, 76, 94, 110, 151, 208, 254, 224, 126, 46, 134, 210, 152, 178, 75, 41, 36, 9, 91, 32, 34, 232, 241, 234, 32, 191, 136, 13, 48, 73, 202, 147, 73, 39, 238, 46, 23, 109, 143, 87, 235, 77, 40, 27, 239, 38, 121, 104, 254, 129, 62, 92, 209, 237, 42, 141, 120, 84, 20, 134, 65, 35, 83, 126, 34, 75, 98, 135, 233, 10, 36, 32, 235, 82, 245, 123, 250, 196, 226, 61, 211, 186, 160, 229, 5, 152, 193, 97, 12, 107, 29, 174, 133, 107, 46, 35, 120, 67, 34, 73, 113, 172, 103, 186, 85, 104, 63, 51, 15, 162, 66, 58, 111, 48, 226, 70, 108, 121, 175, 30, 203, 16, 10, 231, 37, 25, 125, 139, 243, 36, 70, 94, 3, 143, 221, 48, 73, 85, 33, 192, 49, 90, 188, 254, 243, 129, 196, 12, 185, 0, 35, 100, 22, 8, 21, 7, 232, 254, 17, 202, 207, 36, 227, 193, 39, 65, 64, 13, 239, 23, 64, 223, 146, 178, 49, 169, 102, 82, 106, 23, 3, 178, 90, 140, 249, 76, 178, 244, 175, 1, 249, 221, 53, 243, 222, 34, 254, 229, 118, 217, 126, 202, 140, 29, 155, 216, 62, 47, 242, 135, 136, 56, 42, 89, 89, 21, 99, 149, 3, 43, 230, 68, 160, 39, 34, 172, 60, 205, 212, 144, 188, 223, 197, 82, 141, 207, 139, 43, 241, 88, 187, 179, 105, 92, 47, 25, 83, 191, 76, 107, 120, 79, 195, 98, 184, 143, 231, 79, 57, 186, 102, 199, 30, 16, 124, 103, 155, 82, 235, 23, 108, 44, 35, 251, 154, 254, 15, 187, 56, 52, 126, 170, 204, 56, 220, 222, 248, 63, 115, 43, 162, 82, 190, 27, 83, 239, 31, 154, 191, 120, 186, 221, 92, 40, 240, 188, 95, 62, 113, 211, 114, 1, 1, 131, 221, 54, 252, 185, 195, 64, 180, 146, 82, 172, 67, 89, 102, 59, 76, 196, 108, 69, 26, 237, 7, 114, 137, 233, 30, 62, 131, 156, 205, 28, 77, 34, 182, 82, 87, 132, 108, 113, 194, 24, 240, 190, 221, 130, 46, 129, 98, 32, 185, 226, 104, 151, 104, 11, 206, 52, 16, 94, 181, 135, 30, 231, 51, 167, 74, 110, 154, 115, 23, 169, 108, 99, 112, 189, 108, 6, 247, 148, 95, 164, 193, 83, 135, 198, 176, 69, 236, 97, 75, 114, 121, 212, 244, 185, 130, 230, 214, 8, 124, 25, 238, 160, 226, 252, 244, 177, 173, 211, 194, 22, 106, 175, 151, 172, 236, 179, 192, 124, 6, 228, 245, 157, 234, 218, 236, 148, 41, 37, 12, 139, 242, 132, 190, 236, 189, 159, 170, 69, 65, 242, 94, 83, 184, 191, 24, 158, 242, 131, 209, 78, 60, 7, 143, 241, 141, 145, 102, 207, 0, 89, 200, 4, 178, 144, 148, 128, 216, 164, 235, 63, 195, 106, 178, 167, 15, 88, 169, 65, 149, 223, 144, 186, 221, 232, 66, 171, 157, 228, 49, 28, 234, 240, 36, 199, 222, 36, 248, 3, 19, 23, 97, 60, 254, 218, 246, 37, 65, 227, 214, 76, 97, 162, 129, 168, 240, 8, 36, 182, 156, 180, 166, 139, 108, 242, 62, 203, 179, 200, 212, 88, 162, 46, 4, 236, 201, 103, 182, 89, 250, 43, 179, 23, 78, 223, 88, 152, 59, 205, 57, 119, 196, 4, 9, 187, 40, 63, 57, 17, 204, 216, 70, 219, 155, 9, 78, 193, 42, 249, 78, 125, 13, 117, 97, 95, 92, 226, 129, 6, 102, 76, 241, 221, 23, 75, 63, 41, 169, 168, 27, 111, 172, 118, 95, 131, 243, 96, 46, 11, 8, 50, 233, 102, 119, 42, 156, 241, 0, 227, 0, 40, 66, 48, 225, 31, 126, 223, 23, 178, 129, 82, 246, 69, 125, 189, 217, 30, 197, 65, 16, 119, 103, 173, 64, 157, 139, 232, 57, 111, 234, 11, 169, 141, 200, 85, 229, 83, 56, 216, 185, 112, 242, 70, 30, 207, 181, 6, 4, 161, 29, 156, 90, 31, 255, 100, 43, 51, 168, 127, 92, 189, 227, 174, 54, 11, 58, 53, 45, 239, 153, 55, 234, 17, 131, 94, 112, 213, 3, 168, 241, 193, 74, 140, 31, 75, 106, 89, 182, 107, 100, 151, 45, 35, 173, 19, 186, 44, 182, 202, 75, 238, 232, 103, 142, 90, 165, 203, 240, 84, 248, 63, 81, 128, 62, 137, 80, 61, 80, 134, 161, 35, 240, 179, 118, 183, 32, 170, 178, 23, 158, 71, 219, 227, 110, 3, 175, 209, 73, 75, 237, 240, 208, 224, 102, 124, 94, 112, 204, 75, 1, 9, 45, 97, 133, 142, 120, 48, 143, 63, 215, 243, 237, 248, 1, 48, 81, 242, 170, 95, 172, 63, 45, 189, 55, 172, 242, 8, 37, 103, 192, 231, 126, 251, 78, 177, 117, 4, 81, 83, 235, 144, 169, 85, 123, 95, 156, 62, 199, 47, 151, 106, 121, 87, 66, 166, 153, 226, 26, 130, 85, 28, 10, 185, 41, 180, 131, 96, 225, 245, 72, 40, 20, 33, 97, 234, 110, 7, 108, 131, 183, 188, 174, 24, 253, 75, 215, 230, 93, 108, 43, 84, 182, 103, 218, 98, 145, 85, 228, 194, 111, 171, 19, 61, 46, 82, 40, 109, 149, 145, 167, 27, 199, 23, 123, 199, 180, 93, 130, 144, 64, 197, 100, 243, 191, 64, 98, 237, 141, 127, 92, 90, 154, 232, 28, 161, 89, 238, 50, 131, 160, 78, 139, 56, 240, 107, 62, 84, 223, 180, 38, 59, 121, 177, 149, 6, 180, 19, 146, 117, 163, 76, 96, 104, 210, 53, 185, 97, 121, 3, 106, 247, 77, 116, 28, 69, 246, 97, 148, 86, 129, 238, 9, 43, 152, 3, 70, 111, 95, 77, 230, 179, 138, 147, 43, 250, 186, 126, 15, 47, 143, 111, 61, 42, 219, 151, 178, 74, 103, 24, 127, 149, 19, 255, 29, 103, 38, 122, 167, 165, 4, 230, 22, 85, 51, 14, 233, 159, 177, 85, 229, 21, 42, 117, 217, 171, 218, 193, 72, 151, 103, 73, 39, 223, 80, 100, 149, 111, 218, 117, 246, 183, 177, 86, 58, 162, 223, 127, 77, 41, 193, 161, 91, 136, 43, 216, 246, 31, 199, 206, 91, 254, 188, 98, 22, 46, 106, 51, 1, 106, 170, 94, 25, 247, 50, 138, 60, 223, 165, 251, 192, 184, 186, 75, 215, 198, 18, 120, 38, 81, 25, 45, 70, 11, 239, 97, 169, 228, 34, 36, 95, 161, 194, 199, 199, 121, 145, 109, 104, 11, 169, 32, 204, 208, 136, 129, 238, 217, 1, 101, 132, 168, 198, 19, 27, 154, 215, 154, 17, 208, 16, 13, 249, 15, 152, 110, 240, 59, 55, 208, 48, 53, 146, 15, 97, 244, 204, 21, 15, 204, 31, 255, 39, 55, 108, 15, 142, 123, 44, 186, 232, 199, 178, 242, 118, 41, 212, 135, 187, 105, 120, 214, 238, 37, 1, 33, 108, 8, 28, 236, 159, 117, 60, 169, 242, 73, 234, 22, 35, 209, 67, 60, 47, 237, 107, 182, 4, 136, 92, 252, 27, 221, 156, 29, 29, 235, 231, 75, 200, 229, 225, 239, 163, 3, 46, 119, 161, 134, 229, 154, 188, 98, 59, 254, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 123, 124, 65, 95, 76, 98, 200, 137, 83, 250, 67, 120, 111, 87, 193, 203, 31, 47, 218, 48, 108, 206, 156, 7, 2, 162, 119, 230, 29, 130, 144, 149} + pubKeyBytes := []byte{3, 161, 7, 191, 243, 206, 16, 190, 29, 112, 221, 24, 231, 75, 192, 153, 103, 228, 214, 48, 155, 165, 13, 95, 29, 220, 134, 100, 18, 85, 49, 184, 134, 249, 111, 172, 230, 11, 139, 158, 17, 47, 148, 203, 100, 155, 190, 51, 123, 172, 108, 128, 170, 161, 20, 113, 161, 91, 96, 226, 28, 72, 226, 246, 149, 240, 203, 64, 30, 207, 65, 69, 138, 199, 183, 113, 209, 75, 112, 55, 119, 251, 57, 47, 95, 251, 34, 41, 87, 1, 43, 236, 175, 235, 64, 210, 81, 57, 161, 144, 131, 80, 17, 204, 207, 211, 2, 124, 206, 3, 131, 204, 56, 202, 73, 5, 251, 37, 42, 225, 34, 49, 84, 228, 99, 72, 121, 135, 198, 199, 33, 191, 75, 39, 20, 166, 120, 45, 69, 39, 8, 132, 102, 216, 37, 167, 251, 122, 84, 196, 127, 36, 80, 182, 146, 236, 247, 56, 183, 208, 39, 65, 82, 196, 253, 193, 126, 200, 70, 113, 18, 92, 240, 239, 169, 140, 87, 130, 64, 32, 49, 134, 200, 82, 4, 55, 77, 217, 112, 195, 53, 62, 176, 213, 190, 229, 220, 239, 90, 156, 177, 20, 130, 206, 127, 174, 146, 190, 178, 154, 95, 144, 226, 215, 251, 185, 51, 29, 60, 250, 186, 8, 243, 217, 245, 28, 178, 97, 12, 39, 187, 98, 236, 145, 127, 248, 63, 156, 94, 186, 120, 92, 77, 255, 113, 76, 227, 24, 31, 3, 216, 219, 13, 134, 63, 167, 42, 217, 123, 253, 250, 76, 21, 118, 235, 199, 108, 71, 118, 229, 68, 180, 160, 162, 150, 127, 30, 63, 92, 28, 163, 180, 159, 168, 115, 77, 39, 254, 3, 95, 190, 2, 31, 71, 123, 216, 71, 168, 218, 161, 201, 222, 86, 121, 26, 132, 108, 250, 167, 34, 56, 196, 183, 246, 211, 54, 178, 94, 158, 173, 86, 183, 221, 64, 246, 178, 169, 153, 116, 23, 233, 84, 234, 122, 165, 122, 119, 215, 187, 86, 79, 138, 162, 128, 137, 37, 38, 116, 99, 70, 76, 63, 108, 90, 16, 51, 156, 161, 139, 232, 243, 223, 229, 127, 144, 174, 46, 144, 122, 54, 149, 41, 244, 144, 37, 5, 48, 79, 27, 156, 137, 130, 213, 239, 254, 84, 215, 26, 11, 187, 84, 245, 190, 64, 130, 245, 219, 195, 151, 18, 218, 251, 33, 68, 234, 85, 191, 215, 144, 65, 42, 46, 238, 54, 148, 132, 74, 123, 179, 98, 183, 161, 195, 34, 187, 237, 85, 20, 127, 241, 159, 98, 216, 10, 10, 230, 129, 40, 253, 129, 243, 226, 224, 110, 247, 32, 88, 204, 186, 178, 67, 2, 241, 46, 207, 138, 243, 95, 66, 180, 175, 9, 81, 243, 122, 30, 240, 236, 229, 253, 211, 177, 21, 78, 100, 231, 219, 95, 45, 220, 110, 52, 164, 72, 243, 222, 74, 36, 106, 249, 243, 72, 122, 23, 27, 10, 130, 21, 219, 150, 187, 37, 125, 7, 128, 217, 61, 56, 157, 160, 8, 180, 155, 73, 245, 54, 106, 34, 157, 89, 0, 37, 17, 3, 179, 52, 169, 13, 2, 13, 6, 247, 141, 154, 56, 188, 204, 67, 97, 39, 170, 5, 13, 36, 23, 33, 99, 49, 229, 127, 173, 166, 157, 45, 56, 175, 75, 239, 35, 161, 115, 194, 184, 155, 29, 203, 115, 110, 255, 109, 148, 40, 76, 153, 207, 220, 179, 97, 127, 169, 62, 167, 56, 92, 90, 172, 193, 7, 174, 65, 37, 31, 211, 4, 52, 206, 103, 252, 170, 210, 33, 83, 137, 175, 185, 158, 193, 25, 16, 164, 246, 8, 189, 154, 91, 124, 206, 139, 205, 131, 166, 242, 78, 1, 24, 11, 27, 58, 84, 123, 16, 56, 67, 99, 38, 163, 58, 118, 173, 10, 155, 125, 41, 188, 131, 197, 80, 20, 2, 138, 178, 187, 63, 64, 77, 209, 192, 210, 21, 217, 177, 71, 202, 166, 126, 90, 29, 122, 234, 11, 8, 8, 212, 121, 110, 172, 89, 187, 109, 49, 146, 141, 115, 196, 40, 140, 103, 205, 107, 215, 56, 22, 215, 38, 37, 247, 152, 91, 232, 84, 131, 90, 4, 190, 37, 28, 81, 118, 158, 203, 66, 216, 189, 255, 205, 68, 142, 221, 42, 15, 1, 111, 50, 165, 86, 156, 46, 41, 251, 69, 58, 114, 233, 145, 251, 52, 204, 197, 146, 254, 114, 173, 150, 224, 168, 139, 138, 5, 132, 118, 85, 51, 239, 135, 129, 150, 143, 143, 185, 101, 209, 46, 33, 216, 95, 24, 32, 232, 188, 54, 231, 49, 147, 251, 46, 250, 32, 157, 93, 251, 124, 228, 76, 48, 58, 206, 139, 83, 242, 5, 93, 117, 76, 100, 232, 201, 39, 201, 163, 104, 35, 78, 76, 113, 151, 109, 207, 14, 25, 144, 243, 222, 117, 173, 35, 112, 189, 78, 16, 59, 36, 215, 129, 183, 89, 3, 234, 74, 48, 117, 106, 118, 92, 230, 37, 138, 116, 190, 121, 154, 38, 208, 152, 16, 167, 179, 145, 20, 167, 11, 4, 177, 73, 33, 156, 178, 180, 87, 3, 187, 42, 92, 5, 151, 220, 48, 8, 21, 172, 248, 52, 139, 114, 226, 199, 106, 119, 174, 62, 194, 138, 8, 202, 29, 138, 229, 63, 107, 52, 133, 163, 24, 187, 183, 110, 35, 224, 180, 195, 182, 26, 230, 170, 33, 124, 58, 237, 79, 98, 79, 7, 91, 89, 66, 94, 109, 165, 215, 209, 252, 115, 196, 48, 69, 148, 14, 217, 78, 44, 63, 128, 28, 104, 134, 107, 45, 233, 211, 21, 224, 51, 223, 180, 40, 225, 99, 176, 23, 54, 98, 14, 30, 93, 56, 133, 212, 194, 228, 47, 196, 120, 162, 144, 191, 19, 240, 55, 221, 138, 50, 242, 78, 216, 56, 182, 74, 129, 103, 155, 116, 183, 252, 154, 150, 40, 22, 143, 198, 221, 240, 59, 180, 10, 80, 223, 159, 142, 118, 125, 67, 80, 209, 86, 72, 206, 123, 83, 140, 65, 22, 219, 122, 58, 126, 107, 124, 130, 155, 196, 91, 145, 3, 246, 253, 167, 204, 96, 154, 147, 205, 136, 160, 152, 98, 53, 46, 7, 9, 149, 52, 122, 62, 115, 0, 111, 73, 205, 7, 254, 142, 239, 206, 123, 206, 31, 203, 108, 211, 132, 138, 197, 41, 176, 237, 7, 18, 3, 135, 124, 23, 50, 165, 231, 203, 142, 204, 110, 84, 240, 100, 62, 238, 134, 170, 139, 234, 39, 118, 120, 67, 89, 139, 121, 249, 33, 187, 218, 67, 84, 91, 3, 220, 187, 145, 74, 242, 13, 243, 83, 28, 114, 185, 214, 173, 107, 118, 120, 139, 29, 19, 234, 157, 254, 25, 60, 91, 17, 188, 189, 158, 237, 135, 53, 130, 253, 83, 8, 255, 183, 246, 181, 175, 103, 83, 179, 24, 191, 247, 21, 63, 106, 150, 80, 20, 204, 102, 246, 86, 255, 230, 173, 160, 126, 212, 190, 128, 234, 235, 43, 159, 20, 16, 157, 51, 43, 252, 208, 82, 208, 150, 131, 143, 180, 237, 248, 197, 216, 119, 229, 182, 157, 0, 63, 139, 247, 231, 240, 80, 218, 94, 213, 149, 127, 74, 149, 229, 25, 7, 112, 38, 104, 150, 223, 239, 250, 50, 152, 101, 233, 191, 76, 184, 19, 197, 130, 5, 173, 247, 98, 19, 166, 200, 26, 206, 43, 204, 241, 194, 159, 20, 191, 123, 28, 55, 69, 3, 74, 103, 172, 75, 207, 119, 128, 187, 201, 111, 168, 50, 188, 160, 32, 145, 102, 153, 161, 222, 147, 146, 217, 12, 35, 58, 118, 117, 130, 26, 83, 85, 23, 95, 87, 56, 16, 22, 139, 170, 91, 41, 141, 137, 161, 192, 169, 43, 100, 93, 18, 174, 148, 216, 113, 142, 37, 27, 32, 233, 249, 29, 83, 118, 5, 176, 168, 64, 25, 154, 195, 32, 67, 167, 133, 167, 217, 163, 69, 179, 37, 146, 232, 189, 208, 148, 234, 70, 83, 143, 117, 19, 182, 155, 240, 76, 56, 228, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 123, 124, 65, 95, 76, 98, 200, 137, 83, 250, 67, 120, 111, 87, 193, 203, 31, 47, 218, 48, 108, 206, 156, 7, 2, 162, 119, 230, 29, 130, 144, 149} if bytes.Equal(pubKey.key, pubKeyBytes) == false { t.Fatalf("failed") @@ -115,11 +116,11 @@ func TestGetKeys(t *testing.T) { } pri1BytesExpected := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 3, 161, 7, 191, 243, 206, 16, 190, 29, 112, 221, 24, 231, 75, 192, 153, 103, 228, 214, 48, 155, 165, 13, 95, 29, 220, 134, 100, 18, 85, 49, 184} - pri2BytesExpected := []byte{21, 33, 239, 204, 102, 185, 115, 50, 89, 12, 100, 241, 96, 135, 180, 153, 17, 137, 66, 118, 74, 39, 75, 54, 72, 30, 184, 225, 49, 120, 2, 99, 11, 103, 15, 179, 125, 232, 56, 52, 52, 140, 151, 28, 198, 100, 238, 138, 183, 246, 66, 109, 93, 105, 184, 138, 101, 22, 97, 229, 209, 122, 254, 133, 244, 222, 150, 120, 172, 244, 138, 134, 6, 192, 242, 164, 119, 244, 90, 170, 101, 139, 53, 194, 192, 221, 91, 99, 34, 197, 23, 174, 10, 123, 49, 128, 220, 52, 40, 214, 230, 156, 192, 170, 148, 66, 180, 218, 36, 182, 255, 159, 41, 52, 132, 150, 236, 114, 143, 178, 107, 15, 183, 113, 90, 84, 143, 93, 156, 52, 114, 228, 64, 105, 90, 162, 9, 36, 39, 69, 160, 200, 69, 216, 52, 74, 33, 132, 104, 163, 6, 8, 10, 193, 37, 203, 164, 129, 2, 65, 17, 3, 153, 105, 0, 193, 0, 18, 4, 33, 24, 22, 34, 91, 24, 9, 35, 194, 113, 201, 48, 44, 8, 56, 42, 136, 66, 34, 89, 52, 97, 32, 185, 8, 83, 38, 98, 218, 134, 41, 73, 146, 140, 96, 36, 13, 161, 32, 36, 20, 22, 9, 2, 71, 37, 200, 194, 144, 8, 163, 105, 11, 33, 133, 212, 48, 72, 83, 38, 0, 65, 34, 100, 226, 18, 48, 18, 198, 144, 136, 0, 77, 2, 66, 32, 89, 130, 64, 153, 130, 49, 201, 130, 33, 28, 164, 80, 12, 137, 4, 74, 22, 97, 219, 48, 13, 225, 166, 145, 68, 54, 97, 209, 18, 134, 145, 200, 5, 8, 70, 45, 26, 180, 100, 34, 54, 96, 212, 180, 0, 200, 184, 0, 28, 41, 44, 220, 134, 69, 3, 130, 9, 73, 176, 100, 17, 68, 76, 209, 128, 140, 210, 132, 8, 82, 22, 114, 74, 128, 113, 28, 197, 108, 147, 0, 98, 67, 16, 140, 88, 8, 72, 16, 69, 113, 99, 34, 10, 27, 17, 136, 226, 182, 9, 17, 201, 109, 192, 22, 138, 90, 182, 41, 196, 132, 72, 80, 24, 1, 132, 194, 1, 200, 196, 33, 16, 7, 64, 162, 144, 5, 26, 164, 68, 82, 68, 140, 24, 52, 38, 4, 49, 142, 227, 32, 104, 35, 1, 18, 9, 185, 100, 32, 160, 48, 193, 34, 113, 64, 54, 48, 11, 184, 17, 196, 68, 104, 4, 181, 9, 219, 0, 0, 83, 66, 69, 73, 50, 68, 228, 68, 110, 8, 197, 36, 217, 194, 133, 25, 196, 97, 216, 150, 45, 66, 20, 108, 9, 162, 4, 220, 68, 10, 24, 20, 41, 137, 194, 105, 99, 2, 41, 34, 48, 10, 161, 180, 104, 34, 149, 137, 11, 57, 76, 210, 68, 42, 9, 48, 146, 8, 192, 112, 25, 50, 133, 164, 8, 2, 12, 41, 42, 217, 24, 98, 212, 36, 142, 34, 57, 65, 76, 132, 49, 35, 24, 100, 3, 149, 112, 153, 152, 68, 88, 136, 137, 225, 16, 98, 33, 17, 70, 98, 34, 128, 225, 68, 49, 224, 20, 65, 152, 32, 49, 195, 184, 12, 0, 128, 105, 208, 70, 45, 11, 51, 70, 153, 144, 97, 33, 66, 73, 153, 68, 45, 156, 184, 49, 216, 132, 132, 1, 73, 66, 225, 36, 14, 226, 182, 8, 11, 67, 109, 66, 8, 146, 145, 192, 80, 11, 162, 41, 156, 2, 101, 8, 5, 110, 12, 183, 129, 148, 194, 5, 152, 34, 64, 152, 180, 32, 4, 160, 45, 82, 8, 46, 0, 66, 48, 26, 41, 65, 192, 164, 49, 2, 20, 110, 65, 144, 44, 35, 7, 82, 228, 4, 76, 155, 148, 48, 68, 4, 13, 19, 197, 40, 2, 198, 112, 148, 72, 0, 202, 32, 98, 68, 200, 8, 224, 34, 65, 28, 70, 129, 162, 72, 140, 139, 196, 45, 99, 8, 134, 161, 6, 144, 27, 66, 4, 17, 130, 80, 10, 67, 78, 32, 37, 76, 1, 57, 78, 137, 40, 18, 25, 2, 48, 154, 50, 36, 3, 153, 45, 75, 48, 109, 28, 146, 32, 3, 8, 0, 68, 40, 74, 131, 196, 5, 3, 70, 104, 201, 198, 33, 16, 20, 105, 26, 16, 14, 24, 19, 100, 84, 50, 134, 27, 25, 137, 80, 134, 81, 72, 192, 13, 64, 54, 112, 192, 68, 69, 33, 35, 9, 32, 145, 69, 35, 128, 101, 90, 200, 68, 82, 50, 70, 138, 64, 104, 200, 146, 65, 194, 56, 141, 67, 66, 50, 32, 57, 112, 33, 130, 65, 28, 64, 37, 195, 48, 142, 26, 198, 77, 99, 148, 72, 193, 36, 100, 26, 168, 64, 33, 136, 145, 88, 70, 140, 226, 16, 138, 203, 128, 136, 18, 66, 18, 9, 71, 50, 164, 68, 40, 65, 32, 106, 4, 50, 68, 218, 160, 104, 97, 70, 33, 130, 70, 4, 195, 194, 112, 80, 196, 145, 220, 48, 9, 140, 68, 97, 81, 196, 97, 25, 196, 0, 4, 52, 2, 27, 161, 77, 163, 54, 74, 145, 152, 80, 136, 68, 98, 16, 67, 33, 17, 3, 137, 16, 145, 129, 212, 166, 137, 4, 72, 98, 20, 16, 32, 192, 50, 102, 203, 0, 38, 146, 176, 12, 153, 32, 114, 16, 137, 45, 146, 8, 70, 202, 52, 16, 2, 162, 49, 201, 20, 13, 210, 30, 111, 56, 116, 94, 168, 124, 29, 78, 165, 34, 152, 13, 250, 78, 3, 157, 230, 179, 202, 28, 55, 249, 65, 67, 173, 127, 40, 239, 22, 103, 188, 137, 116, 5, 191, 155, 101, 183, 133, 123, 179, 141, 118, 74, 222, 66, 154, 92, 51, 163, 28, 49, 92, 92, 188, 166, 71, 7, 69, 255, 99, 178, 203, 0, 199, 116, 74, 27, 204, 208, 9, 103, 248, 165, 197, 202, 31, 82, 32, 146, 1, 224, 69, 57, 194, 130, 122, 56, 120, 73, 164, 229, 70, 8, 238, 57, 229, 97, 134, 125, 65, 248, 91, 25, 233, 245, 144, 109, 27, 92, 201, 109, 209, 46, 84, 221, 151, 134, 202, 94, 63, 1, 237, 166, 150, 136, 13, 130, 36, 101, 70, 143, 233, 86, 46, 208, 163, 18, 7, 251, 44, 20, 209, 223, 221, 31, 168, 89, 77, 187, 160, 74, 248, 193, 41, 173, 38, 149, 235, 229, 83, 183, 130, 174, 166, 175, 15, 42, 101, 239, 239, 210, 232, 133, 92, 24, 91, 69, 187, 97, 40, 81, 242, 229, 31, 174, 9, 106, 219, 54, 151, 152, 185, 92, 142, 118, 204, 207, 195, 154, 135, 7, 81, 175, 150, 176, 29, 228, 223, 116, 120, 55, 12, 63, 115, 184, 224, 52, 124, 55, 115, 59, 5, 200, 197, 214, 248, 7, 67, 182, 69, 3, 60, 149, 30, 70, 81, 237, 59, 210, 152, 237, 9, 42, 29, 172, 123, 134, 183, 155, 95, 180, 70, 83, 33, 163, 78, 247, 193, 4, 203, 192, 219, 21, 25, 33, 159, 220, 145, 241, 12, 187, 127, 180, 188, 249, 12, 112, 226, 142, 130, 225, 35, 127, 125, 145, 27, 126, 199, 100, 227, 74, 214, 79, 157, 168, 101, 119, 5, 45, 158, 2, 215, 40, 240, 89, 94, 78, 193, 249, 11, 94, 245, 56, 80, 213, 45, 215, 74, 159, 67, 157, 1, 20, 212, 159, 6, 85, 52, 4, 158, 211, 148, 2, 174, 125, 122, 130, 111, 131, 184, 130, 196, 135, 227, 68, 15, 105, 211, 85, 183, 255, 13, 144, 128, 173, 43, 140, 85, 33, 45, 37, 30, 41, 251, 255, 122, 110, 30, 132, 125, 221, 40, 64, 134, 75, 216, 5, 127, 182, 237, 119, 15, 19, 19, 122, 155, 26, 35, 197, 245, 7, 41, 129, 145, 37, 159, 71, 197, 130, 77, 18, 135, 213, 24, 173, 30, 29, 195, 193, 57, 157, 176, 205, 199, 57, 74, 91, 243, 146, 178, 91, 241, 172, 32, 61, 141, 203, 182, 94, 160, 4, 66, 78, 55, 25, 146, 92, 16, 235, 39, 115, 69, 126, 178, 244, 115, 55, 123, 63, 118, 133, 175, 117, 114, 186, 177, 178, 130, 197, 233, 171, 0, 170, 217, 65, 115, 215, 15, 70, 9, 69, 87, 243, 116, 245, 141, 113, 113, 161, 242, 85, 128, 181, 33, 130, 215, 60, 42, 65, 49, 244, 174, 131, 187, 211, 211, 166, 95, 165, 2, 54, 193, 131, 56, 107, 24, 151, 14, 241, 72, 46, 219, 219, 91, 197, 58, 40, 138, 231, 27, 153, 100, 127, 39, 142, 119, 196, 134, 175, 217, 240, 158, 151, 98, 166, 248, 127, 198, 7, 152, 135, 136, 82, 43, 54, 42, 103, 87, 51, 123, 93, 251, 150, 21, 229, 218, 164, 247, 145, 228, 55, 91, 80, 116, 231, 246, 82, 38, 205, 233, 25, 237, 213, 39, 162, 142, 5, 174, 119, 153, 253, 9, 190, 171, 69, 101, 17, 150, 221, 249, 20, 115, 108, 44, 37, 52, 195, 89, 120, 172, 110, 93, 184, 36, 47, 191, 172, 67, 75, 127, 237, 215, 231, 10, 112, 48, 156, 217, 33, 115, 219, 9, 84, 125, 226, 41, 211, 95, 109, 13, 192, 91, 128, 207, 113, 171, 235, 40, 87, 120, 124, 240, 239, 13, 17, 11, 96, 238, 15, 145, 235, 132, 0, 207, 112, 101, 251, 86, 143, 46, 56, 119, 125, 2, 242, 127, 52, 23, 75, 86, 163, 236, 76, 160, 151, 134, 2, 93, 152, 171, 180, 248, 165, 195, 75, 184, 125, 104, 86, 91, 56, 124, 127, 89, 167, 173, 103, 175, 36, 34, 57, 30, 112, 1, 32, 15, 125, 148, 182, 128, 193, 248, 141, 123, 233, 192, 36, 84, 207, 113, 148, 164, 90, 46, 64, 23, 189, 188, 206, 84, 15, 35, 255, 185, 194, 1, 196, 58, 206, 138, 99, 76, 168, 105, 177, 135, 115, 87, 119, 68, 81, 164, 145, 80, 232, 213, 232, 229, 126, 201, 175, 176, 241, 3, 21, 180, 176, 202, 126, 26, 233, 211, 207, 227, 73, 91, 49, 91, 27, 237, 130, 149, 53, 203, 89, 74, 122, 169, 250, 132, 151, 229, 207, 96, 227, 220, 5, 132, 100, 255, 228, 57, 138, 133, 184, 147, 92, 152, 98, 194, 233, 112, 34, 139, 99, 4, 116, 99, 68, 231, 155, 45, 37, 46, 152, 23, 27, 250, 156, 234, 22, 244, 38, 98, 121, 17, 172, 30, 75, 4, 14, 37, 183, 123, 248, 218, 37, 243, 71, 62, 24, 158, 210, 43, 223, 154, 137, 235, 18, 3, 247, 113, 193, 239, 179, 141, 82, 227, 90, 223, 163, 158, 28, 10, 239, 154, 161, 141, 60, 214, 101, 34, 93, 53, 185, 251, 70, 150, 123, 51, 205, 143, 240, 150, 30, 36, 78, 194, 50, 252, 2, 117, 192, 91, 150, 173, 67, 51, 208, 239, 205, 168, 142, 255, 205, 18, 73, 148, 201, 111, 160, 55, 255, 82, 242, 97, 142, 95, 216, 218, 162, 57, 60, 31, 23, 10, 124, 11, 227, 174, 226, 125, 101, 112, 119, 66, 59, 82, 236, 97, 198, 196, 49, 41, 235, 50, 50, 247, 93, 121, 216, 103, 149, 48, 124, 176, 34, 82, 22, 109, 53, 168, 14, 199, 43, 39, 77, 215, 52, 220, 129, 32, 103, 82, 33, 96, 119, 235, 233, 82, 183, 214, 240, 59, 223, 25, 191, 38, 61, 184, 100, 170, 250, 66, 222, 3, 63, 163, 23, 0, 134, 92, 239, 111, 225, 96, 27, 149, 29, 162, 77, 106, 91, 6, 138, 48, 90, 135, 217, 108, 213, 41, 63, 214, 204, 12, 110, 245, 135, 17, 183, 194, 34, 183, 7, 255, 64, 36, 48, 255, 186, 193, 33, 251, 109, 66, 124, 253, 28, 170, 165, 124, 203, 93, 59, 124, 235, 56, 183, 51, 176, 238, 146, 215, 26, 71, 172, 125, 233, 164, 71, 120, 123, 215, 92, 217, 125, 237, 140, 242, 17, 250, 163, 105, 65, 160, 124, 135, 152, 83, 121, 152, 53, 65, 93, 169, 103, 191, 4, 162, 39, 45, 157, 24, 225, 234, 121, 159, 8, 184, 69, 222, 2, 210, 65, 91, 22, 144, 87, 245, 31, 37, 171, 68, 36, 192, 81, 126, 196, 56, 180, 139, 28, 59, 123, 84, 39, 181, 58, 224, 15, 248, 114, 69, 190, 167, 143, 145, 51, 115, 155, 176, 232, 99, 118, 38, 66, 30, 198, 220, 138, 32, 37, 110, 186, 150, 11, 104, 238, 40, 200, 105, 116, 65, 199, 215, 226, 249, 127, 180, 175, 78, 24, 217, 168, 196, 180, 197, 122, 243, 235, 132, 83, 36, 58, 146, 110, 162, 97, 31, 216, 193, 217, 32, 224, 49, 117, 227, 224, 180, 104, 131, 166, 155, 53, 106, 132, 237, 170, 23, 226, 176, 13, 130, 49, 86, 206, 105, 7, 18, 46, 214, 95, 177, 78, 247, 99, 56, 142, 105, 121, 136, 203, 18, 82, 179, 205, 34, 55, 84, 247, 233, 114, 76, 48, 93, 91, 42, 29, 236, 212, 84, 234, 44, 252, 79, 201, 11, 241, 53, 197, 197, 64, 125, 238, 44, 131, 192, 4, 85, 135, 193, 181, 136, 252, 251, 223, 217, 82, 6, 154, 255, 64, 65, 136, 208, 38, 171, 234, 57, 143, 17, 171, 175, 233, 119, 175, 63, 19, 223, 250, 210, 193, 205, 254, 189, 216, 45, 66, 157, 32, 134, 169, 28, 59, 174, 252, 58, 131, 143, 180, 84, 33, 208, 40, 147, 94, 89, 89, 18, 142, 200, 235, 247, 110, 248, 233, 187, 238, 168, 110, 88, 148, 81, 93, 28, 237, 137, 187, 40, 100, 18, 125, 21, 105, 222, 40, 174, 127, 88, 161, 75, 168, 0, 66, 76, 159, 238, 168, 199, 246, 55, 3, 18, 8, 175, 48, 7, 159, 253, 112, 191, 43, 37, 185, 11, 44, 204, 242, 114, 139, 61, 58, 157, 139, 251, 184, 115, 142, 233, 127, 7, 16, 231, 52, 66, 56, 0, 120, 216, 97, 32, 217, 126, 41, 153, 223, 70, 232, 14, 36, 24, 80, 15, 200, 218, 175, 95, 97, 67, 154, 24, 113, 123, 28, 80, 221, 189, 223, 97, 184, 238, 165, 70, 160, 206, 235, 206, 35, 114, 211, 95, 175, 76, 200, 41, 117, 114, 104, 75, 217, 212, 219, 166, 107, 217, 204, 135, 15, 171, 202, 240, 217, 112, 87, 160, 90, 204, 239, 22, 103, 190, 148, 46, 87, 160, 33, 239, 150, 188, 159, 67, 126, 121, 106, 229, 71, 9, 243, 160, 131, 136, 38, 196, 18, 190, 5, 165, 182, 101, 134, 90, 41, 23, 219, 10, 198, 169, 28, 160, 132, 17, 175, 191, 42, 114, 53, 113, 51, 153, 112, 110, 153, 234, 247, 88, 208, 59, 194, 4, 69, 4, 244, 220, 243, 130, 35, 65, 249, 189, 224, 210, 152, 177, 146, 130, 127, 33, 136, 234, 90, 89, 18, 62, 255, 235, 254, 36, 236, 96, 10, 203, 145, 229, 180, 238, 210, 120, 151, 89, 241, 202, 187, 41, 193, 11, 71, 227, 63, 152, 174, 70, 123, 48, 165, 97, 46, 242, 59, 244, 144, 127, 114, 74, 55, 254, 8, 145, 5, 117, 98, 150, 140, 183, 135, 248, 202, 44, 59, 112, 133, 245, 104, 233, 119, 178, 153, 129, 116, 190, 188, 206, 86, 99, 3, 29, 46, 216, 197, 47, 141} + pri2BytesExpected := []byte{134, 249, 111, 172, 230, 11, 139, 158, 17, 47, 148, 203, 100, 155, 190, 51, 123, 172, 108, 128, 170, 161, 20, 113, 161, 91, 96, 226, 28, 72, 226, 246, 174, 184, 68, 118, 245, 6, 150, 90, 99, 241, 33, 182, 19, 240, 227, 119, 8, 185, 20, 245, 61, 195, 3, 6, 201, 159, 32, 131, 75, 255, 194, 84, 0, 4, 116, 30, 190, 187, 210, 219, 22, 135, 79, 168, 80, 170, 189, 252, 150, 136, 156, 91, 58, 168, 61, 43, 235, 57, 43, 50, 251, 228, 191, 172, 18, 118, 37, 15, 116, 0, 137, 44, 235, 192, 91, 30, 236, 51, 221, 174, 113, 177, 187, 134, 149, 121, 134, 220, 131, 36, 154, 179, 40, 146, 236, 43, 145, 8, 97, 28, 57, 13, 11, 181, 132, 200, 40, 48, 28, 69, 4, 137, 68, 106, 3, 70, 66, 34, 22, 17, 8, 57, 40, 129, 8, 33, 68, 160, 81, 17, 40, 9, 4, 50, 32, 26, 21, 114, 17, 39, 13, 17, 133, 80, 220, 150, 12, 161, 180, 17, 195, 48, 4, 20, 196, 4, 88, 66, 128, 4, 72, 129, 36, 200, 145, 84, 182, 76, 10, 2, 98, 32, 177, 68, 11, 54, 102, 67, 144, 32, 17, 37, 70, 161, 52, 146, 209, 52, 145, 74, 0, 18, 34, 9, 69, 160, 72, 41, 10, 25, 17, 19, 180, 33, 154, 18, 50, 202, 0, 102, 146, 160, 72, 9, 40, 130, 33, 193, 81, 4, 3, 98, 11, 67, 101, 160, 20, 97, 9, 18, 2, 89, 176, 97, 155, 132, 37, 146, 40, 44, 212, 166, 140, 139, 4, 112, 0, 184, 129, 91, 134, 77, 146, 18, 34, 136, 160, 17, 153, 66, 32, 161, 36, 77, 162, 0, 144, 2, 50, 68, 24, 180, 112, 19, 134, 5, 36, 195, 69, 20, 181, 104, 97, 52, 129, 20, 72, 37, 68, 22, 66, 98, 24, 129, 73, 130, 37, 96, 150, 64, 26, 196, 101, 4, 182, 9, 10, 23, 36, 0, 71, 2, 138, 196, 49, 33, 68, 134, 16, 68, 14, 9, 69, 80, 194, 54, 138, 136, 56, 12, 209, 2, 74, 11, 132, 140, 208, 34, 141, 73, 198, 68, 98, 64, 6, 212, 180, 76, 75, 2, 2, 99, 16, 44, 98, 72, 100, 0, 199, 108, 162, 152, 40, 220, 38, 132, 11, 21, 64, 97, 66, 73, 12, 54, 41, 139, 176, 105, 9, 165, 8, 17, 20, 133, 73, 128, 144, 24, 22, 146, 68, 66, 70, 162, 34, 73, 16, 166, 80, 208, 148, 137, 202, 48, 36, 160, 54, 140, 225, 162, 1, 226, 52, 64, 136, 36, 96, 2, 3, 81, 211, 72, 104, 83, 36, 110, 28, 161, 77, 208, 32, 32, 129, 148, 37, 92, 0, 10, 193, 64, 72, 148, 36, 6, 128, 32, 104, 154, 18, 82, 8, 133, 33, 73, 40, 34, 193, 56, 13, 32, 199, 65, 65, 132, 144, 156, 66, 129, 67, 0, 44, 211, 146, 105, 160, 16, 97, 66, 168, 101, 34, 71, 102, 36, 50, 98, 132, 182, 41, 72, 36, 70, 33, 168, 113, 3, 200, 36, 226, 48, 137, 28, 70, 5, 218, 68, 33, 211, 4, 128, 160, 54, 13, 130, 148, 37, 10, 48, 108, 16, 48, 142, 219, 48, 46, 148, 40, 74, 0, 162, 17, 137, 180, 133, 11, 2, 132, 1, 53, 50, 2, 2, 136, 36, 48, 128, 192, 24, 97, 216, 22, 105, 132, 200, 64, 193, 36, 69, 18, 55, 80, 154, 50, 130, 90, 178, 80, 154, 180, 77, 26, 37, 13, 24, 200, 1, 28, 57, 37, 80, 34, 136, 65, 38, 13, 129, 64, 77, 219, 160, 9, 148, 164, 9, 98, 20, 36, 212, 8, 110, 33, 41, 130, 16, 129, 76, 36, 135, 45, 3, 195, 69, 204, 32, 72, 25, 137, 108, 12, 149, 108, 83, 196, 12, 148, 162, 80, 90, 52, 77, 17, 5, 4, 65, 18, 1, 64, 150, 96, 26, 8, 48, 34, 38, 113, 84, 176, 37, 219, 132, 100, 225, 52, 82, 160, 160, 128, 140, 164, 73, 64, 128, 136, 3, 64, 4, 154, 64, 134, 10, 34, 70, 34, 2, 100, 81, 40, 128, 35, 68, 0, 84, 6, 82, 10, 41, 140, 131, 144, 12, 68, 36, 68, 18, 194, 128, 209, 18, 5, 8, 49, 97, 88, 146, 48, 18, 66, 13, 27, 199, 97, 18, 71, 129, 32, 36, 1, 67, 162, 100, 88, 2, 1, 73, 198, 1, 8, 153, 141, 162, 50, 34, 68, 168, 4, 2, 136, 8, 0, 19, 134, 36, 177, 129, 1, 0, 34, 129, 68, 145, 34, 22, 49, 20, 152, 137, 19, 19, 14, 217, 148, 76, 25, 72, 1, 11, 194, 144, 18, 151, 80, 27, 147, 32, 192, 70, 32, 152, 64, 36, 132, 4, 80, 212, 64, 138, 148, 134, 8, 98, 54, 136, 33, 68, 17, 67, 198, 68, 28, 54, 105, 128, 70, 5, 228, 34, 105, 76, 176, 145, 26, 197, 41, 8, 201, 16, 26, 146, 8, 139, 168, 12, 27, 5, 97, 137, 18, 141, 194, 178, 140, 8, 6, 137, 164, 72, 100, 92, 184, 141, 154, 192, 41, 138, 22, 73, 164, 38, 65, 34, 7, 50, 91, 54, 68, 225, 56, 142, 154, 178, 17, 11, 164, 64, 246, 222, 106, 115, 63, 61, 112, 202, 199, 177, 56, 66, 124, 209, 209, 95, 119, 160, 187, 85, 20, 247, 45, 17, 119, 8, 73, 38, 0, 111, 222, 207, 63, 114, 230, 112, 50, 31, 65, 243, 229, 158, 229, 149, 30, 66, 111, 47, 213, 117, 177, 192, 56, 16, 116, 96, 172, 24, 127, 195, 225, 183, 189, 250, 115, 171, 195, 171, 60, 177, 33, 118, 27, 114, 243, 47, 36, 248, 179, 93, 151, 221, 160, 95, 25, 177, 79, 188, 48, 198, 118, 5, 20, 61, 27, 24, 33, 246, 60, 107, 21, 164, 223, 70, 189, 150, 175, 124, 76, 171, 53, 136, 101, 47, 75, 91, 170, 63, 186, 238, 216, 17, 18, 106, 212, 99, 201, 213, 126, 183, 96, 143, 42, 33, 221, 104, 9, 25, 204, 8, 55, 101, 75, 237, 73, 20, 108, 206, 79, 7, 248, 177, 48, 53, 40, 106, 73, 255, 122, 47, 218, 57, 17, 103, 99, 69, 174, 16, 167, 176, 248, 173, 79, 7, 223, 158, 120, 15, 234, 54, 29, 85, 202, 19, 119, 135, 44, 227, 167, 92, 231, 201, 19, 47, 247, 76, 237, 87, 11, 178, 236, 171, 137, 181, 69, 48, 44, 177, 67, 48, 139, 216, 151, 165, 159, 13, 189, 208, 122, 56, 95, 222, 147, 184, 121, 57, 130, 33, 180, 144, 136, 231, 46, 110, 213, 178, 158, 4, 36, 166, 13, 238, 225, 117, 247, 214, 145, 103, 227, 134, 0, 246, 0, 8, 51, 232, 223, 134, 247, 185, 36, 193, 231, 105, 83, 246, 169, 227, 60, 185, 89, 147, 16, 107, 15, 42, 200, 240, 193, 84, 212, 22, 238, 154, 76, 250, 234, 55, 73, 145, 250, 68, 31, 218, 208, 36, 54, 132, 7, 171, 33, 215, 175, 101, 131, 33, 166, 15, 47, 214, 138, 237, 145, 255, 64, 193, 183, 134, 153, 8, 58, 50, 226, 109, 44, 83, 84, 97, 98, 207, 218, 0, 175, 118, 206, 170, 184, 181, 25, 210, 253, 220, 177, 185, 40, 139, 80, 196, 65, 25, 18, 185, 23, 243, 92, 170, 19, 205, 105, 70, 251, 86, 222, 52, 99, 249, 92, 29, 176, 197, 45, 208, 244, 194, 107, 25, 69, 217, 68, 168, 67, 87, 77, 240, 185, 42, 128, 234, 6, 2, 32, 38, 153, 70, 189, 70, 165, 182, 85, 196, 109, 29, 3, 204, 10, 96, 162, 137, 82, 25, 68, 99, 99, 218, 251, 62, 213, 125, 87, 201, 94, 78, 187, 173, 55, 155, 137, 243, 234, 172, 92, 173, 63, 172, 131, 255, 88, 112, 59, 110, 189, 10, 105, 41, 228, 25, 132, 149, 155, 12, 31, 247, 138, 205, 151, 6, 7, 126, 238, 31, 28, 226, 114, 223, 35, 29, 5, 109, 94, 229, 80, 186, 252, 71, 13, 52, 167, 163, 68, 93, 156, 151, 104, 162, 61, 115, 153, 99, 58, 247, 145, 93, 47, 137, 87, 164, 14, 153, 19, 52, 153, 14, 228, 17, 59, 70, 209, 34, 233, 13, 47, 221, 141, 32, 137, 68, 31, 171, 168, 95, 251, 132, 198, 153, 180, 103, 155, 132, 211, 46, 199, 94, 100, 50, 243, 196, 105, 191, 216, 226, 155, 204, 192, 49, 27, 232, 210, 86, 169, 221, 53, 66, 169, 151, 141, 61, 76, 203, 31, 85, 119, 24, 143, 235, 202, 65, 3, 201, 177, 187, 183, 42, 193, 203, 1, 124, 185, 185, 180, 12, 181, 131, 239, 94, 233, 34, 99, 239, 238, 234, 6, 174, 25, 96, 60, 50, 184, 114, 116, 100, 104, 220, 198, 145, 82, 132, 6, 153, 56, 168, 162, 226, 149, 243, 214, 62, 106, 243, 160, 238, 148, 237, 235, 174, 76, 63, 118, 108, 121, 214, 120, 153, 34, 198, 200, 0, 56, 56, 134, 5, 134, 48, 33, 18, 115, 83, 153, 214, 125, 221, 53, 88, 253, 11, 98, 90, 122, 69, 146, 214, 231, 127, 191, 136, 17, 75, 141, 134, 47, 26, 90, 104, 38, 125, 254, 208, 87, 131, 145, 189, 25, 220, 223, 166, 124, 18, 17, 231, 155, 173, 206, 156, 127, 50, 78, 192, 219, 19, 253, 63, 99, 86, 140, 37, 35, 80, 135, 92, 140, 98, 229, 216, 182, 103, 237, 200, 72, 185, 52, 58, 203, 49, 243, 166, 13, 90, 73, 46, 59, 104, 203, 177, 249, 192, 221, 40, 140, 83, 115, 239, 72, 201, 205, 121, 233, 230, 252, 95, 254, 25, 63, 71, 10, 251, 16, 68, 0, 206, 239, 166, 133, 176, 205, 95, 236, 221, 250, 199, 96, 128, 165, 87, 106, 199, 249, 222, 36, 133, 207, 186, 70, 54, 128, 131, 215, 21, 210, 179, 153, 40, 154, 253, 222, 48, 17, 97, 13, 223, 121, 248, 237, 144, 172, 63, 45, 158, 184, 178, 33, 27, 225, 214, 21, 4, 217, 125, 146, 135, 215, 117, 175, 128, 102, 129, 252, 184, 13, 46, 109, 187, 224, 92, 48, 251, 14, 241, 79, 189, 250, 252, 156, 27, 44, 133, 169, 9, 80, 33, 51, 111, 14, 249, 221, 251, 99, 128, 198, 165, 93, 227, 36, 104, 28, 89, 76, 87, 87, 93, 30, 14, 131, 126, 164, 218, 235, 142, 206, 201, 218, 100, 70, 114, 63, 185, 16, 163, 151, 170, 122, 158, 115, 6, 124, 136, 110, 168, 192, 233, 27, 58, 211, 72, 248, 10, 1, 67, 56, 106, 159, 94, 177, 49, 93, 123, 117, 124, 179, 190, 149, 150, 147, 48, 100, 169, 2, 250, 37, 206, 49, 189, 115, 219, 103, 63, 244, 157, 43, 13, 41, 213, 236, 88, 166, 77, 125, 199, 16, 155, 40, 57, 9, 110, 164, 239, 34, 160, 58, 171, 25, 107, 10, 221, 176, 235, 10, 78, 183, 115, 118, 211, 173, 4, 102, 197, 227, 50, 158, 36, 22, 14, 128, 128, 254, 173, 58, 76, 23, 93, 85, 81, 64, 19, 76, 222, 2, 128, 5, 212, 153, 131, 227, 148, 135, 238, 4, 198, 153, 68, 172, 169, 145, 148, 248, 72, 65, 84, 12, 52, 68, 176, 23, 53, 92, 151, 184, 96, 17, 6, 252, 30, 209, 226, 24, 29, 38, 191, 170, 177, 47, 157, 99, 142, 199, 171, 56, 133, 122, 158, 85, 195, 245, 70, 71, 252, 150, 70, 9, 181, 226, 250, 72, 40, 182, 100, 239, 255, 222, 194, 208, 27, 117, 247, 20, 111, 233, 71, 104, 137, 103, 87, 104, 120, 66, 147, 75, 157, 202, 4, 164, 4, 12, 93, 62, 29, 236, 29, 52, 56, 90, 250, 145, 240, 232, 224, 195, 48, 236, 143, 229, 66, 64, 50, 103, 238, 26, 22, 181, 225, 140, 29, 199, 136, 104, 254, 213, 79, 9, 234, 145, 101, 213, 171, 5, 250, 45, 31, 154, 43, 93, 65, 165, 124, 16, 201, 214, 216, 82, 71, 28, 183, 152, 17, 14, 87, 252, 239, 249, 194, 89, 133, 118, 208, 89, 100, 99, 51, 47, 137, 131, 190, 95, 224, 188, 135, 52, 10, 211, 91, 92, 250, 210, 178, 37, 193, 133, 53, 112, 51, 95, 142, 175, 171, 152, 167, 122, 99, 243, 46, 78, 12, 62, 81, 182, 83, 4, 203, 11, 152, 138, 173, 239, 17, 217, 241, 40, 116, 79, 233, 59, 165, 67, 244, 96, 152, 181, 174, 57, 4, 157, 186, 221, 103, 89, 195, 99, 125, 74, 139, 102, 180, 180, 172, 213, 75, 219, 200, 49, 124, 206, 149, 9, 116, 218, 124, 179, 73, 40, 46, 14, 251, 208, 176, 22, 223, 157, 252, 125, 14, 83, 68, 141, 115, 79, 5, 24, 145, 63, 226, 127, 122, 81, 247, 235, 0, 5, 5, 200, 156, 239, 93, 139, 248, 100, 54, 93, 90, 64, 24, 155, 26, 56, 35, 253, 111, 93, 194, 118, 9, 54, 46, 93, 163, 91, 8, 138, 16, 23, 200, 221, 208, 155, 54, 6, 126, 249, 255, 155, 145, 223, 132, 43, 12, 51, 27, 20, 67, 49, 242, 160, 154, 106, 75, 229, 242, 135, 126, 149, 202, 80, 42, 168, 3, 96, 74, 61, 96, 118, 184, 162, 9, 122, 72, 43, 126, 123, 103, 28, 246, 92, 64, 115, 13, 233, 17, 159, 55, 113, 90, 1, 175, 245, 42, 70, 149, 130, 255, 100, 175, 248, 219, 172, 92, 228, 59, 162, 232, 56, 236, 59, 136, 117, 6, 160, 84, 226, 116, 21, 239, 117, 214, 112, 62, 44, 242, 43, 67, 255, 221, 121, 31, 221, 156, 61, 16, 105, 100, 246, 117, 51, 153, 253, 109, 85, 86, 115, 172, 119, 196, 155, 103, 206, 215, 160, 69, 33, 119, 225, 7, 213, 199, 42, 160, 207, 50, 235, 240, 220, 141, 236, 209, 235, 215, 171, 54, 246, 225, 6, 159, 234, 200, 116, 234, 209, 102, 254, 41, 198, 254, 58, 47, 158, 115, 45, 64, 170, 245, 219, 190, 211, 112, 46, 137, 215, 225, 218, 181, 15, 7, 228, 99, 15, 26, 34, 39, 29, 249, 132, 100, 173, 228, 162, 140, 227, 19, 155, 48, 110, 222, 66, 207, 79, 74, 111, 133, 33, 164, 173, 100, 52, 13, 165, 46, 74, 145, 200, 82, 86, 29, 91, 217, 177, 169, 118, 178, 233, 128, 37, 175, 207, 55, 100, 241, 35, 126, 21, 11, 149, 138, 206, 238, 70, 251, 188, 101, 15, 19, 211, 241, 242, 77, 21, 30, 28, 194, 130, 193, 77, 55, 127, 63, 82, 184, 220, 206, 19, 142, 212, 66, 7, 19, 246, 193, 197, 124, 109, 41, 194, 143, 182, 66, 145, 30, 155, 76, 165, 47, 125, 185, 253, 255, 94, 218, 82, 245, 75, 148, 141, 1, 219, 146, 232, 180, 114, 184, 32, 112, 23, 184, 10, 216, 83, 0, 70, 118, 113, 173, 80, 9, 53, 147, 30, 56, 74, 140, 62, 219, 243, 157, 138, 248, 140, 73, 244, 111, 189, 202, 7, 70, 85, 23, 195, 177, 51, 220} pri3BytesExpected := []byte{64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 123, 124, 65, 95, 76, 98, 200, 137, 83, 250, 67, 120, 111, 87, 193, 203, 31, 47, 218, 48, 108, 206, 156, 7, 2, 162, 119, 230, 29, 130, 144, 149} pub1BytesExpected := []byte{3, 161, 7, 191, 243, 206, 16, 190, 29, 112, 221, 24, 231, 75, 192, 153, 103, 228, 214, 48, 155, 165, 13, 95, 29, 220, 134, 100, 18, 85, 49, 184} - pub2BytesExpected := []byte{21, 33, 239, 204, 102, 185, 115, 50, 89, 12, 100, 241, 96, 135, 180, 153, 17, 137, 66, 118, 74, 39, 75, 54, 72, 30, 184, 225, 49, 120, 2, 99, 232, 212, 227, 163, 125, 42, 95, 30, 157, 92, 35, 199, 230, 95, 92, 155, 197, 175, 6, 9, 246, 225, 68, 142, 224, 79, 165, 168, 114, 36, 117, 41, 124, 166, 1, 209, 244, 142, 144, 137, 69, 87, 141, 69, 56, 236, 221, 234, 35, 77, 1, 162, 166, 167, 206, 58, 170, 91, 124, 240, 130, 23, 83, 87, 189, 42, 1, 129, 28, 78, 101, 161, 94, 213, 171, 76, 94, 110, 151, 208, 254, 224, 126, 46, 134, 210, 152, 178, 75, 41, 36, 9, 91, 32, 34, 232, 241, 234, 32, 191, 136, 13, 48, 73, 202, 147, 73, 39, 238, 46, 23, 109, 143, 87, 235, 77, 40, 27, 239, 38, 121, 104, 254, 129, 62, 92, 209, 237, 42, 141, 120, 84, 20, 134, 65, 35, 83, 126, 34, 75, 98, 135, 233, 10, 36, 32, 235, 82, 245, 123, 250, 196, 226, 61, 211, 186, 160, 229, 5, 152, 193, 97, 12, 107, 29, 174, 133, 107, 46, 35, 120, 67, 34, 73, 113, 172, 103, 186, 85, 104, 63, 51, 15, 162, 66, 58, 111, 48, 226, 70, 108, 121, 175, 30, 203, 16, 10, 231, 37, 25, 125, 139, 243, 36, 70, 94, 3, 143, 221, 48, 73, 85, 33, 192, 49, 90, 188, 254, 243, 129, 196, 12, 185, 0, 35, 100, 22, 8, 21, 7, 232, 254, 17, 202, 207, 36, 227, 193, 39, 65, 64, 13, 239, 23, 64, 223, 146, 178, 49, 169, 102, 82, 106, 23, 3, 178, 90, 140, 249, 76, 178, 244, 175, 1, 249, 221, 53, 243, 222, 34, 254, 229, 118, 217, 126, 202, 140, 29, 155, 216, 62, 47, 242, 135, 136, 56, 42, 89, 89, 21, 99, 149, 3, 43, 230, 68, 160, 39, 34, 172, 60, 205, 212, 144, 188, 223, 197, 82, 141, 207, 139, 43, 241, 88, 187, 179, 105, 92, 47, 25, 83, 191, 76, 107, 120, 79, 195, 98, 184, 143, 231, 79, 57, 186, 102, 199, 30, 16, 124, 103, 155, 82, 235, 23, 108, 44, 35, 251, 154, 254, 15, 187, 56, 52, 126, 170, 204, 56, 220, 222, 248, 63, 115, 43, 162, 82, 190, 27, 83, 239, 31, 154, 191, 120, 186, 221, 92, 40, 240, 188, 95, 62, 113, 211, 114, 1, 1, 131, 221, 54, 252, 185, 195, 64, 180, 146, 82, 172, 67, 89, 102, 59, 76, 196, 108, 69, 26, 237, 7, 114, 137, 233, 30, 62, 131, 156, 205, 28, 77, 34, 182, 82, 87, 132, 108, 113, 194, 24, 240, 190, 221, 130, 46, 129, 98, 32, 185, 226, 104, 151, 104, 11, 206, 52, 16, 94, 181, 135, 30, 231, 51, 167, 74, 110, 154, 115, 23, 169, 108, 99, 112, 189, 108, 6, 247, 148, 95, 164, 193, 83, 135, 198, 176, 69, 236, 97, 75, 114, 121, 212, 244, 185, 130, 230, 214, 8, 124, 25, 238, 160, 226, 252, 244, 177, 173, 211, 194, 22, 106, 175, 151, 172, 236, 179, 192, 124, 6, 228, 245, 157, 234, 218, 236, 148, 41, 37, 12, 139, 242, 132, 190, 236, 189, 159, 170, 69, 65, 242, 94, 83, 184, 191, 24, 158, 242, 131, 209, 78, 60, 7, 143, 241, 141, 145, 102, 207, 0, 89, 200, 4, 178, 144, 148, 128, 216, 164, 235, 63, 195, 106, 178, 167, 15, 88, 169, 65, 149, 223, 144, 186, 221, 232, 66, 171, 157, 228, 49, 28, 234, 240, 36, 199, 222, 36, 248, 3, 19, 23, 97, 60, 254, 218, 246, 37, 65, 227, 214, 76, 97, 162, 129, 168, 240, 8, 36, 182, 156, 180, 166, 139, 108, 242, 62, 203, 179, 200, 212, 88, 162, 46, 4, 236, 201, 103, 182, 89, 250, 43, 179, 23, 78, 223, 88, 152, 59, 205, 57, 119, 196, 4, 9, 187, 40, 63, 57, 17, 204, 216, 70, 219, 155, 9, 78, 193, 42, 249, 78, 125, 13, 117, 97, 95, 92, 226, 129, 6, 102, 76, 241, 221, 23, 75, 63, 41, 169, 168, 27, 111, 172, 118, 95, 131, 243, 96, 46, 11, 8, 50, 233, 102, 119, 42, 156, 241, 0, 227, 0, 40, 66, 48, 225, 31, 126, 223, 23, 178, 129, 82, 246, 69, 125, 189, 217, 30, 197, 65, 16, 119, 103, 173, 64, 157, 139, 232, 57, 111, 234, 11, 169, 141, 200, 85, 229, 83, 56, 216, 185, 112, 242, 70, 30, 207, 181, 6, 4, 161, 29, 156, 90, 31, 255, 100, 43, 51, 168, 127, 92, 189, 227, 174, 54, 11, 58, 53, 45, 239, 153, 55, 234, 17, 131, 94, 112, 213, 3, 168, 241, 193, 74, 140, 31, 75, 106, 89, 182, 107, 100, 151, 45, 35, 173, 19, 186, 44, 182, 202, 75, 238, 232, 103, 142, 90, 165, 203, 240, 84, 248, 63, 81, 128, 62, 137, 80, 61, 80, 134, 161, 35, 240, 179, 118, 183, 32, 170, 178, 23, 158, 71, 219, 227, 110, 3, 175, 209, 73, 75, 237, 240, 208, 224, 102, 124, 94, 112, 204, 75, 1, 9, 45, 97, 133, 142, 120, 48, 143, 63, 215, 243, 237, 248, 1, 48, 81, 242, 170, 95, 172, 63, 45, 189, 55, 172, 242, 8, 37, 103, 192, 231, 126, 251, 78, 177, 117, 4, 81, 83, 235, 144, 169, 85, 123, 95, 156, 62, 199, 47, 151, 106, 121, 87, 66, 166, 153, 226, 26, 130, 85, 28, 10, 185, 41, 180, 131, 96, 225, 245, 72, 40, 20, 33, 97, 234, 110, 7, 108, 131, 183, 188, 174, 24, 253, 75, 215, 230, 93, 108, 43, 84, 182, 103, 218, 98, 145, 85, 228, 194, 111, 171, 19, 61, 46, 82, 40, 109, 149, 145, 167, 27, 199, 23, 123, 199, 180, 93, 130, 144, 64, 197, 100, 243, 191, 64, 98, 237, 141, 127, 92, 90, 154, 232, 28, 161, 89, 238, 50, 131, 160, 78, 139, 56, 240, 107, 62, 84, 223, 180, 38, 59, 121, 177, 149, 6, 180, 19, 146, 117, 163, 76, 96, 104, 210, 53, 185, 97, 121, 3, 106, 247, 77, 116, 28, 69, 246, 97, 148, 86, 129, 238, 9, 43, 152, 3, 70, 111, 95, 77, 230, 179, 138, 147, 43, 250, 186, 126, 15, 47, 143, 111, 61, 42, 219, 151, 178, 74, 103, 24, 127, 149, 19, 255, 29, 103, 38, 122, 167, 165, 4, 230, 22, 85, 51, 14, 233, 159, 177, 85, 229, 21, 42, 117, 217, 171, 218, 193, 72, 151, 103, 73, 39, 223, 80, 100, 149, 111, 218, 117, 246, 183, 177, 86, 58, 162, 223, 127, 77, 41, 193, 161, 91, 136, 43, 216, 246, 31, 199, 206, 91, 254, 188, 98, 22, 46, 106, 51, 1, 106, 170, 94, 25, 247, 50, 138, 60, 223, 165, 251, 192, 184, 186, 75, 215, 198, 18, 120, 38, 81, 25, 45, 70, 11, 239, 97, 169, 228, 34, 36, 95, 161, 194, 199, 199, 121, 145, 109, 104, 11, 169, 32, 204, 208, 136, 129, 238, 217, 1, 101, 132, 168, 198, 19, 27, 154, 215, 154, 17, 208, 16, 13, 249, 15, 152, 110, 240, 59, 55, 208, 48, 53, 146, 15, 97, 244, 204, 21, 15, 204, 31, 255, 39, 55, 108, 15, 142, 123, 44, 186, 232, 199, 178, 242, 118, 41, 212, 135, 187, 105, 120, 214, 238, 37, 1, 33, 108, 8, 28, 236, 159, 117, 60, 169, 242, 73, 234, 22, 35, 209, 67, 60, 47, 237, 107, 182, 4, 136, 92, 252, 27, 221, 156, 29, 29, 235, 231, 75, 200, 229, 225, 239, 163, 3, 46, 119, 161, 134, 229, 154, 188, 98, 59, 254} + pub2BytesExpected := []byte{134, 249, 111, 172, 230, 11, 139, 158, 17, 47, 148, 203, 100, 155, 190, 51, 123, 172, 108, 128, 170, 161, 20, 113, 161, 91, 96, 226, 28, 72, 226, 246, 149, 240, 203, 64, 30, 207, 65, 69, 138, 199, 183, 113, 209, 75, 112, 55, 119, 251, 57, 47, 95, 251, 34, 41, 87, 1, 43, 236, 175, 235, 64, 210, 81, 57, 161, 144, 131, 80, 17, 204, 207, 211, 2, 124, 206, 3, 131, 204, 56, 202, 73, 5, 251, 37, 42, 225, 34, 49, 84, 228, 99, 72, 121, 135, 198, 199, 33, 191, 75, 39, 20, 166, 120, 45, 69, 39, 8, 132, 102, 216, 37, 167, 251, 122, 84, 196, 127, 36, 80, 182, 146, 236, 247, 56, 183, 208, 39, 65, 82, 196, 253, 193, 126, 200, 70, 113, 18, 92, 240, 239, 169, 140, 87, 130, 64, 32, 49, 134, 200, 82, 4, 55, 77, 217, 112, 195, 53, 62, 176, 213, 190, 229, 220, 239, 90, 156, 177, 20, 130, 206, 127, 174, 146, 190, 178, 154, 95, 144, 226, 215, 251, 185, 51, 29, 60, 250, 186, 8, 243, 217, 245, 28, 178, 97, 12, 39, 187, 98, 236, 145, 127, 248, 63, 156, 94, 186, 120, 92, 77, 255, 113, 76, 227, 24, 31, 3, 216, 219, 13, 134, 63, 167, 42, 217, 123, 253, 250, 76, 21, 118, 235, 199, 108, 71, 118, 229, 68, 180, 160, 162, 150, 127, 30, 63, 92, 28, 163, 180, 159, 168, 115, 77, 39, 254, 3, 95, 190, 2, 31, 71, 123, 216, 71, 168, 218, 161, 201, 222, 86, 121, 26, 132, 108, 250, 167, 34, 56, 196, 183, 246, 211, 54, 178, 94, 158, 173, 86, 183, 221, 64, 246, 178, 169, 153, 116, 23, 233, 84, 234, 122, 165, 122, 119, 215, 187, 86, 79, 138, 162, 128, 137, 37, 38, 116, 99, 70, 76, 63, 108, 90, 16, 51, 156, 161, 139, 232, 243, 223, 229, 127, 144, 174, 46, 144, 122, 54, 149, 41, 244, 144, 37, 5, 48, 79, 27, 156, 137, 130, 213, 239, 254, 84, 215, 26, 11, 187, 84, 245, 190, 64, 130, 245, 219, 195, 151, 18, 218, 251, 33, 68, 234, 85, 191, 215, 144, 65, 42, 46, 238, 54, 148, 132, 74, 123, 179, 98, 183, 161, 195, 34, 187, 237, 85, 20, 127, 241, 159, 98, 216, 10, 10, 230, 129, 40, 253, 129, 243, 226, 224, 110, 247, 32, 88, 204, 186, 178, 67, 2, 241, 46, 207, 138, 243, 95, 66, 180, 175, 9, 81, 243, 122, 30, 240, 236, 229, 253, 211, 177, 21, 78, 100, 231, 219, 95, 45, 220, 110, 52, 164, 72, 243, 222, 74, 36, 106, 249, 243, 72, 122, 23, 27, 10, 130, 21, 219, 150, 187, 37, 125, 7, 128, 217, 61, 56, 157, 160, 8, 180, 155, 73, 245, 54, 106, 34, 157, 89, 0, 37, 17, 3, 179, 52, 169, 13, 2, 13, 6, 247, 141, 154, 56, 188, 204, 67, 97, 39, 170, 5, 13, 36, 23, 33, 99, 49, 229, 127, 173, 166, 157, 45, 56, 175, 75, 239, 35, 161, 115, 194, 184, 155, 29, 203, 115, 110, 255, 109, 148, 40, 76, 153, 207, 220, 179, 97, 127, 169, 62, 167, 56, 92, 90, 172, 193, 7, 174, 65, 37, 31, 211, 4, 52, 206, 103, 252, 170, 210, 33, 83, 137, 175, 185, 158, 193, 25, 16, 164, 246, 8, 189, 154, 91, 124, 206, 139, 205, 131, 166, 242, 78, 1, 24, 11, 27, 58, 84, 123, 16, 56, 67, 99, 38, 163, 58, 118, 173, 10, 155, 125, 41, 188, 131, 197, 80, 20, 2, 138, 178, 187, 63, 64, 77, 209, 192, 210, 21, 217, 177, 71, 202, 166, 126, 90, 29, 122, 234, 11, 8, 8, 212, 121, 110, 172, 89, 187, 109, 49, 146, 141, 115, 196, 40, 140, 103, 205, 107, 215, 56, 22, 215, 38, 37, 247, 152, 91, 232, 84, 131, 90, 4, 190, 37, 28, 81, 118, 158, 203, 66, 216, 189, 255, 205, 68, 142, 221, 42, 15, 1, 111, 50, 165, 86, 156, 46, 41, 251, 69, 58, 114, 233, 145, 251, 52, 204, 197, 146, 254, 114, 173, 150, 224, 168, 139, 138, 5, 132, 118, 85, 51, 239, 135, 129, 150, 143, 143, 185, 101, 209, 46, 33, 216, 95, 24, 32, 232, 188, 54, 231, 49, 147, 251, 46, 250, 32, 157, 93, 251, 124, 228, 76, 48, 58, 206, 139, 83, 242, 5, 93, 117, 76, 100, 232, 201, 39, 201, 163, 104, 35, 78, 76, 113, 151, 109, 207, 14, 25, 144, 243, 222, 117, 173, 35, 112, 189, 78, 16, 59, 36, 215, 129, 183, 89, 3, 234, 74, 48, 117, 106, 118, 92, 230, 37, 138, 116, 190, 121, 154, 38, 208, 152, 16, 167, 179, 145, 20, 167, 11, 4, 177, 73, 33, 156, 178, 180, 87, 3, 187, 42, 92, 5, 151, 220, 48, 8, 21, 172, 248, 52, 139, 114, 226, 199, 106, 119, 174, 62, 194, 138, 8, 202, 29, 138, 229, 63, 107, 52, 133, 163, 24, 187, 183, 110, 35, 224, 180, 195, 182, 26, 230, 170, 33, 124, 58, 237, 79, 98, 79, 7, 91, 89, 66, 94, 109, 165, 215, 209, 252, 115, 196, 48, 69, 148, 14, 217, 78, 44, 63, 128, 28, 104, 134, 107, 45, 233, 211, 21, 224, 51, 223, 180, 40, 225, 99, 176, 23, 54, 98, 14, 30, 93, 56, 133, 212, 194, 228, 47, 196, 120, 162, 144, 191, 19, 240, 55, 221, 138, 50, 242, 78, 216, 56, 182, 74, 129, 103, 155, 116, 183, 252, 154, 150, 40, 22, 143, 198, 221, 240, 59, 180, 10, 80, 223, 159, 142, 118, 125, 67, 80, 209, 86, 72, 206, 123, 83, 140, 65, 22, 219, 122, 58, 126, 107, 124, 130, 155, 196, 91, 145, 3, 246, 253, 167, 204, 96, 154, 147, 205, 136, 160, 152, 98, 53, 46, 7, 9, 149, 52, 122, 62, 115, 0, 111, 73, 205, 7, 254, 142, 239, 206, 123, 206, 31, 203, 108, 211, 132, 138, 197, 41, 176, 237, 7, 18, 3, 135, 124, 23, 50, 165, 231, 203, 142, 204, 110, 84, 240, 100, 62, 238, 134, 170, 139, 234, 39, 118, 120, 67, 89, 139, 121, 249, 33, 187, 218, 67, 84, 91, 3, 220, 187, 145, 74, 242, 13, 243, 83, 28, 114, 185, 214, 173, 107, 118, 120, 139, 29, 19, 234, 157, 254, 25, 60, 91, 17, 188, 189, 158, 237, 135, 53, 130, 253, 83, 8, 255, 183, 246, 181, 175, 103, 83, 179, 24, 191, 247, 21, 63, 106, 150, 80, 20, 204, 102, 246, 86, 255, 230, 173, 160, 126, 212, 190, 128, 234, 235, 43, 159, 20, 16, 157, 51, 43, 252, 208, 82, 208, 150, 131, 143, 180, 237, 248, 197, 216, 119, 229, 182, 157, 0, 63, 139, 247, 231, 240, 80, 218, 94, 213, 149, 127, 74, 149, 229, 25, 7, 112, 38, 104, 150, 223, 239, 250, 50, 152, 101, 233, 191, 76, 184, 19, 197, 130, 5, 173, 247, 98, 19, 166, 200, 26, 206, 43, 204, 241, 194, 159, 20, 191, 123, 28, 55, 69, 3, 74, 103, 172, 75, 207, 119, 128, 187, 201, 111, 168, 50, 188, 160, 32, 145, 102, 153, 161, 222, 147, 146, 217, 12, 35, 58, 118, 117, 130, 26, 83, 85, 23, 95, 87, 56, 16, 22, 139, 170, 91, 41, 141, 137, 161, 192, 169, 43, 100, 93, 18, 174, 148, 216, 113, 142, 37, 27, 32, 233, 249, 29, 83, 118, 5, 176, 168, 64, 25, 154, 195, 32, 67, 167, 133, 167, 217, 163, 69, 179, 37, 146, 232, 189, 208, 148, 234, 70, 83, 143, 117, 19, 182, 155, 240, 76, 56, 228} pub3BytesExpected := []byte{128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 123, 124, 65, 95, 76, 98, 200, 137, 83, 250, 67, 120, 111, 87, 193, 203, 31, 47, 218, 48, 108, 206, 156, 7, 2, 162, 119, 230, 29, 130, 144, 149} pri1Bytes, err := pri1.MarshalBinary() @@ -155,6 +156,23 @@ func TestGetKeys(t *testing.T) { } } +func TestDeterministic(t *testing.T) { + pubKey, priKey, err := NewKeyFromSeed(&DeterministicSeed) + if err != nil { + t.Fatalf("failed") + } + expectedPub := []byte{61, 175, 135, 202, 195, 30, 91, 215, 245, 243, 16, 44, 205, 11, 2, 228, 48, 220, 38, 91, 30, 33, 57, 103, 219, 92, 255, 144, 216, 184, 225, 208, 22, 247, 27, 133, 223, 50, 12, 252, 125, 88, 177, 180, 129, 109, 31, 213, 95, 93, 114, 224, 229, 58, 29, 25, 125, 56, 252, 77, 192, 254, 34, 11, 50, 218, 197, 188, 192, 244, 173, 107, 5, 150, 231, 140, 74, 64, 113, 187, 230, 191, 134, 78, 81, 184, 74, 40, 251, 14, 0, 152, 71, 41, 97, 173, 130, 23, 178, 135, 253, 44, 85, 98, 62, 206, 119, 98, 164, 56, 4, 127, 134, 11, 238, 147, 245, 244, 84, 88, 116, 196, 145, 97, 213, 182, 239, 192, 18, 138, 201, 72, 220, 101, 203, 40, 93, 39, 35, 201, 87, 5, 229, 176, 34, 54, 25, 58, 123, 182, 3, 242, 36, 40, 168, 189, 201, 95, 159, 236, 163, 215, 203, 69, 10, 110, 215, 197, 34, 105, 51, 192, 169, 227, 248, 155, 241, 221, 232, 142, 121, 136, 105, 144, 236, 28, 180, 47, 130, 194, 236, 184, 194, 82, 76, 5, 193, 123, 81, 80, 5, 60, 231, 140, 234, 95, 214, 65, 158, 4, 19, 30, 29, 62, 33, 233, 130, 161, 42, 179, 244, 154, 125, 80, 9, 233, 53, 81, 38, 238, 180, 1, 191, 157, 221, 232, 64, 148, 68, 243, 249, 188, 65, 156, 234, 81, 208, 39, 18, 98, 47, 218, 5, 100, 169, 86, 56, 214, 167, 19, 194, 149, 210, 157, 100, 51, 161, 146, 22, 220, 98, 243, 220, 39, 111, 31, 163, 243, 206, 151, 131, 75, 89, 37, 243, 1, 205, 158, 31, 185, 99, 230, 243, 92, 23, 186, 219, 69, 39, 78, 112, 183, 226, 249, 9, 49, 72, 50, 62, 232, 54, 75, 249, 160, 82, 70, 212, 52, 150, 238, 180, 174, 159, 204, 236, 52, 120, 232, 198, 247, 58, 252, 80, 154, 35, 182, 62, 91, 212, 61, 152, 127, 84, 111, 111, 239, 75, 101, 120, 223, 247, 108, 245, 12, 227, 134, 235, 230, 207, 12, 118, 249, 74, 19, 19, 32, 124, 206, 5, 244, 180, 166, 143, 226, 63, 191, 112, 245, 106, 151, 116, 73, 89, 139, 208, 203, 108, 153, 5, 252, 26, 185, 62, 170, 35, 229, 180, 228, 50, 241, 53, 160, 186, 222, 139, 183, 111, 155, 74, 176, 241, 15, 40, 99, 245, 15, 71, 48, 80, 207, 143, 42, 103, 70, 48, 213, 30, 72, 42, 58, 59, 136, 175, 109, 22, 137, 44, 92, 48, 70, 94, 17, 177, 7, 83, 210, 118, 240, 9, 6, 3, 30, 99, 32, 149, 245, 115, 246, 77, 42, 223, 178, 89, 70, 113, 75, 155, 53, 52, 89, 211, 30, 2, 220, 5, 232, 39, 210, 37, 188, 30, 220, 56, 76, 174, 139, 252, 148, 111, 4, 142, 126, 63, 205, 58, 132, 216, 146, 142, 193, 43, 107, 153, 149, 4, 34, 232, 87, 103, 92, 26, 122, 98, 141, 149, 19, 66, 106, 128, 40, 103, 239, 239, 41, 201, 34, 74, 187, 145, 254, 211, 67, 90, 135, 70, 127, 59, 233, 80, 124, 154, 153, 154, 239, 96, 100, 173, 139, 234, 50, 192, 167, 163, 30, 200, 168, 216, 21, 148, 138, 158, 147, 151, 213, 31, 137, 43, 235, 112, 117, 246, 59, 89, 194, 215, 155, 28, 14, 227, 150, 86, 213, 148, 33, 29, 81, 135, 87, 132, 166, 142, 156, 107, 69, 200, 72, 68, 152, 51, 244, 78, 114, 20, 201, 66, 138, 50, 9, 152, 212, 112, 171, 111, 95, 129, 120, 174, 232, 113, 199, 169, 87, 27, 176, 185, 180, 106, 23, 149, 33, 251, 56, 51, 210, 197, 28, 208, 112, 2, 96, 224, 121, 79, 48, 75, 42, 20, 110, 141, 133, 178, 35, 191, 125, 11, 185, 137, 3, 161, 120, 175, 0, 58, 238, 61, 12, 248, 108, 76, 111, 239, 136, 235, 234, 72, 157, 233, 205, 182, 147, 91, 37, 250, 58, 105, 38, 110, 32, 162, 147, 243, 194, 190, 49, 237, 46, 63, 53, 191, 7, 145, 52, 78, 154, 15, 148, 167, 142, 174, 19, 236, 216, 226, 87, 251, 145, 219, 85, 241, 133, 69, 150, 224, 154, 254, 237, 59, 105, 82, 207, 50, 187, 172, 179, 173, 139, 71, 107, 37, 30, 166, 171, 164, 58, 11, 102, 13, 195, 130, 135, 104, 138, 161, 149, 67, 147, 219, 190, 191, 207, 159, 157, 225, 201, 226, 178, 118, 242, 92, 57, 60, 186, 51, 61, 120, 204, 24, 103, 17, 191, 93, 98, 194, 221, 123, 157, 248, 238, 94, 184, 252, 24, 235, 161, 78, 225, 109, 188, 198, 67, 226, 152, 18, 205, 167, 160, 242, 235, 124, 98, 188, 84, 52, 93, 30, 2, 134, 31, 139, 15, 105, 26, 88, 82, 35, 186, 13, 23, 248, 249, 41, 68, 115, 117, 14, 238, 93, 138, 9, 182, 35, 19, 39, 193, 37, 111, 188, 117, 213, 93, 245, 193, 13, 133, 14, 199, 146, 209, 107, 128, 114, 5, 71, 9, 208, 221, 153, 120, 53, 213, 160, 114, 147, 208, 237, 171, 156, 166, 203, 99, 8, 146, 178, 53, 31, 66, 243, 116, 143, 131, 88, 104, 255, 149, 72, 253, 145, 140, 140, 162, 246, 205, 190, 116, 93, 56, 184, 86, 30, 165, 87, 161, 54, 70, 138, 207, 159, 122, 25, 67, 179, 227, 159, 32, 243, 217, 225, 103, 122, 84, 207, 196, 179, 103, 153, 74, 232, 177, 174, 144, 70, 193, 40, 150, 177, 157, 235, 184, 178, 12, 140, 80, 149, 82, 179, 137, 30, 59, 169, 134, 25, 67, 78, 48, 4, 2, 92, 224, 106, 111, 200, 54, 240, 120, 69, 95, 109, 197, 22, 128, 61, 246, 24, 239, 104, 55, 235, 199, 216, 68, 64, 226, 146, 184, 1, 254, 24, 193, 152, 175, 25, 131, 174, 154, 72, 93, 156, 152, 113, 34, 135, 210, 38, 128, 144, 136, 28, 179, 207, 206, 92, 174, 205, 11, 240, 127, 225, 117, 30, 90, 104, 195, 208, 188, 168, 25, 231, 58, 92, 239, 108, 224, 230, 186, 116, 88, 175, 68, 8, 215, 194, 30, 255, 187, 189, 57, 36, 181, 151, 165, 67, 131, 136, 77, 171, 108, 3, 92, 16, 65, 31, 194, 29, 6, 183, 111, 71, 126, 220, 109, 205, 196, 82, 193, 182, 69, 237, 189, 54, 187, 250, 52, 189, 10, 175, 152, 250, 92, 213, 122, 236, 71, 153, 82, 250, 159, 238, 153, 109, 56, 34, 99, 13, 108, 39, 193, 99, 227, 181, 182, 76, 3, 202, 112, 35, 122, 71, 9, 168, 43, 224, 31, 168, 252, 2, 189, 95, 150, 100, 212, 122, 172, 29, 240, 128, 181, 222, 63, 233, 123, 16, 54, 104, 8, 7, 17, 67, 177, 221, 245, 31, 228, 77, 175, 70, 253, 224, 90, 188, 95, 138, 114, 192, 88, 120, 25, 245, 85, 49, 103, 168, 111, 243, 43, 77, 234, 80, 174, 51, 162, 177, 129, 128, 66, 184, 231, 28, 76, 75, 128, 215, 132, 91, 51, 201, 202, 101, 185, 138, 233, 11, 164, 198, 67, 8, 141, 18, 78, 191, 56, 169, 156, 145, 81, 13, 118, 10, 111, 93, 235, 129, 249, 218, 102, 186, 33, 125, 155, 231, 178, 109, 213, 5, 69, 144, 22, 60, 170, 13, 167, 79, 133, 159, 193, 132, 31, 72, 21, 98, 180, 203, 42, 113, 11, 94, 88, 134, 14, 248, 241, 187, 179, 206, 66, 32, 59, 97, 28, 224, 154, 141, 63, 247, 4, 122, 72, 184, 153, 26, 35, 97, 72, 15, 38, 146, 227, 210, 213, 154, 29, 176, 213, 199, 69, 84, 87, 198, 197, 224, 209, 219, 232, 4, 78, 49, 234, 101, 151, 103, 116, 76, 248, 114, 219, 121, 113, 10, 253, 166, 189, 116, 222, 111, 136, 31, 228, 17, 163, 0, 251, 79, 101, 56, 255, 94, 105, 96, 63, 162, 43, 34, 135, 20, 255, 183, 35, 18, 9, 210, 230, 214, 185, 23, 134, 137, 205, 183, 208, 118, 1, 84, 200, 204, 130, 143, 241, 2, 38, 63, 240, 71, 173, 119, 163, 168, 81, 47, 118, 243, 253, 33, 252, 79, 214, 138, 135, 148, 201, 178, 153, 94, 182, 236, 232, 185, 206, 53, 137} + expectedPri := []byte{164, 112, 179, 200, 61, 89, 69, 78, 1, 89, 229, 44, 54, 201, 107, 104, 54, 62, 47, 58, 160, 249, 241, 178, 162, 136, 246, 83, 253, 89, 108, 138, 61, 175, 135, 202, 195, 30, 91, 215, 245, 243, 16, 44, 205, 11, 2, 228, 48, 220, 38, 91, 30, 33, 57, 103, 219, 92, 255, 144, 216, 184, 225, 208, 22, 247, 27, 133, 223, 50, 12, 252, 125, 88, 177, 180, 129, 109, 31, 213, 95, 93, 114, 224, 229, 58, 29, 25, 125, 56, 252, 77, 192, 254, 34, 11, 128, 87, 59, 173, 1, 15, 8, 50, 70, 112, 226, 67, 110, 138, 214, 251, 19, 66, 161, 123, 184, 14, 42, 51, 33, 82, 37, 129, 41, 237, 88, 202, 60, 252, 96, 110, 154, 108, 187, 240, 197, 55, 107, 64, 142, 252, 197, 69, 34, 237, 110, 244, 213, 87, 243, 140, 233, 134, 30, 1, 73, 145, 210, 33, 67, 93, 113, 210, 123, 138, 211, 68, 41, 12, 106, 71, 73, 180, 71, 96, 118, 56, 111, 134, 206, 1, 22, 120, 10, 221, 100, 235, 176, 248, 174, 136, 209, 184, 136, 19, 71, 109, 201, 130, 9, 193, 56, 69, 81, 180, 140, 218, 0, 45, 25, 64, 145, 162, 192, 68, 209, 146, 108, 89, 40, 16, 18, 68, 1, 217, 150, 105, 26, 6, 17, 4, 36, 144, 1, 165, 48, 8, 19, 145, 0, 166, 109, 16, 9, 128, 216, 162, 41, 99, 52, 2, 219, 70, 34, 210, 136, 49, 2, 168, 9, 227, 24, 68, 146, 20, 32, 211, 20, 2, 8, 40, 78, 3, 130, 100, 228, 166, 41, 88, 148, 96, 137, 66, 13, 11, 32, 4, 131, 20, 96, 27, 180, 12, 204, 164, 132, 16, 7, 17, 89, 56, 130, 216, 0, 77, 100, 68, 16, 28, 8, 128, 35, 72, 34, 10, 17, 66, 138, 0, 112, 27, 57, 8, 129, 176, 145, 92, 184, 132, 163, 24, 134, 209, 0, 136, 17, 161, 80, 99, 182, 132, 27, 199, 13, 139, 48, 72, 28, 35, 102, 64, 66, 13, 202, 8, 1, 64, 16, 33, 83, 36, 80, 9, 198, 132, 74, 16, 146, 34, 48, 18, 9, 21, 114, 2, 0, 16, 75, 64, 1, 202, 192, 77, 82, 64, 12, 211, 194, 40, 32, 32, 70, 11, 5, 110, 26, 17, 133, 193, 128, 104, 11, 148, 72, 28, 167, 69, 27, 184, 140, 2, 177, 33, 4, 48, 6, 154, 178, 40, 130, 148, 144, 35, 66, 140, 211, 180, 45, 219, 70, 101, 9, 145, 77, 10, 37, 133, 2, 1, 109, 2, 64, 142, 89, 64, 69, 34, 193, 133, 89, 136, 100, 137, 180, 140, 209, 196, 80, 72, 128, 132, 26, 22, 133, 12, 194, 137, 2, 34, 132, 26, 1, 34, 152, 166, 12, 75, 64, 17, 96, 48, 113, 36, 169, 12, 220, 34, 10, 9, 193, 13, 84, 130, 77, 33, 181, 109, 203, 8, 41, 132, 148, 108, 220, 192, 109, 145, 24, 96, 227, 54, 81, 152, 36, 81, 16, 193, 37, 33, 4, 110, 164, 22, 5, 25, 21, 108, 210, 152, 77, 18, 32, 134, 24, 9, 110, 100, 16, 137, 210, 134, 40, 132, 160, 4, 66, 48, 0, 8, 184, 141, 2, 36, 14, 156, 164, 16, 203, 168, 132, 160, 56, 104, 155, 54, 9, 204, 134, 64, 17, 33, 109, 192, 64, 113, 0, 39, 144, 144, 184, 141, 155, 160, 44, 10, 52, 129, 220, 184, 77, 210, 134, 109, 3, 168, 129, 19, 129, 96, 193, 18, 98, 28, 65, 14, 218, 136, 17, 98, 6, 146, 3, 185, 45, 202, 2, 42, 64, 48, 45, 129, 70, 5, 88, 22, 45, 66, 152, 12, 8, 35, 4, 98, 68, 66, 76, 48, 138, 98, 40, 50, 1, 3, 9, 196, 194, 144, 202, 168, 9, 145, 56, 112, 35, 72, 108, 1, 200, 109, 36, 8, 50, 136, 194, 112, 3, 163, 105, 20, 144, 141, 216, 16, 13, 194, 160, 97, 24, 145, 108, 144, 194, 16, 192, 24, 144, 128, 64, 74, 147, 8, 110, 129, 146, 73, 67, 134, 101, 26, 180, 13, 208, 184, 108, 12, 57, 78, 16, 133, 104, 34, 129, 45, 8, 131, 36, 64, 136, 100, 0, 4, 73, 131, 182, 145, 82, 36, 5, 11, 197, 36, 90, 146, 0, 65, 18, 5, 32, 25, 44, 140, 178, 0, 24, 69, 38, 24, 52, 36, 28, 21, 65, 28, 0, 80, 18, 199, 64, 139, 20, 80, 204, 192, 44, 131, 144, 45, 210, 134, 80, 90, 0, 80, 2, 149, 33, 203, 132, 112, 33, 64, 114, 210, 146, 33, 136, 22, 137, 208, 8, 141, 18, 73, 37, 18, 132, 8, 20, 57, 48, 164, 166, 5, 219, 160, 137, 3, 8, 80, 193, 2, 128, 224, 178, 81, 204, 70, 144, 139, 68, 102, 196, 178, 104, 1, 9, 80, 36, 179, 81, 88, 56, 141, 147, 34, 110, 137, 48, 81, 100, 136, 104, 1, 7, 40, 33, 67, 102, 92, 198, 72, 208, 70, 2, 82, 18, 136, 74, 192, 132, 28, 41, 78, 153, 164, 0, 17, 176, 133, 2, 180, 16, 139, 136, 32, 90, 6, 68, 34, 166, 1, 12, 56, 101, 17, 151, 132, 154, 128, 128, 210, 182, 112, 211, 196, 104, 145, 18, 36, 8, 34, 138, 163, 72, 130, 18, 131, 132, 200, 50, 102, 12, 36, 44, 92, 198, 9, 11, 52, 81, 153, 56, 16, 1, 185, 45, 152, 68, 72, 18, 166, 33, 66, 200, 64, 34, 17, 34, 18, 136, 145, 17, 136, 64, 140, 32, 132, 1, 32, 16, 204, 24, 96, 140, 72, 110, 24, 66, 12, 202, 86, 214, 218, 22, 104, 138, 145, 3, 199, 208, 160, 14, 141, 114, 68, 108, 201, 235, 4, 20, 210, 61, 205, 0, 147, 113, 169, 225, 127, 13, 241, 69, 226, 236, 58, 29, 167, 199, 159, 85, 19, 48, 216, 97, 166, 249, 4, 229, 52, 36, 54, 83, 73, 170, 199, 213, 10, 202, 25, 142, 229, 246, 87, 176, 49, 245, 153, 203, 89, 229, 72, 117, 78, 198, 222, 13, 202, 42, 143, 74, 97, 29, 140, 165, 250, 198, 159, 108, 255, 255, 205, 199, 123, 204, 5, 66, 151, 190, 227, 206, 61, 233, 15, 35, 118, 126, 96, 199, 4, 37, 44, 57, 48, 73, 232, 68, 63, 59, 184, 101, 22, 137, 82, 202, 7, 160, 18, 109, 21, 120, 10, 226, 72, 209, 168, 12, 251, 156, 243, 52, 161, 146, 163, 245, 117, 9, 151, 79, 176, 75, 37, 98, 73, 240, 194, 38, 245, 235, 33, 241, 85, 197, 72, 174, 64, 160, 26, 108, 192, 98, 215, 244, 239, 170, 7, 138, 65, 58, 144, 232, 57, 72, 158, 119, 14, 164, 15, 138, 53, 45, 114, 17, 17, 221, 25, 107, 71, 87, 223, 66, 70, 57, 57, 99, 145, 145, 186, 86, 201, 112, 222, 96, 58, 64, 35, 120, 192, 116, 121, 70, 8, 52, 203, 185, 132, 91, 82, 224, 222, 56, 205, 188, 163, 18, 91, 46, 191, 226, 184, 81, 44, 90, 55, 56, 34, 134, 91, 56, 153, 50, 62, 16, 29, 237, 79, 50, 123, 163, 9, 104, 138, 140, 138, 164, 181, 213, 209, 128, 50, 98, 29, 117, 112, 175, 69, 253, 80, 125, 115, 176, 26, 160, 250, 235, 121, 234, 50, 72, 154, 42, 167, 164, 213, 169, 77, 185, 230, 80, 205, 163, 101, 32, 31, 82, 215, 89, 21, 205, 187, 31, 104, 78, 145, 242, 28, 63, 17, 100, 236, 11, 85, 67, 143, 141, 135, 131, 181, 71, 135, 202, 97, 245, 126, 28, 63, 149, 117, 93, 252, 19, 27, 242, 10, 50, 251, 123, 139, 137, 72, 28, 247, 119, 242, 78, 128, 62, 118, 235, 93, 208, 15, 8, 183, 83, 106, 195, 201, 7, 158, 96, 144, 116, 109, 216, 128, 77, 100, 174, 204, 190, 48, 59, 90, 251, 150, 184, 90, 128, 148, 132, 17, 156, 180, 115, 84, 49, 224, 212, 47, 250, 58, 157, 41, 2, 54, 127, 64, 129, 73, 0, 14, 230, 65, 118, 53, 24, 212, 85, 141, 67, 139, 110, 122, 195, 157, 160, 36, 102, 107, 83, 137, 99, 125, 69, 40, 244, 238, 54, 160, 7, 170, 194, 223, 194, 217, 107, 42, 185, 240, 46, 160, 74, 112, 62, 163, 226, 35, 80, 175, 120, 90, 224, 182, 228, 166, 248, 121, 186, 173, 206, 234, 140, 147, 7, 86, 120, 182, 174, 137, 85, 154, 196, 118, 209, 225, 150, 254, 121, 149, 52, 177, 68, 156, 103, 193, 41, 33, 5, 223, 80, 205, 52, 80, 142, 175, 38, 222, 195, 115, 49, 98, 146, 27, 130, 105, 59, 205, 217, 203, 94, 217, 139, 203, 46, 155, 64, 242, 184, 204, 34, 177, 187, 173, 186, 182, 5, 5, 0, 99, 221, 99, 110, 87, 218, 54, 24, 171, 84, 164, 210, 226, 34, 145, 238, 235, 101, 144, 213, 27, 8, 176, 120, 113, 127, 49, 116, 120, 10, 231, 39, 80, 254, 155, 172, 13, 70, 155, 40, 108, 146, 167, 167, 253, 92, 203, 102, 251, 185, 132, 24, 123, 59, 23, 97, 51, 215, 194, 231, 86, 81, 95, 69, 215, 201, 253, 207, 198, 233, 194, 202, 123, 104, 48, 225, 160, 106, 67, 234, 47, 117, 133, 200, 145, 48, 180, 70, 27, 84, 43, 20, 92, 75, 33, 27, 10, 169, 95, 186, 193, 220, 185, 179, 62, 168, 86, 245, 77, 176, 206, 31, 225, 63, 231, 121, 209, 141, 146, 169, 17, 151, 146, 184, 74, 125, 83, 61, 98, 1, 128, 189, 37, 166, 140, 23, 240, 118, 62, 162, 182, 202, 50, 245, 63, 58, 84, 254, 102, 200, 46, 201, 132, 49, 239, 125, 114, 209, 126, 181, 59, 29, 1, 113, 178, 54, 177, 57, 156, 0, 197, 180, 78, 114, 87, 203, 98, 223, 123, 136, 163, 161, 87, 212, 181, 158, 5, 248, 88, 4, 125, 99, 167, 96, 180, 201, 28, 145, 152, 21, 89, 238, 141, 27, 184, 158, 23, 196, 242, 53, 40, 253, 29, 131, 214, 36, 30, 54, 14, 111, 40, 50, 22, 226, 49, 106, 25, 149, 48, 16, 115, 88, 186, 114, 91, 93, 11, 244, 162, 5, 145, 93, 75, 129, 225, 99, 8, 251, 54, 126, 246, 160, 225, 34, 161, 166, 120, 251, 159, 96, 230, 7, 84, 190, 168, 200, 78, 57, 228, 129, 249, 199, 226, 75, 208, 6, 228, 15, 89, 49, 136, 231, 140, 94, 18, 222, 223, 26, 237, 142, 226, 237, 246, 191, 61, 167, 168, 238, 117, 56, 209, 116, 124, 106, 146, 176, 128, 171, 190, 154, 201, 248, 231, 143, 122, 152, 63, 236, 222, 190, 105, 221, 43, 81, 102, 110, 174, 163, 130, 214, 168, 126, 244, 155, 125, 119, 40, 100, 172, 247, 119, 157, 144, 142, 207, 5, 209, 237, 157, 73, 43, 217, 13, 38, 201, 160, 81, 39, 17, 50, 175, 51, 38, 55, 92, 197, 144, 113, 77, 196, 243, 66, 205, 100, 141, 47, 233, 225, 7, 177, 166, 57, 162, 137, 65, 101, 227, 158, 251, 62, 62, 161, 174, 233, 123, 80, 100, 140, 71, 122, 254, 122, 140, 219, 112, 98, 71, 227, 240, 206, 86, 1, 250, 56, 43, 232, 108, 186, 2, 125, 39, 45, 213, 92, 15, 100, 245, 246, 118, 142, 71, 77, 134, 213, 175, 212, 218, 149, 96, 58, 197, 25, 231, 41, 172, 95, 195, 132, 221, 134, 27, 228, 69, 251, 242, 165, 101, 200, 42, 107, 51, 217, 253, 75, 100, 157, 251, 70, 86, 109, 98, 107, 208, 17, 244, 73, 149, 103, 223, 3, 189, 62, 50, 201, 220, 116, 246, 23, 82, 121, 188, 245, 195, 131, 125, 246, 132, 25, 163, 131, 21, 117, 151, 153, 163, 138, 171, 79, 2, 14, 188, 38, 206, 255, 91, 213, 202, 34, 237, 230, 50, 37, 178, 120, 55, 244, 234, 139, 59, 205, 104, 17, 123, 226, 233, 67, 17, 67, 94, 64, 221, 177, 46, 167, 31, 22, 204, 190, 35, 47, 67, 157, 18, 161, 72, 102, 62, 230, 254, 114, 79, 128, 226, 47, 212, 119, 143, 163, 212, 219, 83, 5, 252, 128, 212, 110, 26, 195, 194, 67, 188, 255, 60, 205, 120, 21, 164, 47, 152, 71, 80, 69, 132, 142, 24, 187, 133, 24, 134, 118, 228, 142, 30, 49, 33, 194, 29, 23, 221, 163, 66, 127, 74, 1, 97, 209, 183, 134, 139, 218, 229, 100, 79, 226, 59, 183, 139, 179, 168, 75, 94, 136, 23, 170, 214, 52, 150, 160, 25, 44, 178, 105, 69, 225, 175, 192, 2, 58, 144, 85, 187, 134, 127, 56, 249, 227, 138, 10, 5, 5, 48, 65, 186, 111, 46, 197, 108, 132, 100, 81, 123, 55, 253, 119, 171, 119, 23, 175, 103, 104, 198, 158, 73, 0, 154, 21, 214, 209, 237, 15, 130, 192, 139, 59, 226, 154, 226, 122, 4, 136, 126, 202, 149, 163, 164, 76, 233, 220, 156, 225, 193, 173, 69, 238, 50, 123, 26, 8, 62, 162, 233, 145, 85, 246, 219, 219, 31, 214, 115, 8, 90, 90, 186, 113, 219, 121, 84, 82, 221, 241, 5, 173, 83, 115, 77, 241, 177, 45, 96, 30, 115, 27, 78, 133, 66, 176, 232, 196, 11, 41, 94, 45, 65, 238, 2, 57, 145, 37, 36, 156, 204, 141, 228, 180, 111, 187, 229, 45, 35, 184, 131, 34, 45, 138, 33, 103, 227, 171, 237, 191, 0, 231, 2, 18, 40, 218, 150, 115, 213, 127, 221, 229, 107, 183, 195, 4, 39, 3, 179, 227, 83, 60, 127, 85, 61, 89, 42, 2, 26, 140, 188, 146, 72, 49, 35, 75, 171, 148, 210, 112, 10, 148, 68, 59, 16, 157, 196, 111, 21, 11, 121, 58, 142, 53, 38, 40, 9, 187, 47, 194, 113, 177, 72, 209, 117, 37, 191, 124, 78, 109, 98, 239, 252, 74, 98, 208, 225, 148, 243, 145, 166, 55, 91, 152, 211, 183, 224, 205, 49, 211, 13, 155, 236, 110, 190, 200, 181, 40, 117, 38, 107, 178, 252, 172, 49, 68, 132, 177, 226, 99, 4, 54, 176, 59, 219, 70, 207, 255, 172, 215, 96, 181, 71, 11, 92, 210, 120, 24, 61, 193, 28, 201, 175, 149, 211, 131, 139, 13, 131, 85, 42, 251, 182, 170, 34, 48, 122, 172, 57, 0, 255, 123, 213, 151, 210, 237, 98, 126, 210, 132, 159, 213, 56, 187, 217, 0, 147, 242, 61, 241, 9, 203, 213, 41, 213, 91, 5, 223, 196, 125, 224, 236, 178, 18, 72, 180, 149, 233, 61, 107, 212, 236, 50, 139, 242, 80, 197, 222, 96, 113, 5, 81, 156, 231, 126, 161, 210, 126, 157, 92, 31, 232, 91, 147, 79, 222, 71, 213, 67, 7, 137, 197, 194, 163, 180, 21, 167, 22, 18, 223, 8, 69, 164, 45, 67, 8, 120, 223, 246, 204, 40, 45, 101, 92, 29, 171, 102, 105, 214, 115, 29, 3, 207, 15, 157, 240, 233, 150, 187, 239, 74, 253, 250, 211, 88, 177, 147, 76, 5, 138, 174, 59, 192, 58, 228, 60, 239, 185, 49, 139, 3, 50, 59, 242, 213, 148, 123, 142, 162, 136, 17, 74, 107, 157, 230, 218, 219, 191, 45, 252, 23, 37, 102, 252, 132, 78, 209, 20, 142, 12, 68, 38, 238, 229, 144, 46, 90, 27, 42, 82, 84, 105, 43, 246, 199, 233, 18, 80, 231, 28, 131, 164, 53, 104, 174, 22, 247, 27, 133, 223, 50, 12, 252, 125, 88, 177, 180, 129, 109, 31, 213, 95, 93, 114, 224, 229, 58, 29, 25, 125, 56, 252, 77, 192, 254, 34, 11, 50, 218, 197, 188, 192, 244, 173, 107, 5, 150, 231, 140, 74, 64, 113, 187, 230, 191, 134, 78, 81, 184, 74, 40, 251, 14, 0, 152, 71, 41, 97, 173, 130, 23, 178, 135, 253, 44, 85, 98, 62, 206, 119, 98, 164, 56, 4, 127, 134, 11, 238, 147, 245, 244, 84, 88, 116, 196, 145, 97, 213, 182, 239, 192, 18, 138, 201, 72, 220, 101, 203, 40, 93, 39, 35, 201, 87, 5, 229, 176, 34, 54, 25, 58, 123, 182, 3, 242, 36, 40, 168, 189, 201, 95, 159, 236, 163, 215, 203, 69, 10, 110, 215, 197, 34, 105, 51, 192, 169, 227, 248, 155, 241, 221, 232, 142, 121, 136, 105, 144, 236, 28, 180, 47, 130, 194, 236, 184, 194, 82, 76, 5, 193, 123, 81, 80, 5, 60, 231, 140, 234, 95, 214, 65, 158, 4, 19, 30, 29, 62, 33, 233, 130, 161, 42, 179, 244, 154, 125, 80, 9, 233, 53, 81, 38, 238, 180, 1, 191, 157, 221, 232, 64, 148, 68, 243, 249, 188, 65, 156, 234, 81, 208, 39, 18, 98, 47, 218, 5, 100, 169, 86, 56, 214, 167, 19, 194, 149, 210, 157, 100, 51, 161, 146, 22, 220, 98, 243, 220, 39, 111, 31, 163, 243, 206, 151, 131, 75, 89, 37, 243, 1, 205, 158, 31, 185, 99, 230, 243, 92, 23, 186, 219, 69, 39, 78, 112, 183, 226, 249, 9, 49, 72, 50, 62, 232, 54, 75, 249, 160, 82, 70, 212, 52, 150, 238, 180, 174, 159, 204, 236, 52, 120, 232, 198, 247, 58, 252, 80, 154, 35, 182, 62, 91, 212, 61, 152, 127, 84, 111, 111, 239, 75, 101, 120, 223, 247, 108, 245, 12, 227, 134, 235, 230, 207, 12, 118, 249, 74, 19, 19, 32, 124, 206, 5, 244, 180, 166, 143, 226, 63, 191, 112, 245, 106, 151, 116, 73, 89, 139, 208, 203, 108, 153, 5, 252, 26, 185, 62, 170, 35, 229, 180, 228, 50, 241, 53, 160, 186, 222, 139, 183, 111, 155, 74, 176, 241, 15, 40, 99, 245, 15, 71, 48, 80, 207, 143, 42, 103, 70, 48, 213, 30, 72, 42, 58, 59, 136, 175, 109, 22, 137, 44, 92, 48, 70, 94, 17, 177, 7, 83, 210, 118, 240, 9, 6, 3, 30, 99, 32, 149, 245, 115, 246, 77, 42, 223, 178, 89, 70, 113, 75, 155, 53, 52, 89, 211, 30, 2, 220, 5, 232, 39, 210, 37, 188, 30, 220, 56, 76, 174, 139, 252, 148, 111, 4, 142, 126, 63, 205, 58, 132, 216, 146, 142, 193, 43, 107, 153, 149, 4, 34, 232, 87, 103, 92, 26, 122, 98, 141, 149, 19, 66, 106, 128, 40, 103, 239, 239, 41, 201, 34, 74, 187, 145, 254, 211, 67, 90, 135, 70, 127, 59, 233, 80, 124, 154, 153, 154, 239, 96, 100, 173, 139, 234, 50, 192, 167, 163, 30, 200, 168, 216, 21, 148, 138, 158, 147, 151, 213, 31, 137, 43, 235, 112, 117, 246, 59, 89, 194, 215, 155, 28, 14, 227, 150, 86, 213, 148, 33, 29, 81, 135, 87, 132, 166, 142, 156, 107, 69, 200, 72, 68, 152, 51, 244, 78, 114, 20, 201, 66, 138, 50, 9, 152, 212, 112, 171, 111, 95, 129, 120, 174, 232, 113, 199, 169, 87, 27, 176, 185, 180, 106, 23, 149, 33, 251, 56, 51, 210, 197, 28, 208, 112, 2, 96, 224, 121, 79, 48, 75, 42, 20, 110, 141, 133, 178, 35, 191, 125, 11, 185, 137, 3, 161, 120, 175, 0, 58, 238, 61, 12, 248, 108, 76, 111, 239, 136, 235, 234, 72, 157, 233, 205, 182, 147, 91, 37, 250, 58, 105, 38, 110, 32, 162, 147, 243, 194, 190, 49, 237, 46, 63, 53, 191, 7, 145, 52, 78, 154, 15, 148, 167, 142, 174, 19, 236, 216, 226, 87, 251, 145, 219, 85, 241, 133, 69, 150, 224, 154, 254, 237, 59, 105, 82, 207, 50, 187, 172, 179, 173, 139, 71, 107, 37, 30, 166, 171, 164, 58, 11, 102, 13, 195, 130, 135, 104, 138, 161, 149, 67, 147, 219, 190, 191, 207, 159, 157, 225, 201, 226, 178, 118, 242, 92, 57, 60, 186, 51, 61, 120, 204, 24, 103, 17, 191, 93, 98, 194, 221, 123, 157, 248, 238, 94, 184, 252, 24, 235, 161, 78, 225, 109, 188, 198, 67, 226, 152, 18, 205, 167, 160, 242, 235, 124, 98, 188, 84, 52, 93, 30, 2, 134, 31, 139, 15, 105, 26, 88, 82, 35, 186, 13, 23, 248, 249, 41, 68, 115, 117, 14, 238, 93, 138, 9, 182, 35, 19, 39, 193, 37, 111, 188, 117, 213, 93, 245, 193, 13, 133, 14, 199, 146, 209, 107, 128, 114, 5, 71, 9, 208, 221, 153, 120, 53, 213, 160, 114, 147, 208, 237, 171, 156, 166, 203, 99, 8, 146, 178, 53, 31, 66, 243, 116, 143, 131, 88, 104, 255, 149, 72, 253, 145, 140, 140, 162, 246, 205, 190, 116, 93, 56, 184, 86, 30, 165, 87, 161, 54, 70, 138, 207, 159, 122, 25, 67, 179, 227, 159, 32, 243, 217, 225, 103, 122, 84, 207, 196, 179, 103, 153, 74, 232, 177, 174, 144, 70, 193, 40, 150, 177, 157, 235, 184, 178, 12, 140, 80, 149, 82, 179, 137, 30, 59, 169, 134, 25, 67, 78, 48, 4, 2, 92, 224, 106, 111, 200, 54, 240, 120, 69, 95, 109, 197, 22, 128, 61, 246, 24, 239, 104, 55, 235, 199, 216, 68, 64, 226, 146, 184, 1, 254, 24, 193, 152, 175, 25, 131, 174, 154, 72, 93, 156, 152, 113, 34, 135, 210, 38, 128, 144, 136, 28, 179, 207, 206, 92, 174, 205, 11, 240, 127, 225, 117, 30, 90, 104, 195, 208, 188, 168, 25, 231, 58, 92, 239, 108, 224, 230, 186, 116, 88, 175, 68, 8, 215, 194, 30, 255, 187, 189, 57, 36, 181, 151, 165, 67, 131, 136, 77, 171, 108, 3, 92, 16, 65, 31, 194, 29, 6, 183, 111, 71, 126, 220, 109, 205, 196, 82, 193, 182, 69, 237, 189, 54, 187, 250, 52, 189, 10, 175, 152, 250, 92, 213, 122, 236, 71, 153, 82, 250, 159, 238, 153, 109, 56, 34, 99, 13, 108, 39, 193, 99, 227, 181, 182, 76, 3, 202, 112, 35, 122, 71, 9, 168, 43, 224, 31, 168, 252, 2, 189, 95, 150, 100, 212, 122, 172, 29, 240, 128, 181, 222, 63, 233, 123, 16, 54, 104, 8, 7, 17, 67, 177, 221, 245, 31, 228, 77, 175, 70, 253, 224, 90, 188, 95, 138, 114, 192, 88, 120, 25, 245, 85, 49, 103, 168, 111, 243, 43, 77, 234, 80, 174, 51, 162, 177, 129, 128, 66, 184, 231, 28, 76, 75, 128, 215, 132, 91, 51, 201, 202, 101, 185, 138, 233, 11, 164, 198, 67, 8, 141, 18, 78, 191, 56, 169, 156, 145, 81, 13, 118, 10, 111, 93, 235, 129, 249, 218, 102, 186, 33, 125, 155, 231, 178, 109, 213, 5, 69, 144, 22, 60, 170, 13, 167, 79, 133, 159, 193, 132, 31, 72, 21, 98, 180, 203, 42, 113, 11, 94, 88, 134, 14, 248, 241, 187, 179, 206, 66, 32, 59, 97, 28, 224, 154, 141, 63, 247, 4, 122, 72, 184, 153, 26, 35, 97, 72, 15, 38, 146, 227, 210, 213, 154, 29, 176, 213, 199, 69, 84, 87, 198, 197, 224, 209, 219, 232, 4, 78, 49, 234, 101, 151, 103, 116, 76, 248, 114, 219, 121, 113, 10, 253, 166, 189, 116, 222, 111, 136, 31, 228, 17, 163, 0, 251, 79, 101, 56, 255, 162, 119, 56, 52, 120, 78, 179, 99, 38, 91, 246, 87, 201, 159, 152, 122, 94, 47, 110, 203, 200, 250, 99, 9, 172, 241, 11, 195, 231, 177, 73, 250, 221, 22, 173, 39, 38, 112, 212, 31, 61, 97, 206, 203, 168, 175, 253, 161, 189, 135, 204, 75, 56, 65, 107, 240, 239, 158, 180, 155, 254, 171, 213, 115, 94, 105, 96, 63, 162, 43, 34, 135, 20, 255, 183, 35, 18, 9, 210, 230, 214, 185, 23, 134, 137, 205, 183, 208, 118, 1, 84, 200, 204, 130, 143, 241, 2, 38, 63, 240, 71, 173, 119, 163, 168, 81, 47, 118, 243, 253, 33, 252, 79, 214, 138, 135, 148, 201, 178, 153, 94, 182, 236, 232, 185, 206, 53, 137} + + if bytes.Equal(pubKey.key, expectedPub) == false { + t.Fatalf("failed") + } + + if bytes.Equal(priKey.key, expectedPri) == false { + t.Fatalf("failed") + } +} + func TestSignVerifyBasic(t *testing.T) { pubKey, priKey, err := NewKeyFromSeed(&CommonSeed) if err != nil { diff --git a/sign/mldsa/mldsa44/dilithium.go b/sign/mldsa/mldsa44/dilithium.go index e1c9d2e..b7b4c37 100644 --- a/sign/mldsa/mldsa44/dilithium.go +++ b/sign/mldsa/mldsa44/dilithium.go @@ -43,6 +43,13 @@ func GenerateKey(rand io.Reader) (*PublicKey, *PrivateKey, error) { return (*PublicKey)(pk), (*PrivateKey)(sk), err } +// GenerateKeyInternal generates a public/private key pair using entropy from rand. +// If rand is nil, crypto/rand.Reader will be used. +func GenerateKeyInternal(rand io.Reader, nist bool) (*PublicKey, *PrivateKey, error) { + pk, sk, err := internal.GenerateKeyInternal(rand, nist) + return (*PublicKey)(pk), (*PrivateKey)(sk), err +} + // NewKeyFromSeed derives a public/private key pair using the given seed. func NewKeyFromSeed(seed *[SeedSize]byte) (*PublicKey, *PrivateKey) { pk, sk := internal.NewKeyFromSeed(seed) diff --git a/sign/mldsa/mldsa44/internal/dilithium.go b/sign/mldsa/mldsa44/internal/dilithium.go index 1ace33b..920cd97 100644 --- a/sign/mldsa/mldsa44/internal/dilithium.go +++ b/sign/mldsa/mldsa44/internal/dilithium.go @@ -171,8 +171,28 @@ func GenerateKey(rand io.Reader) (*PublicKey, *PrivateKey, error) { return pk, sk, nil } +// GenerateKeyInternal generates a public/private key pair using entropy from rand. +// If rand is nil, crypto/rand.Reader will be used. +func GenerateKeyInternal(rand io.Reader, nist bool) (*PublicKey, *PrivateKey, error) { + var seed [32]byte + if rand == nil { + rand = cryptoRand.Reader + } + _, err := io.ReadFull(rand, seed[:]) + if err != nil { + return nil, nil, err + } + pk, sk := NewKeyFromSeedInternal(&seed, nist) + return pk, sk, nil +} + // NewKeyFromSeed derives a public/private key pair using the given seed. func NewKeyFromSeed(seed *[common.SeedSize]byte) (*PublicKey, *PrivateKey) { + return NewKeyFromSeedInternal(seed, NIST) +} + +// NewKeyFromSeedInternal derives a public/private key pair using the given seed. +func NewKeyFromSeedInternal(seed *[common.SeedSize]byte, nist bool) (*PublicKey, *PrivateKey) { var eSeed [128]byte // expanded seed var pk PublicKey var sk PrivateKey @@ -181,7 +201,7 @@ func NewKeyFromSeed(seed *[common.SeedSize]byte) (*PublicKey, *PrivateKey) { h := sha3.NewShake256() _, _ = h.Write(seed[:]) - if NIST { + if nist { _, _ = h.Write([]byte{byte(K), byte(L)}) }