This repository was archived by the owner on Jan 21, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathtest_cpake.py
37 lines (29 loc) · 37.7 KB
/
test_cpake.py
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
from cpake import generate_kyber_keys, encrypt, decrypt
generate_key_in_paramk = 2
generate_key_in_public_seed = [68, 17, 101, 2, -4, -78, -21, 4, -72, 25, -39, 126, -58, -3, -94, 37, 126, -53, 37, 68, 77, -48, -74, -26, 86, -24, 36, -67, 16, -7, 123, -11]
generate_key_in_full_seed = [-9, 62, 33, -32, 38, 59, -125, 41, 113, 42, -12, 117, 94, 19, -36, -79, 124, -78, -15, -8, 16, 7, -45, 65, 11, -64, 30, -22, -60, -68, 75, -89, -28, -121, -8, 30, 123, 83, -110, -78, -91, -20, 35, -117, -102, 80, 21, -61, 68, -39, -8, -45, 24, 108, 127, 70, 125, -120, -45, 76, -76, -13, -108, -97]
generate_kyber_key_out_privkey = [4, 68, 78, 43, 113, 44, -115, 124, 14, 112, -11, 116, -118, 6, -68, -95, -88, -99, 120, 90, -89, 53, -71, -88, 2, -11, 121, -49, -101, -70, 124, 28, 32, 115, 19, -111, 37, 33, 44, 119, 100, 60, -8, 106, 21, 35, 98, -59, -29, 24, 94, 67, 50, 98, -86, -111, 112, -119, 36, -122, 37, 8, 72, 98, -46, 77, -76, -124, 12, -70, -9, -128, 103, -87, 122, 112, 49, -104, -50, 99, 102, 126, -56, -118, 37, 84, 3, 107, -102, 91, 87, -68, -78, -59, -38, 16, -3, 42, 31, 13, 32, 111, -23, 67, 28, 68, -38, 86, 22, -69, 108, 48, -12, 27, 33, -57, 23, 10, 43, 79, -22, -79, -77, -105, 32, -86, -37, 3, 59, -47, 4, 38, 74, 32, 32, 4, 1, -94, 17, -117, -117, -49, 56, 51, -63, 123, -72, 41, -107, -100, -6, -48, 95, -120, 96, 86, 94, -120, 66, -59, 34, 77, -114, 67, 126, 110, 123, 74, -24, 17, -68, -105, 26, 58, 1, 51, -111, 112, 101, -67, -49, -42, -109, -22, 118, -106, -51, -102, 66, 97, -95, -117, -107, 75, 115, 51, -64, -77, -12, 8, 48, 26, 49, -121, -93, -46, 47, -110, 90, -59, -115, 60, 68, 75, 118, 19, 85, -80, -105, -104, -38, 91, 102, -60, 91, 65, 55, 121, -69, -40, 103, 106, -104, 68, -14, -31, 68, 124, -46, 77, -93, -26, 68, -63, 103, 72, 125, -57, 36, -49, 40, -59, -61, 32, 65, 26, -44, 56, 91, -112, -92, 8, 16, 12, -2, -54, -127, -97, 1, 115, 10, 17, -103, -50, -11, 13, 21, -128, 69, 111, -105, 104, -36, -116, -110, -88, 119, -76, -61, -46, -98, -123, 64, -67, -95, 11, 23, 18, 97, 5, -119, -52, 38, -48, -5, -50, -79, 115, 26, 31, -90, 84, 102, -40, -84, -72, 49, -87, 64, 56, 75, -124, -116, 60, 84, -126, 22, 23, -112, 112, -118, -30, 45, -78, -88, -62, -48, -95, 61, -59, 18, 50, -108, -44, -90, -122, 96, 84, 105, 16, -115, -128, -70, 35, 81, 101, 39, -35, -120, 58, 108, -117, 43, -4, 64, 117, 63, 108, 103, 62, -92, -94, 57, -86, 37, -41, 55, -85, -83, 10, -74, 50, 101, -125, -117, -4, 30, 5, -27, 69, 79, -12, 89, -9, -39, 22, -125, -85, 78, -64, 52, -71, -46, 73, 70, -109, 44, -70, 34, 20, 1, 86, -112, 4, -126, 41, 39, -54, -60, 97, 69, -93, 8, -90, -62, 78, 48, -88, 64, 59, -22, -128, -103, 122, 21, -117, -89, -125, 101, 80, -86, 46, 124, 98, 65, -102, 80, -92, 56, 99, -30, -56, -115, 45, -109, 19, -63, 60, -89, -40, -111, -75, 14, 105, 59, 78, 19, 45, -34, 92, -126, -45, 2, -51, 10, -71, 37, 60, 55, 127, -78, -77, -103, -91, -91, 24, -72, 75, 106, 35, -43, -113, 72, -58, -93, -22, -27, 47, 121, 8, -49, -104, 11, 57, 50, -61, 21, 75, 41, -85, 118, 101, 57, -87, 118, -65, 21, 23, 114, -115, -100, -122, -16, -20, -101, 67, 23, 107, 84, -58, -80, -86, 34, 106, -117, 86, -56, -70, -55, 12, -109, -31, 66, -14, -119, -100, 43, 96, -61, -5, 37, 18, -122, -61, 119, 85, -55, 113, 39, -24, -128, -25, -106, 75, 37, 5, 91, 68, -88, -77, -99, 0, -99, -49, -13, -82, 99, -118, 41, -38, -47, 79, -43, 1, 28, 7, 17, 64, -65, 69, 127, -76, -111, -64, -93, -119, -49, 121, 42, 125, 29, 43, -60, 81, -89, -128, 30, 40, 81, -48, -117, 60, -24, -117, -128, -89, 107, -91, -87, -6, -93, 71, -122, 24, 125, 65, 27, -39, -87, -109, -7, 101, 13, 74, -69, 122, 36, -24, -100, 2, 43, -64, -3, 54, -91, -69, 36, 36, 31, 35, 101, 38, 64, 109, 18, 96, 72, 106, 4, 15, 47, 19, -56, -66, -21, 119, 5, -20, -91, -57, -59, 26, -121, -112, 65, 90, 56, 38, -113, 59, 99, 38, 112, 105, 121, 106, -55, 48, -52, 19, -47, 21, -66, -36, -70, 44, 123, -41, -84, 123, 118, -128, -104, 6, 29, -12, 19, 32, 24, -80, 80, -112, 40, -122, -114, 101, 27, -14, 106, -119, -54, -90, 86, -126, 54, -114, 121, 24, 108, 92, 112, 74, 73, 65, 84, -109, -92, 90, 97, 108, 69, -83, 86, -99, -110, 26, 92, -63, 80, -78, 68, 64, 65, 51, -105, -105, 107, 71, 43, -127, -76, -116, -2, -72, 2, -71, 56, 125]
generate_kyber_key_out_pubkey = [1, -77, 34, 33, 52, 18, 114, 41, 28, -82, 118, -92, -61, -22, -69, 48, 118, -123, 96, -62, -113, -42, 100, 59, 31, -87, -123, 28, 38, 34, -75, 108, 108, -21, -87, -72, 6, -86, -88, 125, -42, 49, 121, 24, 62, 55, -28, 122, 19, -26, -58, -128, -42, 26, 10, 74, 73, -81, 41, -106, -89, 37, -89, -19, -30, -57, -1, -61, 38, 105, -128, 76, 75, -28, -74, 6, -11, 109, 109, 43, 116, 31, 98, 96, 36, 89, 3, 126, -20, -58, 44, 104, -103, -89, 104, 77, -58, 8, 75, 8, -59, 93, -61, 85, 82, 98, 99, -104, 111, -68, -93, 101, 12, 25, -68, -36, 118, 96, 21, 3, 16, 21, 24, -104, 16, -105, -3, -102, 75, -24, -32, 21, 121, 43, 49, 101, 80, 93, -119, 85, 47, -67, -57, -127, -88, 16, -110, 105, 80, -127, -38, -73, 24, 25, -23, 68, -27, 102, 13, -58, -62, 12, -73, -120, 45, -120, -45, 44, -51, -41, -61, 109, -22, -87, 35, -126, -104, -42, 56, 33, 67, -54, 99, 47, -100, 0, -58, 122, 3, -108, 101, -86, -78, -16, -73, -121, 101, 44, -103, 50, -90, 82, -121, 30, 71, -100, 81, -20, 28, 7, -7, -36, -104, 86, -100, 23, 3, 80, 100, -36, 106, 54, -1, -70, -69, 67, 91, 75, -90, -54, 99, -63, 105, -105, -110, 55, -81, -111, -43, 40, 25, 82, 9, -94, 81, -100, 43, 60, 49, -85, 113, -113, -59, -9, -96, 45, -102, 77, 20, 69, -93, 123, 27, -105, 11, 17, -123, -116, -69, -69, 17, 76, -119, 97, 104, -62, 93, -84, 62, 32, -60, -127, -4, -87, 81, 52, 33, -107, 56, 91, 63, 30, 26, 45, 87, 98, 45, -108, 44, 55, -61, 67, 86, 74, -8, -97, 106, -80, -92, -124, -94, 98, -5, 67, -94, 28, -5, 2, -116, -38, -116, -107, 72, 73, -9, -116, 107, 50, 51, 107, -7, 58, -88, 91, -59, 107, 109, -120, 100, -16, 74, -63, 51, 114, -75, -20, 64, 5, -62, 64, 4, 64, -103, -51, 9, -110, -93, -48, 2, -67, -48, -110, -80, -124, 7, -115, 101, 12, -124, 119, 3, 121, 102, 58, 12, -54, -47, 98, 116, -91, -108, 111, 54, -101, 30, 58, -86, 1, -88, 54, -101, -40, 82, 108, -91, -68, -97, -77, -112, -76, -48, -90, 48, 20, -54, 43, -20, 70, -66, 16, -79, -63, 12, 106, -127, 20, 5, -32, -116, -112, -36, -106, -70, -62, -54, 2, 112, -109, 115, -89, 32, -67, -44, 35, 97, -107, 64, -81, 0, 32, 24, 108, -48, -68, -83, 114, -57, 118, 26, 49, -86, -74, -95, -95, 16, -72, 42, 124, 100, 43, 69, 41, -9, 7, 4, 60, 120, 8, -72, -69, 78, 73, -94, 42, -19, -88, 29, 10, 118, -116, 86, 107, 82, 60, -47, -57, -38, -31, 36, 59, -68, 38, 85, 51, 67, 94, -10, -111, 20, -74, 97, -93, 68, 67, -41, 88, 46, -6, -77, 100, 20, 88, 17, 52, -54, 1, 17, -6, 6, -6, 37, 67, -20, -119, 83, 15, -71, 39, -120, 75, 90, 103, 59, -83, -52, -6, 42, 74, -84, 96, -86, 53, 5, 84, -119, -71, -61, -78, -53, -104, 5, -98, -100, -10, 123, -91, 52, -52, 46, -30, 70, -116, -53, 24, 53, -56, 9, 43, 65, 115, -49, -23, 81, 33, 75, 110, 82, -70, -95, -104, 3, 15, 25, 36, -62, -55, 20, 73, -59, -46, 18, 77, -104, -64, 67, -7, 90, -104, -31, -128, -62, 76, -97, 108, 43, -53, -71, 12, 13, 27, 49, 119, 52, -60, 118, 60, 36, 3, 81, -24, 66, -60, -20, -112, 120, 59, 7, 47, -40, -57, 67, 120, 8, 72, 28, 23, 127, 114, -97, 107, 40, -69, -34, 123, -98, 39, -90, -106, 13, -123, 55, -109, 124, 58, 22, -8, 105, -25, -4, -83, -4, -26, -88, 5, 76, -118, 17, -87, -79, 13, 102, 99, 22, 35, -123, -3, 87, 79, -1, 90, -83, -127, -8, 29, -106, -79, -120, -94, 115, 65, -52, 6, 15, -39, -43, 49, 69, -45, 6, -71, -42, -58, -52, -73, 83, -44, 107, -110, 77, -63, -82, 8, 100, 28, -76, 73, 104, -92, 27, 0, -118, -48, 101, 52, -58, -60, 32, 117, 31, -27, -87, 117, 59, -106, 42, 118, -122, -109, 8, -110, 119, -54, -21, 60, -126, 92, -82, -30, 9, 34, -123, 90, 98, -53, 8, 48, -60, 43, 103, -89, -62, 26, -72, 54, -114, -57, 25, 26, -9, 62, 33, -32, 38, 59, -125, 41, 113, 42, -12, 117, 94, 19, -36, -79, 124, -78, -15, -8, 16, 7, -45, 65, 11, -64, 30, -22, -60, -68, 75, -89]
assert(generate_kyber_keys(generate_key_in_paramk, seed=generate_key_in_public_seed) == (generate_kyber_key_out_privkey, generate_kyber_key_out_pubkey))
encrypt_in_m1 = [10, 85, -92, 67, 61, -70, -84, 59, 97, 109, 108, 67, 56, -4, -82, -60, -87, 104, 94, -118, -93, 125, 106, 91, -41, 77, 97, -108, -107, -51, 63, -19]
encrypt_in_pubkey1 = [17, 90, -50, 14, 100, 103, 124, -69, 125, -49, -55, 60, 22, -45, -93, 5, -10, 118, 21, -92, -120, -41, 17, -86, 86, 105, -116, 86, 99, -85, 122, -55, -50, 102, -43, 71, -64, 89, 95, -104, -92, 63, 70, 80, -69, -32, -116, 54, 77, -105, 103, -119, 17, 125, 52, -10, -82, 81, -84, 6, 60, -75, 92, 108, -93, 37, 88, 34, 125, -2, -8, 7, -47, -100, 48, -34, 65, 68, 36, 9, 127, 106, -94, 54, -95, 5, 59, 74, 7, -89, 107, -29, 114, -91, -58, -74, 0, 39, -111, -21, -32, -81, -38, -11, 78, 28, -94, 55, -1, 84, 91, -90, -125, 67, -25, 69, -64, 74, -47, 99, -99, -68, 89, 3, 70, -74, -71, 86, -101, 86, -37, -65, -27, 49, 81, -111, 48, 102, -27, -56, 85, 39, -36, -108, 104, 17, 10, 19, 106, 65, 20, -105, -62, 39, -36, -72, -55, -78, 85, 112, -73, -96, -28, 42, -83, -90, 112, -97, 35, 32, -113, 93, 73, 110, -70, -73, -124, 63, 100, -125, -65, 12, 12, 115, -92, 2, -106, -20, 44, 100, 64, 0, 19, -108, -55, -100, -95, 115, -43, -57, 117, -73, -12, 21, -48, 42, 90, 38, -96, 116, 7, -111, -123, -121, -60, 17, 105, -14, -73, 23, -121, 85, -84, -62, 127, -56, -79, -100, 76, 75, 63, -51, 65, 5, 63, 44, 116, -56, -95, 10, -125, 33, 36, 27, 40, 2, 67, 40, 117, -82, -128, -117, -98, -15, 54, 92, 123, -118, 82, -112, 47, 19, 23, -70, 47, -80, 38, -97, 71, -109, 6, 114, 16, 123, 71, 38, -2, -10, 69, 71, 57, 77, 51, 32, -56, -15, 32, -77, -62, -12, 114, 91, 3, 5, -6, -72, -116, -57, -104, 31, -53, 9, -89, 106, 28, -65, 127, 23, -97, 67, -69, 10, 76, -117, 5, -112, -123, 127, 30, 105, 112, -124, 102, -57, -8, 96, 115, -111, -25, -68, 82, 104, -65, -45, -41, -95, -33, -4, -76, -20, -94, -95, -55, -75, -105, 89, 48, 19, -43, -4, 66, 2, -20, 43, 116, -27, 122, -73, 107, -68, -13, 99, 43, -70, -7, 124, -36, 65, -118, 111, 22, 57, 40, 56, -54, -101, -12, 93, -33, 2, 55, 119, -73, 86, 24, 51, -63, 5, 25, 15, -108, -13, 2, -59, -101, 83, 25, 0, -69, -56, 22, 54, 31, -86, 91, 51, -128, -54, 58, -119, 49, 4, -54, 115, -120, -79, -123, 103, 27, 62, 95, -29, 121, 14, -102, 98, 110, -60, 109, -101, 11, 51, -57, -92, 25, -81, 123, 50, -74, -123, -104, -108, -11, 117, -40, 42, -59, 69, 107, 84, -112, -89, -81, -113, -26, 16, 70, 54, 5, -119, -20, -70, 114, 68, 35, 111, 65, 35, 17, 107, 97, 116, -86, 23, -110, 73, -92, -111, -107, -77, 86, -57, 47, -58, 100, 31, 2, 81, -127, 46, -86, -104, 87, 11, 4, 102, -103, 7, 14, 8, 25, -36, 39, 19, -12, 105, 19, 125, -4, 106, 61, 123, -110, -78, -104, -103, 94, -25, -128, 54, -111, 83, -84, 54, 107, 6, -41, 36, -100, -48, -98, 27, 51, 120, -5, 4, 57, -100, -20, -72, 101, 5, -127, -42, 55, -57, -102, -26, 125, 111, 44, -81, 106, -70, -49, 89, -127, 89, -89, 121, 44, -77, -55, 113, -47, 73, -99, 35, 115, -83, 32, -10, 63, 3, -69, 89, -19, 19, 115, -124, -84, 97, -89, 21, 81, 67, -72, -54, 73, 50, 97, 46, -55, 21, -28, -54, 52, 106, -101, -50, 93, -42, 4, 23, -58, -78, -88, -101, 28, -60, 53, 100, 63, -121, 91, -36, 90, 126, 91, 52, -127, -49, -111, -98, -96, -111, 114, -2, -68, 70, -44, -4, 63, -80, -53, -107, -111, 112, 78, -30, -37, -74, 24, 68, -78, -13, 49, 74, 6, -69, 108, 109, 52, 0, 94, 72, 92, -26, 103, -67, -57, -48, -104, 88, 105, 40, -46, -39, 19, 64, -16, 4, 25, -22, 64, 19, 81, -94, 64, -96, -80, 65, 5, -117, -17, -80, -62, -3, 50, 100, 91, 122, 45, -8, -11, -53, -3, -121, 51, 39, -55, 120, -41, -77, 81, -94, -128, -120, 67, -120, 55, 2, 76, 82, -71, -62, -107, -51, 113, 54, 70, -5, 93, 108, 12, -49, -76, 112, 115, 74, -62, -78, -68, -127, 35, -62, -63, 61, -10, -109, -114, -110, 69, 90, -122, 38, 57, -2, -72, -90, 75, -123, 22, 62, 50, 112, 126, 3, 123, 56, -40, -84, 57, 34, -76, 81, -121, -69, 101, -22, -3, 70, 95, -58, 74, 12, 95, -113, 63, -112, 3, 72, -108, 21, -119, -99, 89, -91, 67, -40, 32, -116, 84, -93, 22, 101, 41, -75, 57, 34]
encrypt_in_coins1 = [-128, 53, 8, -15, -92, -21, -89, 117, -36, 93, 90, -21, 102, 29, -69, -108, -42, -120, -7, 78, -58, 19, 127, -62, 65, 72, 70, 45, 35, 37, 39, -8]
encrypt_in_params_k1 = 2
encrypt_out1 = [-19, -14, 65, 69, -28, 59, 79, 109, -58, -65, -125, 50, -11, 78, 2, -54, -80, 45, -65, 59, 86, 5, -35, -55, 10, 21, -56, -122, -83, 62, -44, -119, 70, 38, -103, -28, -85, -19, 68, 53, 11, -61, 117, 126, 38, -106, -5, -5, 37, 52, 65, 46, -115, -46, 1, -15, -28, 84, 10, 57, 112, -80, 85, -2, 59, 11, -20, 58, 113, -7, -31, 21, -77, -7, -13, -111, 2, 6, 91, 28, -54, -125, 20, -36, -57, -107, -29, -64, -24, -6, -104, -18, -125, -54, 102, 40, 69, 112, 40, -92, -48, -98, -125, -98, 85, 72, 98, -49, 11, 123, -11, 108, 92, 10, -126, -98, -122, 87, -108, 121, 69, -2, -100, 34, 86, 79, -70, -21, -63, -77, -81, 53, 13, 121, 85, 80, -118, 38, -40, -88, -21, 84, 123, -117, 26, 44, -16, 60, -54, 26, -85, -50, 108, 52, -105, 120, 59, 100, 101, -70, 11, 110, 122, -53, -88, 33, 25, 81, 36, -82, -16, -98, 98, -125, -126, -95, -7, 20, 4, 59, -25, 9, 110, -107, 44, -68, 79, -76, -81, -19, 19, 96, -112, 70, 17, 124, 1, 31, -41, 65, -18, 40, 108, -125, 119, 22, -112, -16, -82, -75, 13, -96, -41, 18, -123, -95, 121, -78, 21, -58, 3, 109, -21, 120, 15, 77, 22, 118, -97, 114, -34, 22, -3, -83, -84, 115, -66, -6, 91, -17, -119, 67, 25, 127, 68, -59, -107, -119, -36, -97, 73, 115, -34, 20, 80, -70, 29, 12, 50, -112, -42, -79, -42, -125, -14, -108, -25, 89, -55, 84, -85, -24, -89, -38, 91, 16, 84, -3, 109, 33, 50, -101, -114, 115, -45, 117, 106, -3, -96, -36, -79, -4, -117, 21, -126, -47, -7, 12, -14, 117, -95, 2, -85, -58, -84, 105, -99, -16, -59, -121, 14, 80, -95, -7, -119, -28, -26, 36, 27, 96, -86, -94, -20, -7, -24, -29, 62, 15, -4, -12, 15, -24, 49, -24, -3, -62, -24, 59, 82, -54, 122, -74, -39, 63, 20, 109, 41, -36, -91, 60, 125, -95, -37, 74, -60, -14, -37, 57, -22, 18, 13, -112, -6, 96, -12, -44, 55, -58, -48, 14, -12, -125, -68, -108, -93, 23, 92, -38, 22, 63, -63, -62, -126, -117, -28, -37, -42, 67, 5, 7, -75, -124, -69, 81, 119, -31, 113, -72, -35, -87, -92, 41, 60, 50, 0, 41, 92, -128, 58, -122, 93, 109, 33, 102, -10, 107, -91, 64, 31, -73, -96, -24, 83, 22, -122, 0, -94, -108, -124, 55, -32, 54, -29, -65, 25, -31, 47, -45, -14, -94, -72, -77, 67, -9, -124, 36, -114, -115, 104, 94, -80, -81, -34, 99, 21, 51, -121, 48, -25, -95, 0, 28, 39, -40, -46, -89, 111, -90, -99, 21, 123, -95, -84, 122, -43, 109, -91, -88, -57, 15, -28, -75, -72, -41, -122, -36, 111, -64, 86, 107, -88, -31, -72, -127, 99, 52, -45, 42, 63, -79, -50, 125, 77, 94, 76, 51, 42, -9, -80, 3, -48, -111, 116, 26, 61, 92, -106, 82, -110, 37, 93, -1, -114, -46, -69, -15, -7, 17, 107, -27, 12, 23, -72, -27, 72, 116, -118, -44, -78, -23, 87, -69, -47, -107, 52, -126, -94, -31, 113, -116, -20, 102, -51, 44, -127, -11, 114, -43, 82, -73, 24, 120, -123, -26, -72, -108, 61, 100, 49, 65, 60, 89, -21, -73, -32, 54, 4, -124, -112, -66, 82, -119, -23, 91, 32, -88, -98, -117, 21, -97, 97, -87, -87, -120, 110, 20, 117, 104, -12, -55, 2, 31, 54, 47, 2, 104, -118, 28, -116, 59, -80, -46, 64, -122, -120, 14, 85, -74, -19, -76, 63, 55, 69, -46, -63, 102, -36, 28, -73, 67, -57, 111, -26, -66, 82, 58, -119, 60, -57, 100, -47, 100, 53, -61, 120, 81, 37, 42, -127, -30, -1, -70, 15, 24, -105, 26, 61, -18, 55, -44, -121, 124, -71, 40, -29, 110, 82, 53, 3, 122, 107, 32, 87, -119, 125, 81, -118, 95, 14, 52, -114, 58, -74, -43, -75, 45, -4, 96, 117, 127, 59, 65, -92, -2, -57, -126, -113, 29, -18, -81, 69, -121, -52, -56, -22, -33, 100, 127, 77, 32, 59, 47, -86, 5, -90, 73, -75, -126, 52, 12, -76, -54, -50, 87, -93, 7, 17, -66, 117, 47, -84, -16, 34, 125, 10, -128, -60, 18, -124, 66, -35, -59, 68, -66, -128, 91, -100, -2, -113, -23, -79, 35, 124, -128, -7, 103, -121, -51, -110, -127, -52, -14, 112, -63, -81, -64, 103, 13]
encrypt_in_m2 = [115, 109, 6, -32, -12, 113, 81, -39, 99, -18, -37, -101, 8, 75, 94, 124, 118, 105, 114, -65, -115, 33, -100, -73, 125, -16, 105, -8, 63, 42, -72, -60]
encrypt_in_pubkey2 = [22, -41, -109, 23, 104, 121, 94, -32, 111, -14, 124, 104, 114, -125, 80, 61, -90, 93, 100, 23, 111, -75, 44, -92, 12, -56, 101, 6, 57, 77, 56, 10, 33, -21, -24, -74, -127, -92, 8, -6, 17, -107, -31, -22, 39, -73, -117, 80, 33, 53, 39, 43, 96, 23, -51, 87, -75, -20, 102, -121, 107, -46, 45, 78, -124, 97, 1, 58, 89, -48, -104, -124, 8, -84, 112, 38, 27, 110, 87, 99, 39, -73, 116, 25, 106, 124, 26, 34, -64, -116, 35, 82, 114, -14, -21, 34, 84, -24, 124, 91, 98, 95, 4, 116, 104, -96, -79, -128, -40, 87, -110, -82, -20, -59, 3, 108, 43, 109, -47, -124, 104, 18, 60, -10, 42, 67, 49, -41, -73, 14, 58, -61, -84, 68, 4, -37, 115, 16, 120, 87, -67, -91, 66, 82, 79, 67, -89, -105, -109, -100, 125, -100, -107, 116, -68, -75, 117, 103, 82, 83, 102, -59, -80, -110, 103, 37, 96, 70, 18, -88, 115, 6, 50, 51, -100, -121, 107, -43, -95, -58, -127, 90, 119, 119, 100, -74, -81, -24, -71, -29, -10, 63, -41, -110, 12, -121, 72, -101, -126, -21, 33, -2, -23, 61, 95, 114, 90, -40, 4, -75, -63, 40, -128, 20, 91, 35, 56, 89, -70, -128, 22, 87, 3, 38, 12, 48, -111, 125, 68, -6, 111, 113, -40, -100, 87, 38, 22, 117, 12, 85, -44, -72, -127, -126, 41, 101, 127, -39, 126, 100, 107, 12, 98, 18, -58, 32, 4, -126, -27, -103, -49, -24, -104, 69, -25, -73, 104, -89, -20, 47, -89, 74, 53, -113, -37, -94, -77, -89, 56, 111, -79, 99, 38, -43, 105, -6, 42, -54, -29, -7, 89, -80, -57, -84, 84, -20, -87, 32, 91, 60, -62, -105, 116, -9, 103, 81, 88, 56, 9, 6, -77, 13, 103, -122, -93, -103, -117, 17, -44, 52, -123, -65, -25, 64, -99, 68, 21, -111, -58, 58, -46, 119, 76, 32, 10, 26, -24, 80, 14, -111, 49, -77, -11, 48, 62, -74, -61, -62, 38, -80, 17, -92, -76, 98, -82, -55, -65, -73, 76, 118, 93, 71, 113, -54, 70, -64, 115, -71, 78, 77, 33, 0, -11, 28, 81, 105, 9, 25, 110, 68, -96, -71, 87, 24, 55, -9, 122, -28, 64, -106, -53, -43, 70, 60, 50, 45, 19, -102, -75, -19, 116, 119, -6, -119, 127, -115, 52, 44, 74, -75, -109, 41, -74, 9, -46, 38, 109, -38, -72, 96, -114, 86, 122, -18, 56, -82, 38, -52, 53, 27, 55, 45, -30, 20, -95, -26, 72, -66, -18, 60, 76, 55, -127, 103, -5, 26, 1, -64, 104, 97, -100, 35, 116, -72, -44, 48, 77, -57, -72, -68, 120, -96, 67, -100, 122, 57, 123, 55, 104, 28, 123, 24, -110, 69, 12, 105, -104, -45, -126, 120, 42, -128, 101, 93, -80, 24, -88, -5, -109, 107, 42, 78, -15, 82, -75, -64, -64, 91, -39, 74, -119, 104, -128, -91, -99, 2, 57, -113, -76, 99, 47, 82, -114, -56, 112, -113, 59, 117, 122, -2, -72, -126, -20, -89, -63, -117, 3, 76, -1, -110, 94, 57, 119, -76, 57, -44, 17, -121, -43, 85, 51, 7, 56, -93, -14, -84, -124, -8, -99, -120, 2, 110, 13, 54, -88, 40, -15, -126, 65, -60, 27, -123, -10, -110, -69, 36, -106, -56, 40, -122, -92, -38, -85, -75, 123, 3, -78, -8, -66, -70, 33, -120, -93, 17, 43, 122, 57, 33, 98, 99, 30, -46, 26, -99, -55, 57, -114, 73, -26, 20, 99, 2, 97, -57, -87, 48, 85, 19, 72, -74, 66, -121, -59, -7, 2, 23, -58, 46, 85, 28, -93, 69, -32, -91, -17, -90, 98, -28, -26, 59, -28, 103, 96, -21, 12, 99, 34, 90, -63, 20, -122, 38, 115, 66, -124, -100, -52, 13, 112, -92, -58, -16, 108, -50, 38, -106, 20, 91, -87, 126, 124, 17, 93, -121, 42, 73, 44, 70, 99, 36, -24, -57, -49, 64, 119, 124, 89, 8, 119, 91, 29, 17, 115, 17, 71, 0, 22, -74, 26, -60, 120, -16, 123, -74, 55, -92, -93, 56, 46, -21, 65, 41, 53, -53, -125, -77, -122, 121, -11, -43, 43, -24, -41, -91, -102, 117, 49, 59, 40, -64, 56, -86, 61, -60, 80, 118, -77, 101, 67, 97, 0, -115, 89, -25, -50, -20, 96, -118, -53, -26, -120, 64, -92, 71, -65, 22, -67, -25, -102, -92, 115, -64, -62, 26, -13, 108, -98, -62, 110, -50, -101, 23, 121, -100, 102, 32, -7, -118, -83, 30, 34, 79, -118, 18, -48, 76, -7, 40, 88, -86, 47, -40, 108, 20, 122, 5, -43, -37, -30, 124, -95, 109, 83, -58, -43, 42, -50, 75, -125, -115]
encrypt_in_coins2 = [-102, -20, -19, -107, -105, -54, 102, 87, -69, -13, -40, -100, -54, -111, -11, 100, -75, -108, 109, -23, -91, -14, 47, -99, 68, -109, -53, 110, -123, 127, -88, 65]
encrypt_in_params_k2 = 2
encrypt_out2 = [-84, 52, 40, 40, -7, 67, -71, -89, 126, 20, -75, -126, -83, 73, -62, 96, -45, -50, -44, 88, -65, -102, -121, -88, -26, -46, 95, 107, 18, -46, -79, -56, 60, -81, 69, -92, -71, 70, 26, -81, -33, -115, -2, 112, 21, -1, -99, 24, 48, 36, 51, -96, -125, -51, 71, 61, 21, 107, 45, -47, -125, 112, 110, -45, -34, -118, -9, -36, -73, 35, -84, 32, -123, 126, -11, 13, -35, -37, 51, 122, 101, 124, 90, -70, 60, 68, -17, -31, 24, -61, -99, 61, -56, -44, -21, -76, -60, -5, 105, 78, -77, -38, -57, -115, -10, 20, -10, -85, -51, -51, -73, -126, -116, -24, -47, 64, -82, 43, 98, -25, -58, -75, -125, 11, 41, -116, -121, -45, -66, -55, -28, 17, -93, -64, -105, -3, -110, -72, 11, 22, 11, 10, -62, -19, -118, 120, -30, 50, 98, 113, -103, 67, 61, -27, -15, 1, 88, 42, 18, -53, 40, -17, 67, -83, -125, 18, -75, 69, -111, 58, -52, -3, -6, -66, 124, -39, -17, 98, 53, -91, -78, -121, 4, -82, 112, 69, -44, 53, -40, -23, 127, 90, 124, 47, 80, 7, 93, -91, 53, 37, -7, 102, -2, 17, 64, -16, -21, -76, -72, -17, -99, 25, 83, 114, -51, 73, 66, 75, -101, -67, 67, -102, -66, 120, -61, 26, -1, -83, 22, 39, -76, -20, 29, 54, -107, 18, 64, -45, -108, -32, 36, 10, -20, 95, 73, -34, 33, 122, 33, -67, 1, 47, -102, -115, 26, -32, 117, 60, 79, -9, -14, 94, 100, -124, 60, 39, -58, 36, 49, 63, 111, 39, 115, 37, 121, 84, 18, 39, 114, 119, 98, 7, -90, -72, 42, 73, 7, 18, -36, -93, 8, -117, 118, -65, 76, -121, -115, -83, 126, -49, -20, 76, -109, 93, -39, 119, -74, -43, 67, -48, 82, -30, -10, -22, -16, -66, 51, -81, -83, 44, 63, 9, 56, 42, 0, -65, -111, -106, 13, -42, -52, 13, -86, 85, 93, 0, 107, 105, -74, 108, -80, -37, -15, -75, 17, 55, -108, 115, 98, -30, 77, -44, 33, 111, -75, -117, -90, -27, 16, -61, 121, 17, 42, 77, -37, 78, -8, -47, 70, 79, -96, -116, -90, 61, -39, -84, -45, -100, -37, -84, -2, -48, 74, 84, -43, -98, 48, 60, -12, -69, -51, -69, 36, 93, 69, 47, -127, -9, -78, 24, 41, -123, -41, -44, -59, -47, -101, 102, 108, -81, 96, 31, -47, -37, -41, -68, -3, 77, -88, 6, -12, -3, -95, 63, -1, -104, 88, -106, -69, 92, -64, -28, -80, 24, 100, 51, -123, -67, -128, -16, 42, 108, 25, 85, 52, -64, 33, -120, -29, 40, -91, -7, 0, 51, -17, -72, 101, 29, -56, 83, -18, 4, -6, -64, -86, 93, 29, -37, 16, 21, 120, -56, -103, 101, 15, 28, 22, 95, -72, 29, -88, 81, -62, -30, -31, 17, -10, 34, -53, -15, 26, 115, 123, 116, -40, 101, 77, -103, -21, -94, 70, -67, -32, 101, 35, -106, 107, -18, 12, -91, 59, 48, -40, 61, -72, -117, 57, 35, 93, 77, 57, -95, -30, 52, -124, -32, -21, -11, -81, 106, 112, 31, -84, 60, -2, 7, 59, 21, 30, -93, 114, -15, 61, 14, 4, -112, -110, 68, 61, 0, -96, -62, 126, -24, -53, -84, -64, 51, 63, 48, -83, 46, 62, -79, 120, 80, 78, 64, -24, 29, -98, 115, 13, 58, -81, 34, -116, -121, 109, 118, 68, -46, -74, 107, 70, 28, -63, -128, 97, 51, -51, 12, -84, -113, 14, 22, 125, -31, 64, -5, 32, -23, 122, -10, 115, 108, -76, 35, 6, -106, 124, -105, 51, -65, 41, 94, -7, -29, 24, 106, -91, 84, 23, 121, 52, 58, -43, 16, -85, -42, 27, 72, 41, -34, 127, -2, 28, 33, -64, 102, 124, 31, 60, 49, -119, -108, 18, -57, 32, 43, 55, -118, -54, 118, -63, -18, 56, -103, 58, -71, -50, -76, 78, -47, 113, -113, -120, 103, 12, 26, 79, -29, -21, -64, -19, 6, 1, 90, -96, -92, 51, -2, -56, -39, -34, 72, -48, 94, -45, -24, 69, -111, -81, -91, -17, -107, -127, 106, -65, 39, 73, 100, -32, 20, -20, -53, 10, -98, 91, 20, 37, 14, -115, 23, 118, 17, 87, -81, -81, -67, -71, 124, -106, -7, -59, -74, -25, -16, 6, -93, -4, 103, -128, -60, 113, -46, -110, -5, -55, -19, 102, 110, -12, 5, 57, -128, -126, 4, -55, -100, 125, 1, -109, 15, -47, -13, 113, -28, 42, 87, -17, -90, 118, -61, 73, 119, 121, -47]
assert(encrypt(encrypt_in_m1, encrypt_in_pubkey1, encrypt_in_coins1, encrypt_in_params_k1) == encrypt_out1)
assert(encrypt(encrypt_in_m2, encrypt_in_pubkey2, encrypt_in_coins2, encrypt_in_params_k2) == encrypt_out2)
decrypt_in_pct1 = [-19, -14, 65, 69, -28, 59, 79, 109, -58, -65, -125, 50, -11, 78, 2, -54, -80, 45, -65, 59, 86, 5, -35, -55, 10, 21, -56, -122, -83, 62, -44, -119, 70, 38, -103, -28, -85, -19, 68, 53, 11, -61, 117, 126, 38, -106, -5, -5, 37, 52, 65, 46, -115, -46, 1, -15, -28, 84, 10, 57, 112, -80, 85, -2, 59, 11, -20, 58, 113, -7, -31, 21, -77, -7, -13, -111, 2, 6, 91, 28, -54, -125, 20, -36, -57, -107, -29, -64, -24, -6, -104, -18, -125, -54, 102, 40, 69, 112, 40, -92, -48, -98, -125, -98, 85, 72, 98, -49, 11, 123, -11, 108, 92, 10, -126, -98, -122, 87, -108, 121, 69, -2, -100, 34, 86, 79, -70, -21, -63, -77, -81, 53, 13, 121, 85, 80, -118, 38, -40, -88, -21, 84, 123, -117, 26, 44, -16, 60, -54, 26, -85, -50, 108, 52, -105, 120, 59, 100, 101, -70, 11, 110, 122, -53, -88, 33, 25, 81, 36, -82, -16, -98, 98, -125, -126, -95, -7, 20, 4, 59, -25, 9, 110, -107, 44, -68, 79, -76, -81, -19, 19, 96, -112, 70, 17, 124, 1, 31, -41, 65, -18, 40, 108, -125, 119, 22, -112, -16, -82, -75, 13, -96, -41, 18, -123, -95, 121, -78, 21, -58, 3, 109, -21, 120, 15, 77, 22, 118, -97, 114, -34, 22, -3, -83, -84, 115, -66, -6, 91, -17, -119, 67, 25, 127, 68, -59, -107, -119, -36, -97, 73, 115, -34, 20, 80, -70, 29, 12, 50, -112, -42, -79, -42, -125, -14, -108, -25, 89, -55, 84, -85, -24, -89, -38, 91, 16, 84, -3, 109, 33, 50, -101, -114, 115, -45, 117, 106, -3, -96, -36, -79, -4, -117, 21, -126, -47, -7, 12, -14, 117, -95, 2, -85, -58, -84, 105, -99, -16, -59, -121, 14, 80, -95, -7, -119, -28, -26, 36, 27, 96, -86, -94, -20, -7, -24, -29, 62, 15, -4, -12, 15, -24, 49, -24, -3, -62, -24, 59, 82, -54, 122, -74, -39, 63, 20, 109, 41, -36, -91, 60, 125, -95, -37, 74, -60, -14, -37, 57, -22, 18, 13, -112, -6, 96, -12, -44, 55, -58, -48, 14, -12, -125, -68, -108, -93, 23, 92, -38, 22, 63, -63, -62, -126, -117, -28, -37, -42, 67, 5, 7, -75, -124, -69, 81, 119, -31, 113, -72, -35, -87, -92, 41, 60, 50, 0, 41, 92, -128, 58, -122, 93, 109, 33, 102, -10, 107, -91, 64, 31, -73, -96, -24, 83, 22, -122, 0, -94, -108, -124, 55, -32, 54, -29, -65, 25, -31, 47, -45, -14, -94, -72, -77, 67, -9, -124, 36, -114, -115, 104, 94, -80, -81, -34, 99, 21, 51, -121, 48, -25, -95, 0, 28, 39, -40, -46, -89, 111, -90, -99, 21, 123, -95, -84, 122, -43, 109, -91, -88, -57, 15, -28, -75, -72, -41, -122, -36, 111, -64, 86, 107, -88, -31, -72, -127, 99, 52, -45, 42, 63, -79, -50, 125, 77, 94, 76, 51, 42, -9, -80, 3, -48, -111, 116, 26, 61, 92, -106, 82, -110, 37, 93, -1, -114, -46, -69, -15, -7, 17, 107, -27, 12, 23, -72, -27, 72, 116, -118, -44, -78, -23, 87, -69, -47, -107, 52, -126, -94, -31, 113, -116, -20, 102, -51, 44, -127, -11, 114, -43, 82, -73, 24, 120, -123, -26, -72, -108, 61, 100, 49, 65, 60, 89, -21, -73, -32, 54, 4, -124, -112, -66, 82, -119, -23, 91, 32, -88, -98, -117, 21, -97, 97, -87, -87, -120, 110, 20, 117, 104, -12, -55, 2, 31, 54, 47, 2, 104, -118, 28, -116, 59, -80, -46, 64, -122, -120, 14, 85, -74, -19, -76, 63, 55, 69, -46, -63, 102, -36, 28, -73, 67, -57, 111, -26, -66, 82, 58, -119, 60, -57, 100, -47, 100, 53, -61, 120, 81, 37, 42, -127, -30, -1, -70, 15, 24, -105, 26, 61, -18, 55, -44, -121, 124, -71, 40, -29, 110, 82, 53, 3, 122, 107, 32, 87, -119, 125, 81, -118, 95, 14, 52, -114, 58, -74, -43, -75, 45, -4, 96, 117, 127, 59, 65, -92, -2, -57, -126, -113, 29, -18, -81, 69, -121, -52, -56, -22, -33, 100, 127, 77, 32, 59, 47, -86, 5, -90, 73, -75, -126, 52, 12, -76, -54, -50, 87, -93, 7, 17, -66, 117, 47, -84, -16, 34, 125, 10, -128, -60, 18, -124, 66, -35, -59, 68, -66, -128, 91, -100, -2, -113, -23, -79, 35, 124, -128, -7, 103, -121, -51, -110, -127, -52, -14, 112, -63, -81, -64, 103, 13]
decrypt_in_privkey1 = [108, -119, 43, 2, -105, -87, -57, 100, 20, -109, -8, 125, -81, 53, 51, -18, -42, 31, 7, -12, 101, 32, 102, 51, 126, -41, 64, 70, -36, -57, 27, -96, 63, 48, -106, 1, 3, 22, 31, 125, -21, 83, -89, 27, 17, 97, 114, 99, -2, 42, -128, -105, 105, -50, 109, 112, -88, 95, -26, 0, -20, -30, -99, 127, 54, -95, 109, 51, 27, -117, 42, -98, 29, -72, -64, -112, 116, 45, -16, 115, -97, -16, 96, -50, -76, -20, -59, -85, 28, 94, 85, -84, -105, -69, 102, -89, -8, -107, 16, 93, 87, 120, 43, 34, -107, 56, -29, 66, 21, 68, -93, 66, 20, 8, -37, -12, 73, 16, -109, 76, -60, 35, 119, 79, 22, 118, -1, 28, 48, 111, -105, 85, 95, 87, -76, -82, -41, -90, -70, -71, 80, -88, 22, 60, -115, 49, -115, -22, 98, 117, 27, -42, -85, -59, 6, -100, 6, -56, -113, 51, 0, 38, -95, -104, 6, -96, 59, -105, -89, 105, 107, 86, -38, 33, -126, 123, -76, -24, -36, 3, 17, 82, -76, 27, -119, 42, -98, -103, -83, -10, -31, -106, 62, -106, 87, -120, 40, 21, 79, 70, 112, 51, -124, 105, 32, -5, -76, -72, 5, 68, -25, -24, -88, 26, -23, 99, -49, 54, -116, -101, -96, 55, -88, -62, -83, 98, -29, 43, 110, 97, -55, 29, 117, -50, 0, 90, -77, 15, -128, -103, -95, -14, -99, 123, 99, 5, -76, -36, 6, -30, 86, -128, -69, 0, -103, 47, 113, 127, -26, -63, 21, -88, 8, 66, 49, -52, 121, -35, 112, 14, -90, -111, 42, -57, -6, 13, -109, 123, -74, -89, 86, 102, 34, 48, 71, 12, 24, -101, 90, -95, 101, 61, -21, -109, 125, 90, -100, 37, -94, 29, -109, -79, -112, 116, -4, 35, -99, -127, 83, 83, -105, -105, -57, -44, -85, 98, 100, -99, 118, -86, 85, 55, 54, -87, 73, 2, 44, 34, -59, 43, -82, -20, 96, 91, 50, -50, -98, 91, -109, -124, -112, 53, 88, -54, -99, 106, 58, -70, -112, 66, 62, -19, -96, 28, -108, 25, -117, 25, 42, -117, -87, 6, 52, -105, -96, -59, 1, 51, 7, -35, -40, 99, 82, 100, 113, -92, -39, -107, 35, -21, 65, 127, 41, 26, -84, 12, 58, 88, 27, 109, -96, 7, 50, -27, -24, 27, 31, 124, -121, -101, 22, -109, -63, 59, 111, -97, 121, 49, 98, 36, 41, -27, 66, -81, 64, 105, 34, 47, 4, 85, 68, -32, -52, 79, -78, 77, 68, 72, -49, 44, 101, -106, -11, -53, 8, 98, 75, 17, -123, 1, 59, 107, 2, 8, -110, -7, 107, -33, -44, -83, -87, 23, -99, -25, 39, -72, -39, 66, 110, 9, -106, -75, -45, 73, 72, -50, 2, -48, -61, 105, -77, 124, -69, 84, -45, 71, -98, -40, -75, -126, -23, -25, 40, -110, -101, 76, 113, -55, -66, 17, -44, 91, 32, -60, -67, -61, -57, 67, 19, 34, 63, 88, 39, 78, -117, -91, 36, 68, 71, -60, -107, -107, 11, -124, -53, 12, 60, 39, 54, 64, 16, -118, 51, -105, -108, 69, 115, 39, -109, 40, -103, 108, -36, 12, -111, 60, -107, -118, -42, 32, -70, -117, 94, 94, -53, -69, 126, 19, -53, -100, 112, -67, 90, -77, 14, -73, 72, -116, -105, 0, 28, 32, 73, -113, 29, 124, -64, 109, -89, 107, -11, 32, -58, 88, -52, -83, -6, 41, 86, 66, 69, 87, -85, -22, -118, -72, -110, 57, -63, 120, 51, -36, 58, 73, -77, 106, -102, -23, -92, -122, -108, 5, 64, -21, 68, 79, -105, 21, 35, 87, -32, 32, 53, -109, -99, 117, -93, -64, 37, -12, 26, 64, 8, 35, -126, -96, 115, 60, 57, -80, 98, 43, 116, 14, 64, 117, -110, -58, 46, -54, -21, 20, 50, -60, 69, -77, 112, 58, -122, -10, -104, 26, 39, -127, 87, -22, -107, -90, -23, 45, 85, -28, -71, 114, -7, 54, -62, -16, -90, 88, 40, 14, -94, -80, 122, 72, -103, 45, -8, -109, 126, 10, 42, -63, -36, -55, 116, -2, 0, -86, -31, -11, 97, -6, 37, -114, 45, 37, -100, 62, -122, 29, -50, 35, 96, 57, 18, 118, 6, -4, 28, -32, 9, 0, 58, 123, -84, -108, 33, 1, -36, -72, 34, -79, -13, -63, 43, -9, 50, 56, -11, 70, -32, 28, 54, -75, -90, -109, 97, -110, -103, 92, -58, -100, 99, 35, 116, 9, -53, 83, -62, -29, 93, 116, -119, 13, 24, -120, 83, 118, -6, 85, 3, -79, 7, -94, -93, -110]
decrypt_in_params_k1 = 2
decrypt_out1 = [10, 85, -92, 67, 61, -70, -84, 59, 97, 109, 108, 67, 56, -4, -82, -60, -87, 104, 94, -118, -93, 125, 106, 91, -41, 77, 97, -108, -107, -51, 63, -19]
decrypt_in_pct2 = [103, -117, 57, 59, -81, 39, -70, 64, -113, -55, -72, -82, -3, -75, -34, 127, 49, -10, -105, 47, -70, -37, -44, -107, -16, 51, 34, 72, 49, -50, -50, -95, 108, 98, 54, -94, -108, 55, 79, -44, 23, 78, 12, 89, 51, -93, 67, 127, 124, -65, -57, -65, -84, 59, -73, -51, -16, 57, -17, -10, 38, -48, -32, 72, -3, 96, -55, 36, -13, -27, -113, -1, 41, 86, 66, -80, -94, 105, -76, -77, 36, -110, 45, 40, -103, 6, -23, -80, 29, -41, -11, -24, -96, 78, -24, -100, -98, -125, 80, 127, -61, -6, -65, 104, -2, 43, -15, -27, -23, -66, 108, 64, 11, -117, 6, 51, -93, -46, 47, -77, -60, -53, 102, -110, 57, 99, 73, -16, 93, 93, 118, 14, -63, -17, -85, -127, 92, -78, 124, -85, 89, 9, 8, 22, 113, -15, -65, -62, -38, -102, -22, -112, 96, -71, 127, 25, -73, 123, -73, -114, 19, -64, -74, -56, 72, -25, 87, 69, 5, -106, -117, -88, 126, -100, 25, 6, 32, -9, -15, 23, 50, 73, -90, -71, 28, 7, 28, 45, -63, 100, 39, 110, 118, -124, 79, 113, 75, -70, -6, 11, -40, -1, 111, -35, -98, -66, -83, -17, 126, 13, 42, -8, -32, -41, 13, -43, 65, 104, -126, -40, -32, 25, 36, -83, 121, -78, 66, -11, 84, 71, 102, 43, 87, -34, 80, -27, 71, 80, 67, -38, 6, 32, 27, 33, -115, -83, -10, 73, -21, -111, 53, -54, -41, 119, 83, 13, 46, -124, 27, -29, 56, 18, 25, 57, -128, 80, -13, -17, 30, -102, -2, 45, -62, 61, -126, 99, -2, -83, 82, 106, -36, -19, 63, -51, 35, -30, -94, -55, -95, 32, 17, -95, 86, 98, -116, 91, 45, 77, 127, 110, 114, 78, -71, 109, -122, 56, 122, 31, 11, 17, -126, -38, 105, 38, -56, -6, 38, 48, -10, -68, 83, 69, -96, -124, -5, 124, -62, 18, 47, -123, 32, 13, 75, 12, 103, 50, 27, -61, -38, -30, 94, -64, -21, 116, 81, -4, -115, -126, -55, 66, -99, -48, 26, 113, 87, -34, 59, 78, 85, 35, -107, 70, 0, -101, -89, 68, 44, 47, -95, 121, 111, 65, 102, 75, 2, -66, 47, -17, -57, -118, -49, 67, 56, -42, -64, 101, 113, -66, -50, -74, 72, 8, -98, 93, 34, -84, -9, -115, 55, 10, 96, 30, 116, -103, -56, -58, -59, -29, 19, 109, -89, -6, 49, -62, -111, 55, -109, 60, 62, -120, 49, 76, 108, 70, 11, -54, -126, -126, 89, -75, 20, -123, 60, -88, -5, -93, 114, -102, -88, 114, -69, 29, -85, 110, 50, -81, -21, -37, -80, 76, 24, 59, 0, 36, 70, -100, 65, -101, 83, 29, -83, 74, -96, -19, -81, 43, -83, -5, 35, -68, 66, -52, -121, 84, 38, 23, 12, 69, 43, -65, -98, 20, -108, -42, 53, 80, 114, 22, 103, 0, 11, -15, 11, -109, -56, -97, -123, -36, 125, 78, 8, 126, -108, -96, -15, 30, 10, 94, 93, 51, -61, 34, 12, 87, 71, -62, -41, 89, 78, 123, -30, 11, -123, -103, 39, -82, -128, 65, -44, -107, -79, 63, -77, 118, 63, 4, -124, 79, 31, -53, -3, 85, -102, 109, 14, 2, -25, -44, -1, -123, 94, 105, 115, -70, 44, 117, -122, 83, 116, 21, 122, -104, 106, -102, 120, -72, -35, -73, 109, 41, 12, -92, -118, 79, 50, 117, 117, -115, -113, 122, -109, 122, 11, 29, 65, 66, -60, 57, 48, 74, 55, 24, -44, 80, 77, 89, 44, 5, -12, -67, -61, 54, -19, -100, -27, -63, 50, -100, -103, 59, -36, 101, 2, 107, -50, 30, -106, -62, -67, 43, -124, -39, 47, -55, -99, -110, 126, -100, 70, -29, -125, -88, 28, -50, -116, -53, -36, -101, 31, -74, 39, 115, 62, -127, 121, -48, -95, 40, 37, -76, -53, 44, -21, -73, 90, -18, 108, 50, -112, 87, -110, 35, -22, 127, -122, 93, 58, -9, 125, -6, -126, 88, -18, 101, -68, -96, 98, 39, 76, 42, 65, 13, -35, -41, -56, 39, -29, -113, 57, -70, 70, 114, -41, 4, -79, -54, 62, 42, 79, -57, -48, -11, 11, 88, 115, 32, -16, 54, 97, 38, -9, -120, -84, -75, -67, -123, -14, 50, -5, -6, -55, -31, -56, -12, 7, 52, 124, 91, -61, -51, -123, 83, -89, 45, 51, -92, 4, 37, 7, 86, -128, -94, 67, 16, -124, 46, -49, -77, 75, -102, 112, -50, -64, 3, -48, 9, -3, 70, -55, 123, 112, 14, 18, 39, 51, -73, 44, 106]
decrypt_in_privkey2 = [-68, 118, 0, -111, -20, 70, 75, 105, 118, -125, -56, 90, -55, -41, 99, 53, -68, -68, -17, -12, 25, 97, 115, 56, 87, 1, 82, -100, -84, 25, 56, -22, 65, -89, 35, 19, 93, -40, -69, 13, -78, -60, 44, 124, 100, 56, 71, -96, -88, -31, 125, -115, 25, 84, 100, 116, 13, -4, 50, -66, -82, 3, -90, -34, 72, 84, -22, 36, 54, -24, 117, 6, 12, 2, 31, 41, 112, 35, 63, 22, 41, 94, -108, 68, -74, -103, 58, 107, 12, -95, -13, 116, -122, 14, 72, -88, 125, 76, -72, -59, -13, -56, 78, -117, 30, 22, -46, -90, 63, -11, -116, -16, 1, 115, 2, 11, -59, 59, 37, -116, -111, 54, 31, 32, -71, -56, -68, -112, 123, 108, -95, 61, -43, 82, 76, -126, -74, -116, -55, 6, -109, 35, 122, 53, 22, -9, 8, -35, 23, 34, -57, -6, 117, -45, -20, -101, -12, -25, 47, -64, -108, -57, 96, -14, -121, 99, 69, 66, 83, 58, -49, -24, -108, 47, -96, -101, 127, 68, -70, -115, -87, -124, 57, 81, 99, 62, -27, 69, 115, -63, 120, 48, -120, 60, 89, 32, -5, 87, 85, 101, 33, -65, -25, 75, -63, 88, 87, 116, -127, 11, -1, -54, -77, -65, -25, 22, 64, -111, 70, -59, 64, -101, 56, -10, 89, -86, 71, -84, 59, -104, 11, -69, -116, 11, -28, 67, -69, -54, 68, -107, 80, 8, 80, -83, -14, -81, -65, 116, 125, 106, 100, 90, -128, -89, 114, 87, 71, -112, 91, -90, -72, 72, 2, 53, 75, -117, -62, 55, 101, -85, 70, 112, 4, -11, -95, -74, 70, -123, 53, -25, 36, 95, -77, 75, 81, 17, 34, 53, -22, 82, -125, -125, -16, -82, -23, -128, -65, 60, 11, 61, 12, -85, -80, 20, 6, -84, 12, 51, 34, 78, -32, 92, 124, -72, -95, 112, -55, -110, 26, -84, -115, -111, -107, -99, -55, 122, 106, -2, -38, 25, -50, 107, 74, 113, 1, 59, 16, -95, 65, -117, -16, 96, -95, 89, -72, 88, -27, 118, -26, 105, -115, 47, -85, 18, 1, -15, 56, 124, 88, -90, -45, -117, -124, 127, 32, 52, 119, -73, -57, 71, 0, 53, 73, -59, 40, 115, -47, 100, -73, 55, 85, 4, -44, -105, -78, -123, 98, -111, 102, 57, 75, -92, 89, 126, 70, -75, 58, 100, 94, 124, -124, 76, 3, -63, -85, -78, 6, 59, 100, -4, -98, 37, -111, -126, 15, -16, 16, 0, -109, -112, -49, 122, -75, -99, 41, -118, -25, -32, 21, -13, -36, 122, -12, -20, 120, -43, 114, 85, 98, 98, -126, 71, -14, -90, 78, 21, 12, -107, 118, 45, -60, 50, -61, -10, 108, -125, -7, -116, 1, -88, -38, 115, -47, 11, -80, -36, -26, 107, -11, -44, 90, -4, 32, 4, -100, 82, 39, -71, 80, 110, -54, -104, -77, 39, -128, -60, -58, -77, 90, -119, -8, 69, 41, -13, 121, -27, 113, -60, 105, -101, 9, -123, 68, 31, -49, 3, 26, -75, 96, -84, 47, 49, -80, 30, 38, -50, 79, -56, 120, 47, 106, -114, -83, 101, 112, -82, -26, -52, -91, 35, 6, 35, -72, 14, 98, -95, 53, -34, 38, 67, -125, -37, 119, -115, -127, 75, 62, 48, 60, 102, -111, 70, -111, -43, -60, -89, -6, 7, 38, -87, 6, -114, 23, 39, 4, -71, 77, -101, -95, 116, 83, 83, 109, 69, 117, -58, -127, -7, 4, 107, 38, 9, 77, -55, -99, 65, -75, -51, 98, -61, 86, -114, -48, 45, 19, 82, 42, 0, 44, 97, 50, 107, 78, -8, 36, 3, -32, 113, 0, -44, 118, 118, 17, -68, -127, 47, -106, 72, -4, 43, 26, -88, -6, 6, -118, -20, 48, 109, 19, -118, 123, -122, 100, 72, -29, 76, -50, -128, -104, 58, -37, 58, 98, -8, 69, 95, 117, 65, 126, -53, 21, 17, 24, -83, 46, -100, 89, -79, -120, -88, 64, -87, 38, 64, -29, 16, -53, 116, 59, 6, -69, -76, 79, -37, 13, 57, 65, 50, 109, 70, 48, -36, -8, 85, -9, -40, 103, -112, 57, 53, 119, -23, -119, 12, 69, 47, 54, 88, -103, 86, 58, -86, 74, -12, 36, 72, 75, 105, -59, 107, -77, -96, 81, -57, -29, -39, 47, 111, 123, 23, -21, 42, 119, 0, -19, 57, -15, -42, 51, -43, 33, -89, -52, 68, 86, 98, 74, 64, 54, 10, -51, 16, -69, -61, 22, -92, 85, 78, 1, 104, 9, -36, 90, -11, -121, 4, -22, 32, 44, -60, 41, -81, -3, 64, 98, -96, 81, -93]
decrypt_in_params_k2 = 2
decrypt_out2 = [-81, 19, -57, -32, -26, 101, -58, 25, -66, -7, -119, -126, 125, 4, -31, -123, 54, -77, -34, 29, 73, -114, 119, -7, -122, 36, 9, 32, 23, 55, -69, -75]
assert(decrypt(decrypt_in_pct1, decrypt_in_privkey1, decrypt_in_params_k1) == decrypt_out1)
assert(decrypt(decrypt_in_pct2, decrypt_in_privkey2, decrypt_in_params_k2) == decrypt_out2)