12 #include <browsing/sb_crypt.h>
13 #include <browsing/constants.h>
15 #include <browsing/client.h>
19 std::vector<unsigned char> example_A_request = {
24 0x00, 0x00, 0x00, 0x00,
25 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
26 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
27 0x25, 0x60, 0x50, 0x27, 0x6c, 0x6d, 0x64, 0x55,
30 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x3d, 0x27, 0x56, 0x31, 0x2e, 0x33, 0x31, 0x61, 0x27,
31 0x20, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x3d, 0x30,
32 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x3c,
33 0x3d, 0x32, 0x33, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65,
34 0x72, 0x73, 0x3e, 0x3d, 0x30, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61,
35 0x79, 0x65, 0x72, 0x73, 0x21, 0x3d, 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73,
36 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x72, 0x3c, 0x3d, 0x32, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x78,
37 0x72, 0x3e, 0x3d, 0x32, 0x29, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
38 0x20, 0x26, 0x20, 0x31, 0x29, 0x21, 0x3d, 0x30, 0x00,
42 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79,
43 0x70, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x70,
44 0x6f, 0x72, 0x74, 0x5c, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5c, 0x74, 0x69,
45 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5c, 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d,
46 0x65, 0x5c, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x6d, 0x61, 0x78,
47 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79,
48 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x5c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x5c, 0x63, 0x30,
49 0x5c, 0x63, 0x31, 0x5c, 0x6e, 0x30, 0x5c, 0x6e, 0x31, 0x5c, 0x63, 0x30, 0x63, 0x5c, 0x63, 0x31,
50 0x63, 0x5c, 0x6e, 0x72, 0x5c, 0x78, 0x72, 0x5c, 0x66, 0x66, 0x5c, 0x6d, 0x63, 0x5c, 0x67, 0x63,
51 0x5c, 0x72, 0x63, 0x5c, 0x73, 0x72, 0x5c, 0x6e, 0x69, 0x5c, 0x78, 0x69, 0x5c, 0x71, 0x6d, 0x00,
53 0x00, 0x00, 0x00, 0x80,
54 0x14, 0x00, 0x00, 0x00
57 std::vector<unsigned char> example_A_response = {
60 0xbb, 0x79, 0x76, 0xb5, 0xb9, 0xe1, 0xa6, 0xaf, 0x08, 0x15,
64 0xc7, 0x63, 0x80, 0x6e, 0xd7, 0x70, 0x7a, 0x11, 0xc4, 0x03, 0x1b, 0xa0, 0x70, 0x13, 0x7e, 0x69,
65 0x69, 0x53, 0x33, 0x45, 0x92, 0xee, 0x3e, 0x09, 0xa4,
68 0xe6, 0x35, 0x83, 0xc4, 0x70, 0x40, 0xdf, 0x4f, 0x14, 0x77, 0x52, 0xb3, 0x4c, 0xf8, 0xca, 0xec,
69 0x9f, 0xd7, 0x74, 0xe9, 0x03, 0x49, 0xe8, 0xcb, 0xef, 0xd8, 0xb3, 0x01, 0xfc, 0xe6, 0xe1, 0xd0,
70 0x03, 0xbe, 0x61, 0x43, 0x2a, 0x66, 0xfb, 0x13, 0x3d, 0x67, 0xc5, 0x17, 0xd9, 0x53, 0x52, 0xbf,
71 0xa8, 0x87, 0xe6, 0x20, 0x2d, 0xd1, 0xe9, 0xb8, 0x82, 0x29, 0xac, 0xb1, 0x93, 0x63, 0x10, 0xf2,
72 0xa3, 0x7f, 0x60, 0x61, 0x31, 0xc3, 0x22, 0xa0, 0x7b, 0x88, 0x25, 0xf1, 0xbe, 0xee, 0x5b, 0x44,
73 0x43, 0xab, 0xb9, 0x84, 0x58, 0xb4, 0xf4, 0xf3, 0xf6, 0x61, 0x81, 0x31, 0x04, 0x9c, 0xf5, 0xff,
74 0xe2, 0x79, 0x65, 0x98, 0x6d, 0x1d, 0x4d, 0x00, 0xa8, 0x2d, 0x1d, 0x4f, 0xfd, 0x68, 0x7e, 0x7e,
75 0xb3, 0x0f, 0xda, 0x4c, 0x90, 0xe9, 0x89, 0x64, 0x3d, 0xbe, 0xdf, 0xd3, 0x31, 0x2f, 0x1a, 0x96,
76 0x89, 0xef, 0x00, 0x89, 0x7a, 0xe8, 0x56, 0xa1, 0x5a, 0x95, 0x66, 0xd4, 0x20, 0x0b, 0x20, 0xbc,
77 0xe7, 0xe6, 0xea, 0x55, 0xdd, 0xd3, 0x33, 0x9c, 0x37, 0x82, 0xcb, 0xc1, 0x8d, 0x40, 0xf3, 0x0f,
78 0x33, 0x13, 0x1f, 0xd4, 0x40, 0x65, 0xd1, 0x3f, 0xd1, 0xbb, 0xf6, 0x71, 0x88, 0xfc, 0x9c, 0xa4,
79 0x8b, 0xbe, 0x41, 0xf6, 0x11, 0x0b, 0x09, 0x7f, 0x1d, 0x72, 0x04, 0x05, 0x4b, 0xaf, 0xe8, 0x0b,
80 0x62, 0x7b, 0xce, 0xcf, 0x27, 0xd0, 0xb6, 0x19, 0x4a, 0x25, 0x94, 0x8f, 0x6a, 0x50, 0xa4, 0xec,
81 0x30, 0x19, 0xda, 0x08, 0xc7, 0xa1, 0x90, 0x2e, 0x83, 0x44, 0x16, 0x49, 0x6b, 0x69, 0x6c, 0x63,
82 0x17, 0x59, 0x28, 0xc9, 0xa9, 0x6f, 0xcb, 0xce, 0x22, 0x9f
85 std::vector<unsigned char> example_B_request = {
90 0x00, 0x00, 0x00, 0x00,
91 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
92 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
93 0x3b, 0x6e, 0x32, 0x56, 0x72, 0x4d, 0x2a, 0x30,
96 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x3d, 0x27, 0x56, 0x31, 0x2e, 0x33, 0x31, 0x61, 0x27,
97 0x20, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x3d, 0x30,
98 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x3c,
99 0x3d, 0x32, 0x33, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65,
100 0x72, 0x73, 0x3e, 0x3d, 0x30, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61,
101 0x79, 0x65, 0x72, 0x73, 0x21, 0x3d, 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73,
102 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x72, 0x3c, 0x3d, 0x32, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x78,
103 0x72, 0x3e, 0x3d, 0x32, 0x29, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
104 0x20, 0x26, 0x20, 0x31, 0x29, 0x3d, 0x30, 0x00,
108 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79,
109 0x70, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x70,
110 0x6f, 0x72, 0x74, 0x5c, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5c, 0x74, 0x69,
111 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5c, 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d,
112 0x65, 0x5c, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x6d, 0x61, 0x78,
113 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79,
114 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x5c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x5c, 0x63, 0x30,
115 0x5c, 0x63, 0x31, 0x5c, 0x6e, 0x30, 0x5c, 0x6e, 0x31, 0x5c, 0x63, 0x30, 0x63, 0x5c, 0x63, 0x31,
116 0x63, 0x5c, 0x6e, 0x72, 0x5c, 0x78, 0x72, 0x5c, 0x66, 0x66, 0x5c, 0x6d, 0x63, 0x5c, 0x67, 0x63,
117 0x5c, 0x72, 0x63, 0x5c, 0x73, 0x72, 0x5c, 0x6e, 0x69, 0x5c, 0x78, 0x69, 0x5c, 0x71, 0x6d, 0x00,
119 0x00, 0x00, 0x00, 0x80,
120 0x12, 0x00, 0x00, 0x00
123 std::vector<unsigned char> example_B_response = {
126 0xe2, 0x7f, 0x2f, 0x6e, 0x42, 0x18, 0x35, 0x59, 0x19, 0x1b,
130 0x7b, 0x7a, 0xbd, 0x2d, 0x2e, 0xb3, 0xa5, 0x7e, 0x9f, 0x91, 0x77, 0x74, 0xc0, 0xcd, 0x08, 0xf5,
131 0x86, 0x60, 0xc0, 0xf5, 0x4c, 0xa2, 0x74, 0x7b, 0x10,
134 0x46, 0xb5, 0xa5, 0x93, 0xf3, 0xaa, 0x48, 0xc4, 0x5e, 0xdb, 0x1a, 0x64, 0xf4, 0xee, 0x6f, 0x43,
135 0xa7, 0x44, 0x73, 0x4b, 0x98, 0xa7, 0xe6, 0x96, 0xfb, 0x2f, 0xe4, 0xe2, 0xbd, 0xe6, 0x71, 0xae,
136 0x7b, 0x76, 0xee, 0x99, 0x36, 0xef, 0x3b, 0x62, 0xfd, 0xd6, 0xbb, 0x55, 0x88, 0xb4, 0x43, 0xe1,
137 0xd1, 0x85, 0x30, 0x2d, 0x45, 0xef, 0x08, 0x8f, 0x79, 0x6a, 0x78, 0xaf, 0x37, 0xe4, 0x79, 0x8d,
138 0xa8, 0x1d, 0x1b, 0xa5, 0x5e, 0x9a, 0x03, 0xa2, 0x9a, 0xb3, 0xa2, 0x0d, 0xf8, 0xc9, 0xe3, 0xf1,
139 0xce, 0xb3, 0x1d, 0x93, 0x6d, 0xc9, 0xf3, 0x25, 0x99, 0xb8, 0x77, 0xfb, 0xd4, 0x6b, 0x7b, 0x2c,
140 0x3c, 0xa3, 0xe0, 0x19, 0x8b, 0x6f, 0x2a, 0x79, 0xa7, 0x54, 0xc0, 0x9f, 0xa9, 0x7e, 0xea, 0x90,
141 0xe1, 0xd1, 0x22, 0x5c, 0x8f, 0x8a, 0x87, 0x76, 0x5c, 0x21, 0x01, 0x5c, 0x35, 0x0f, 0x20, 0xe4,
142 0x8b, 0x7f, 0xfc, 0x0f, 0xec, 0x32, 0x5a, 0x2c, 0xbd, 0x61, 0xdd, 0x11, 0xc6, 0x75, 0x21, 0x62,
143 0x89, 0x05, 0x6c, 0x0a, 0xc2, 0xf3, 0xfd, 0xfe, 0x73, 0xea, 0x41, 0x44, 0xb6, 0xb6, 0x1e, 0x2d,
144 0x15, 0x24, 0xf4, 0x64, 0x9c, 0x41, 0x06, 0x3f, 0xa8, 0xf8, 0x49, 0x3f, 0x63, 0x2f, 0xe0, 0x74,
145 0x31, 0xe8, 0x43, 0xa0, 0x23, 0x3d, 0xae, 0x4d, 0x5e, 0x95, 0xcf, 0xcd, 0x83, 0x3d, 0x25, 0xbd,
146 0x22, 0xaf, 0x72, 0x39, 0xc3, 0xea, 0x94, 0x72
149 std::vector<unsigned char> example_C_request = {
154 0x00, 0x00, 0x00, 0x00,
155 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
156 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
157 0x34, 0x68, 0x6b, 0x54, 0x61, 0x5c, 0x2d, 0x6d,
160 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x3d, 0x27, 0x56, 0x31, 0x2e, 0x33, 0x31, 0x61, 0x27,
161 0x20, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x3d, 0x30,
162 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x3c,
163 0x3d, 0x32, 0x33, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65,
164 0x72, 0x73, 0x3e, 0x3d, 0x30, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61,
165 0x79, 0x65, 0x72, 0x73, 0x21, 0x3d, 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73,
166 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x72, 0x3c, 0x3d, 0x32, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x78,
167 0x72, 0x3e, 0x3d, 0x32, 0x29, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
168 0x20, 0x26, 0x20, 0x31, 0x29, 0x21, 0x3d, 0x30, 0x00,
172 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79,
173 0x70, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x70,
174 0x6f, 0x72, 0x74, 0x5c, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5c, 0x74, 0x69,
175 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5c, 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d,
176 0x65, 0x5c, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x6d, 0x61, 0x78,
177 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79,
178 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x5c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x5c, 0x63, 0x30,
179 0x5c, 0x63, 0x31, 0x5c, 0x6e, 0x30, 0x5c, 0x6e, 0x31, 0x5c, 0x63, 0x30, 0x63, 0x5c, 0x63, 0x31,
180 0x63, 0x5c, 0x6e, 0x72, 0x5c, 0x78, 0x72, 0x5c, 0x66, 0x66, 0x5c, 0x6d, 0x63, 0x5c, 0x67, 0x63,
181 0x5c, 0x72, 0x63, 0x5c, 0x73, 0x72, 0x5c, 0x6e, 0x69, 0x5c, 0x78, 0x69, 0x5c, 0x71, 0x6d, 0x00,
183 0x00, 0x00, 0x00, 0x80,
184 0x14, 0x00, 0x00, 0x00
187 std::vector<unsigned char> example_C_response = {
190 0x48, 0x3c, 0xdb, 0xb6, 0x0b, 0x68, 0x4f, 0x45, 0xb1, 0xcd,
194 0x8e, 0x71, 0x43, 0xfa, 0xdb, 0x0c, 0x42, 0xef, 0xaf, 0x68, 0xfb, 0x64, 0x4b, 0x53, 0xac, 0x69,
195 0xbf, 0x74, 0xe8, 0x4d, 0x6f, 0x30, 0x8a, 0x4a, 0xe6,
198 0x92, 0xbd, 0x4c, 0xaf, 0x27, 0x6d, 0x87, 0x87, 0x3a, 0xfa, 0x44, 0x67, 0x16, 0xbc, 0x8e, 0x2e,
199 0xe0, 0x9f, 0xfb, 0x0d, 0xdf, 0x37, 0x5b, 0xe4, 0x8a, 0xc4, 0x06, 0x21, 0x7d, 0x55, 0x73, 0xfe,
200 0x5b, 0x22, 0x23, 0xd9, 0x9e, 0xd2, 0xe3, 0xbd, 0xd9, 0xd2, 0xcd, 0x2c, 0x6b, 0xc6, 0x2a, 0xe0,
201 0x34, 0x7b, 0xfd, 0x6a, 0xed, 0xad, 0xcf, 0xca, 0x88, 0x5e, 0xa3, 0x9e, 0xef, 0xc4, 0x0f, 0x95,
202 0x84, 0xf4, 0xaa, 0xd7, 0x04, 0x03, 0xfd, 0xfd, 0x0e, 0xc9, 0xd3, 0xeb, 0x78, 0x0c, 0x39, 0xc7,
203 0xbb, 0xe8, 0xa3, 0x8a, 0x49, 0x31, 0xb1, 0xe1, 0xde, 0x74, 0x40, 0x48, 0x37, 0x45, 0x1a, 0x4f,
204 0xb3, 0x3a, 0xc8, 0x2c, 0x5d, 0x22, 0xd3, 0x59, 0xb1, 0x40, 0x54, 0x21, 0xdd, 0x20, 0xa4, 0x89,
205 0x26, 0xfc, 0x2c, 0x45, 0x12, 0x7e, 0x0e, 0x67, 0xc9, 0x53, 0xb2, 0x05, 0xa6, 0xbc, 0x74, 0xba,
206 0x63, 0x21, 0x82, 0x49, 0x68, 0xd7, 0x26, 0x39, 0xc3, 0xdc, 0x56, 0xee, 0x36, 0x24, 0xd6, 0x93,
207 0x83, 0xe6, 0x8a, 0x84, 0x53, 0x00, 0x80, 0xb9, 0x5c, 0x19, 0xf4, 0xa6, 0x54, 0xc3, 0xc0, 0xa4,
208 0x1a, 0x0b, 0x03, 0x32, 0xb2, 0x5f, 0x6f, 0x83, 0xef, 0x38, 0xed, 0x5a, 0x39, 0xa2, 0xbe, 0x0d,
209 0x8b, 0xa8, 0x14, 0xaf, 0xaa, 0x8f, 0x3a, 0x37, 0xc5, 0xab, 0x0a, 0x01, 0x8a, 0x67, 0xc2, 0x62,
210 0xac, 0x53, 0x19, 0xd1, 0x51, 0xa2, 0x81, 0x05, 0xc3, 0x6a, 0xde, 0x17, 0xb3, 0x4a, 0x5d, 0xc2,
211 0xb4, 0xe6, 0x91, 0x02, 0x4a, 0x0b, 0x75, 0x70, 0x86, 0xe1, 0xe8, 0x93, 0x3f, 0x7c, 0x5a, 0xc8,
212 0x55, 0xd7, 0x04, 0x7a, 0x7a, 0x46, 0x4f, 0x5d, 0x88, 0x13
215 std::vector<unsigned char> example_D_request = {
220 0x00, 0x00, 0x00, 0x00,
221 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
222 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
223 0x25, 0x70, 0x24, 0x56, 0x7c, 0x29, 0x3e, 0x5d,
226 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x3d, 0x27, 0x56, 0x31, 0x2e, 0x33, 0x31, 0x61, 0x27,
227 0x20, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x3d, 0x30,
228 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x3c,
229 0x3d, 0x32, 0x33, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65,
230 0x72, 0x73, 0x3e, 0x3d, 0x30, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61,
231 0x79, 0x65, 0x72, 0x73, 0x21, 0x3d, 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73,
232 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x72, 0x3c, 0x3d, 0x32, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x78,
233 0x72, 0x3e, 0x3d, 0x32, 0x29, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
234 0x20, 0x26, 0x20, 0x31, 0x29, 0x3d, 0x30, 0x00,
237 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79,
238 0x70, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x70,
239 0x6f, 0x72, 0x74, 0x5c, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5c, 0x74, 0x69,
240 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5c, 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d,
241 0x65, 0x5c, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x6d, 0x61, 0x78,
242 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79,
243 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x5c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x5c, 0x63, 0x30,
244 0x5c, 0x63, 0x31, 0x5c, 0x6e, 0x30, 0x5c, 0x6e, 0x31, 0x5c, 0x63, 0x30, 0x63, 0x5c, 0x63, 0x31,
245 0x63, 0x5c, 0x6e, 0x72, 0x5c, 0x78, 0x72, 0x5c, 0x66, 0x66, 0x5c, 0x6d, 0x63, 0x5c, 0x67, 0x63,
246 0x5c, 0x72, 0x63, 0x5c, 0x73, 0x72, 0x5c, 0x6e, 0x69, 0x5c, 0x78, 0x69, 0x5c, 0x71, 0x6d, 0x00,
248 0x00, 0x00, 0x00, 0x80,
249 0x12, 0x00, 0x00, 0x00
252 std::vector<unsigned char> example_D_response = {
255 0x48, 0x3c, 0xdb, 0xb6, 0x0b, 0x68, 0x4f, 0x45, 0xb1, 0xcd,
259 0x8e, 0x71, 0x43, 0xfa, 0xdb, 0x0c, 0x42, 0xef, 0xaf, 0x68, 0xfb, 0x64, 0x4b, 0x53, 0xac, 0x69,
260 0xbf, 0x74, 0xe8, 0x4d, 0x6f, 0x30, 0x8a, 0x4a, 0xe6,
263 0xa6, 0x4e, 0x0e, 0xe7, 0xbc, 0xdf, 0xa6, 0xc1, 0x47, 0x28, 0x28, 0x44, 0xeb, 0x9e, 0xac, 0x94,
264 0x71, 0x36, 0xcf, 0xed, 0x49, 0x98, 0x2d, 0xa9, 0x44, 0xbf, 0xe6, 0xc2, 0x6d, 0xa9, 0x15, 0x00,
265 0x83, 0xa6, 0x30, 0xe6, 0x63, 0x9a, 0xcb, 0x85, 0x91, 0xad, 0xfe, 0x22, 0x1b, 0xac, 0x27, 0xe4,
266 0xee, 0x4a, 0xe6, 0x31, 0x03, 0x18, 0x30, 0x31, 0x2b, 0xb5, 0xca, 0x60, 0xd7, 0xc6, 0x64, 0x25,
267 0x0c, 0x20, 0x08, 0x47, 0x95, 0x50, 0x98, 0xb5, 0xd3, 0xa8, 0x6c, 0x4d, 0x1e, 0x27, 0x43, 0xc0,
268 0x8e, 0xf3, 0x9d, 0xfd, 0x83, 0xb6, 0x4d, 0x4c, 0x6b, 0x39, 0x72, 0x0d, 0x1a, 0x97, 0x55, 0x4c,
269 0x7f, 0xe5, 0xf4, 0x32, 0x82, 0xd4, 0x29, 0xe1, 0x29, 0x4a, 0x4a, 0x68, 0x28, 0x62, 0xe6, 0xbe,
270 0xed, 0xfa, 0xd2, 0x63, 0xc1, 0x1d, 0x54, 0xaf, 0xcc, 0x68, 0x11, 0x1e, 0x3e, 0xda, 0xb3, 0x65,
271 0x9f, 0x1a, 0x61, 0x99, 0xcd, 0x3d, 0x2f, 0x47, 0xaf, 0xdb, 0x52, 0xb4, 0xa2, 0x62, 0xd5, 0xee,
272 0x5b, 0xb1, 0x32, 0xd9, 0xea, 0x82, 0xac, 0x43, 0xab, 0x5c, 0x77, 0xd9, 0xab, 0x4b, 0xf0, 0x07,
273 0x58, 0x6f, 0x9d, 0xf3, 0x64, 0xd2, 0x37, 0x8d, 0x2e, 0x72, 0x45, 0x84, 0x89, 0x18, 0x98, 0x9c,
274 0x13, 0x7e, 0x1a, 0x89, 0x29, 0x6b, 0x5b, 0x0b, 0x08, 0x0b, 0x7f, 0x11, 0x41, 0x50, 0x1e, 0x55,
275 0x6e, 0xa9, 0x13, 0x99, 0x88, 0xcc, 0xf0, 0x76
278 std::vector<unsigned char> example_C_decrypt_data = {
280 0x56, 0x57, 0x8b, 0xeb,
285 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00,
286 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00,
287 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x00, 0x00,
288 0x68, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00,
289 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00, 0x00,
290 0x74, 0x69, 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x00, 0x00,
291 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00,
292 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00,
293 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00,
294 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x00, 0x00,
295 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x00, 0x00,
296 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x00, 0x00,
297 0x63, 0x30, 0x00, 0x00,
298 0x63, 0x31, 0x00, 0x00,
299 0x6e, 0x30, 0x00, 0x00,
300 0x6e, 0x31, 0x00, 0x00,
301 0x63, 0x30, 0x63, 0x00, 0x00,
302 0x63, 0x31, 0x63, 0x00, 0x00,
303 0x6e, 0x72, 0x00, 0x00,
304 0x78, 0x72, 0x00, 0x00,
305 0x66, 0x66, 0x00, 0x00,
306 0x6d, 0x63, 0x00, 0x00,
307 0x67, 0x63, 0x00, 0x00,
308 0x72, 0x63, 0x00, 0x00,
309 0x73, 0x72, 0x00, 0x00,
310 0x6e, 0x69, 0x00, 0x00,
311 0x78, 0x69, 0x00, 0x00,
312 0x71, 0x6d, 0x00, 0x00,
317 0xa8, 0x77, 0xbd, 0x95,
319 0xa8, 0x77, 0xbd, 0x95,
321 0xa8, 0x77, 0xbd, 0x95,
326 0x4e, 0x2f, 0xb8, 0x17,
328 0x4e, 0x2f, 0xb8, 0x17,
330 0x4e, 0x2f, 0xb8, 0x17,
336 0xff, 0xff, 0xff, 0xff
339 std::vector<unsigned char> example_D_decrypt_data = {
341 0x56, 0x57, 0x8b, 0xeb,
346 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00,
347 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00,
348 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x00, 0x00,
349 0x68, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00,
350 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00, 0x00,
351 0x74, 0x69, 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x00, 0x00,
352 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00,
353 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00,
354 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00,
355 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x00, 0x00,
356 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x00, 0x00,
357 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x00, 0x00,
358 0x63, 0x30, 0x00, 0x00,
359 0x63, 0x31, 0x00, 0x00,
360 0x6e, 0x30, 0x00, 0x00,
361 0x6e, 0x31, 0x00, 0x00,
362 0x63, 0x30, 0x63, 0x00, 0x00,
363 0x63, 0x31, 0x63, 0x00, 0x00,
364 0x6e, 0x72, 0x00, 0x00,
365 0x78, 0x72, 0x00, 0x00,
366 0x66, 0x66, 0x00, 0x00,
367 0x6d, 0x63, 0x00, 0x00,
368 0x67, 0x63, 0x00, 0x00,
369 0x72, 0x63, 0x00, 0x00,
370 0x73, 0x72, 0x00, 0x00,
371 0x6e, 0x69, 0x00, 0x00,
372 0x78, 0x69, 0x00, 0x00,
373 0x71, 0x6d, 0x00, 0x00,
379 0xff, 0xff, 0xff, 0xff
382 std::vector<unsigned char> example_E_1_request = {
387 0x00, 0x00, 0x00, 0x00,
388 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
389 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
390 0x66, 0x59, 0x35, 0x70, 0x68, 0x39, 0x33, 0x3a,
393 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
396 std::vector<unsigned char> example_E_1_response = {
399 std::vector<unsigned char> example_E_2_request = {
403 0x4e, 0x2f, 0xb8, 0x17,
407 std::vector<unsigned char> example_E_2_response = {
410 0xff, 0x1c, 0xf3, 0x4c, 0x8d, 0xc4, 0x5a, 0x52, 0x2b, 0x58,
414 0x28, 0x00, 0x41, 0xbd, 0x53, 0xd3, 0x37, 0x96, 0x63, 0xf3, 0xd3, 0x0c, 0xe6, 0x16, 0xa6, 0x39,
415 0x0b, 0x2e, 0x27, 0x1d, 0xd8, 0x26, 0x39, 0xcb, 0x72,
418 0x34, 0x13, 0xba, 0x57, 0xd7, 0xf2,
421 0x43, 0x1b, 0xcd, 0xae, 0xe3, 0x3d, 0xfa, 0x71, 0x63, 0xb0, 0x00, 0xda, 0x5c, 0xb5, 0x4b, 0x92,
422 0xeb, 0x79, 0x44, 0x21, 0xd0, 0x41, 0x28, 0x78, 0x8c, 0x06, 0x5c, 0x95, 0x38, 0xa2, 0x7a, 0x8d,
423 0x91, 0xbb, 0x2c, 0xdb, 0x47, 0x62, 0x03, 0x43, 0x82, 0xf5, 0xe1, 0x38, 0xb3, 0xe5, 0xcd, 0xdb,
424 0x0f, 0xe2, 0x52, 0x5c, 0xd9, 0x84, 0xce, 0xc1, 0x60, 0x5e, 0x96, 0x4a, 0x1a, 0x54, 0xc1, 0xed,
425 0xfd, 0x8e, 0x5b, 0xce, 0x73, 0xdd, 0xe1, 0x46, 0xc4, 0x72, 0x0c, 0xd1, 0xd3, 0x7d, 0xb1, 0x7c,
426 0x1a, 0x1c, 0x5c, 0x90, 0x5a, 0x03, 0x8c, 0x26, 0x2f, 0xb7, 0x4a, 0x3e, 0x39, 0x65, 0xa6, 0x62,
427 0x07, 0x58, 0x02, 0x46, 0x26, 0x03, 0x75, 0x74, 0xc0, 0x74, 0x0b, 0xde, 0x82, 0x84, 0x3c, 0x61,
428 0x05, 0x75, 0x9b, 0x70, 0x8d, 0xf6, 0x53, 0x47, 0x53, 0x05, 0x23, 0x1d, 0xa0, 0x2d, 0x8e, 0xf9,
429 0xf3, 0x33, 0x5d, 0x44, 0xbd, 0xaa, 0x8c, 0xcc, 0xbb, 0x74, 0xa7, 0x5c, 0x53, 0x66, 0xfc, 0x8e,
430 0x72, 0x19, 0xef, 0x1e, 0xb4, 0x44, 0x35, 0xe6, 0x98, 0x5a, 0xac, 0xb8, 0xdb, 0x97, 0xeb, 0xd1,
431 0x8d, 0x64, 0xcd, 0x79, 0x07, 0x41, 0x9a, 0x40, 0x7e, 0xb0, 0x3b, 0xdd, 0xb8, 0x0d, 0xcc, 0xe0,
432 0xda, 0xc0, 0xc9, 0x7a, 0xea, 0x5c, 0xc9, 0x11, 0xb5, 0xad, 0xb9, 0x80, 0x75, 0xd9, 0x98, 0xf9,
433 0x73, 0x40, 0xcc, 0xcc, 0xe0, 0x77, 0xf1, 0xc3, 0xbc, 0x9b, 0xa1, 0x9d, 0x95, 0x21, 0x6c, 0x83,
434 0x39, 0x97, 0x37, 0x7d, 0x87, 0x33, 0xab, 0x72, 0xf6, 0x7a, 0x70, 0xff, 0x5d, 0xbf, 0xae, 0xd2,
435 0x71, 0x2c, 0x01, 0x4e, 0x76, 0x3b, 0x32, 0x64, 0x80, 0x40, 0xd4, 0x4a, 0xd7, 0x53, 0x2b, 0x81,
436 0x14, 0xf5, 0xdf, 0xd0, 0x77, 0x51, 0x71, 0xd3, 0x35, 0x4a, 0x0a, 0xa1, 0x00, 0xcf, 0xec, 0x59,
437 0x4e, 0x08, 0xda, 0x86, 0xdd, 0x0d, 0xc8, 0x8a, 0xd6, 0x4a, 0xf6, 0x49, 0xe3, 0xba, 0xbb, 0xac,
438 0x1e, 0xd4, 0x48, 0xa4, 0xa5, 0xfb, 0x39, 0x95, 0x37, 0x49, 0x1c, 0x55, 0xa5, 0x87, 0x97, 0x74,
439 0x1b, 0x63, 0xc4, 0x6c, 0x31, 0xe0, 0xb3, 0x55, 0x4a, 0x85, 0xd2, 0x91, 0x4d, 0x77, 0xc4, 0x25,
440 0xd1, 0x6c, 0xd2, 0xc7, 0xcf, 0x1c, 0x39, 0x0d, 0xa6, 0x93, 0x9c, 0x71, 0x95, 0xe1, 0x9f, 0x58,
441 0x4a, 0x6a, 0x06, 0x0f, 0xbe, 0x2b, 0x6c, 0x0b, 0x39, 0x03, 0xca, 0xac, 0x95, 0xb7, 0x3a, 0xc6,
442 0xaa, 0x88, 0xa0, 0x6d, 0x22, 0xd6, 0x24, 0x39, 0xef, 0x8a, 0x54, 0x3b, 0x86, 0xe0, 0xc7, 0x5f,
443 0x46, 0xfe, 0x74, 0x02, 0x10, 0x3a, 0x07, 0x90, 0x41, 0x0b, 0xa0, 0x28, 0xea, 0x52, 0xdb, 0x12,
444 0xee, 0xed, 0xe1, 0xf3, 0x1c, 0x88, 0x56, 0x54, 0xa2, 0x1a, 0xf4, 0x58, 0xd0, 0xee, 0xb5, 0x79,
445 0x5d, 0x62, 0x91, 0x03, 0xfd, 0xd4, 0xc4, 0xe6, 0x51, 0x2b, 0x61, 0x9a, 0xd4, 0xe8, 0x0f, 0x5a,
446 0xaf, 0x38, 0x7a, 0x0c, 0xfa, 0x73, 0x8e, 0xb6, 0xe2, 0xa6, 0x55, 0xd0, 0x4e, 0xbb, 0x84, 0x8b,
447 0x7c, 0xc7, 0xc8, 0x9f, 0x47, 0xe7, 0x51, 0xe3, 0xfe, 0x87, 0x4c, 0x06, 0x3c, 0xfc, 0x07, 0x8d,
448 0x3d, 0x5d, 0xc2, 0x54, 0xe8, 0xba, 0x76, 0x54, 0x2d, 0x7f, 0x11, 0x2f, 0x27, 0x05, 0x79, 0x4a,
449 0xf7, 0x3c, 0xdc, 0xcf, 0x09, 0x31, 0x6b, 0xb1, 0x66, 0x2d, 0x46, 0x99, 0x25, 0x52, 0xbe, 0x4e,
450 0x60, 0x57, 0xb5, 0x19, 0xf1, 0x3d, 0x37, 0xb5, 0x29, 0x18, 0x7e, 0x0b, 0x9c, 0x14, 0x26, 0x91,
451 0xa9, 0x98, 0xea, 0x75, 0xe5, 0x8a, 0x91, 0x73, 0xf0, 0xe4, 0x85, 0xc4, 0xaa, 0x4a, 0xec, 0x43,
452 0xaf, 0x8b, 0x95, 0xfe, 0xe0, 0xdd, 0xfd, 0xf4, 0x2f, 0x8c, 0x8d, 0x5b, 0x26, 0x0c, 0x6d, 0x30,
453 0x04, 0xcf, 0x89, 0x30, 0x69, 0x70, 0xbf, 0xbc, 0x62, 0x2f, 0x52, 0xe3, 0x23, 0x04, 0x11, 0x22,
454 0xbe, 0x6f, 0xda, 0x91, 0xdb, 0x72, 0x6b, 0x21, 0x63, 0x0d, 0x43, 0x1f, 0x2b, 0xbf, 0xba, 0xd7,
455 0x65, 0xbb, 0x05, 0x59, 0x80, 0xe6, 0xc4, 0xda, 0x64, 0x44, 0x86, 0x90, 0x49, 0xd4, 0x4b, 0x74,
456 0x5f, 0x1a, 0x31, 0xb4, 0x62, 0x88, 0x93, 0x0c, 0x01, 0x25, 0x03, 0x2a, 0x7b, 0x42, 0xba, 0x7d,
457 0x7e, 0xfb, 0x0b, 0x3b, 0x5d, 0x25, 0x04, 0x14, 0x4c, 0x6b, 0x68, 0xee, 0x52, 0x05, 0x9b, 0xe8,
458 0x3c, 0xc6, 0xa2, 0x48, 0x14, 0x89, 0xe9, 0x1e, 0xc3, 0x64, 0xe4, 0x0a, 0xc7, 0x64, 0xb4, 0xb9,
459 0x3e, 0xcd, 0x37, 0xb1, 0x25, 0xae, 0x51, 0x13, 0x6a, 0xd1, 0xf4, 0xb1, 0x48, 0x9f, 0x67, 0x60,
460 0x3f, 0x06, 0x19, 0x7f, 0x23, 0x68, 0x29, 0x94, 0x0f, 0x1c, 0x4b, 0x2f, 0x30, 0xb5, 0x7f, 0x2c,
461 0x2f, 0x3d, 0x0f, 0xa1, 0xc6, 0x78, 0xab, 0xae, 0xa1, 0xfa, 0xff, 0xd3, 0x1f, 0x96, 0xd9, 0x17,
462 0x00, 0x9f, 0xdc, 0xa6, 0xd1, 0x1e, 0x0f, 0xee, 0xbe, 0xab, 0xa5, 0xd4, 0xf0, 0x4d, 0xb8, 0xd6,
463 0x88, 0x32, 0x7f, 0xc5, 0x44, 0x3e, 0x6c, 0x31, 0xfa, 0xb2, 0x4a, 0xc7, 0x9c, 0xc0, 0x0e, 0x10,
464 0xdb, 0xaf, 0x72, 0x1f, 0x82, 0x6b, 0xbf, 0xdd, 0xd0, 0xdd, 0x43, 0x88, 0xc0, 0x47, 0xae, 0xfe,
465 0x12, 0x19, 0x45, 0x80, 0x68, 0x24, 0x13, 0xf6, 0xc9, 0x8c, 0xd7, 0x51, 0xf9, 0x60, 0x46, 0xcd,
466 0xb5, 0x95, 0xb5, 0x75, 0xa1, 0xba, 0xfa, 0xe1, 0x64, 0xc8, 0x42, 0x58, 0x7a, 0x19, 0xfa, 0x9d,
467 0x01, 0x57, 0xbc, 0xfa, 0xa3, 0x64, 0x89, 0xad, 0xbd, 0x4e, 0xba, 0x03, 0x08, 0xb4, 0xe5, 0x8f,
468 0xec, 0x61, 0x5a, 0x69, 0x71, 0xab, 0xa9, 0x49, 0x8b, 0xb8, 0x32, 0xae, 0xcb, 0x23, 0x8c, 0xd8,
469 0xff, 0xfe, 0xc7, 0xf9, 0xe1, 0x7e, 0x96, 0x72, 0x02, 0x44, 0x76, 0x60, 0x26, 0xa3, 0xf5, 0xe9,
470 0x79, 0x8f, 0xd0, 0xaf, 0xf3, 0x7a, 0xca, 0x2a, 0x28, 0xef, 0xe8, 0xe3, 0x77, 0xe0, 0xaf, 0x8e,
471 0x97, 0x34, 0x17, 0x00, 0xbf, 0x20, 0xcb, 0xa5, 0xff, 0x4a, 0xb0, 0x8d, 0xbd, 0xa5, 0x7c, 0x10,
472 0xde, 0xf0, 0x42, 0x64, 0x55, 0x1b, 0x62, 0x47, 0xce, 0x58, 0xf0, 0x8c, 0xcc, 0x44, 0x9c, 0xbb,
473 0x84, 0xfb, 0xe6, 0x2d, 0x20, 0x2f, 0xb2, 0xbd, 0xd0, 0x52, 0x57, 0xfa, 0x93, 0x2a, 0xd5, 0xd6,
474 0x15, 0x4b, 0xee, 0x1a, 0x82, 0x7f, 0xb4, 0x84, 0x89, 0x86, 0x2e, 0xdb, 0x1a, 0x75, 0x3b, 0x62,
475 0x14, 0xdc, 0x73, 0x9f, 0x16, 0xd2, 0xa0, 0x98, 0x1e, 0xe1, 0xdd, 0xb3, 0xa3, 0x77, 0xb4, 0x1d,
476 0x21, 0x3a, 0xe9, 0x07, 0xcd, 0x36, 0x97, 0xda, 0x9c, 0xde, 0x8c, 0xc7, 0xb6, 0xe3, 0xcd, 0x34,
477 0xcf, 0x6f, 0x1b, 0x3d, 0xca, 0xd8, 0x47, 0x6a, 0x9f, 0x0a, 0xfd, 0x42, 0xf6, 0x25, 0xcd, 0x62,
478 0x54, 0x19, 0x80, 0xb7, 0x39, 0x2b, 0xe1, 0xde, 0xcc, 0x09, 0x23, 0x7f, 0x71, 0xc1, 0x20, 0xa1,
479 0x88, 0x43, 0x6f, 0xb5, 0x50, 0xe3, 0x65, 0x87, 0x71, 0xce, 0xdd, 0x5d, 0x6f, 0xf1, 0x74, 0xb8,
480 0xdc, 0x34, 0xb7, 0x14, 0x12, 0x85, 0x90, 0x22, 0xbc, 0x1a, 0x27, 0x98, 0x17, 0x60, 0x71, 0x8f,
481 0x3f, 0x3e, 0x47, 0x98, 0x09, 0xaa, 0xfd, 0x96, 0xc3, 0xac, 0xda, 0x58, 0xcd, 0x40, 0xd4, 0x29,
482 0x6d, 0x75, 0xf9, 0x93, 0xb7, 0x12, 0x99, 0x5b, 0x6e, 0xee, 0xb9, 0x06, 0x11, 0x57, 0xc4, 0x7e,
483 0x86, 0xda, 0x48, 0x55, 0x6d, 0xa5, 0x0e, 0x4c, 0xe8, 0xdf, 0x14, 0x48, 0xbe, 0xa0, 0xa8, 0xc0,
484 0x56, 0x0f, 0x38, 0x7b, 0x55, 0x99, 0x32, 0xd4, 0x9a, 0xab, 0x8f, 0x1a, 0xcc, 0x1b, 0x0a, 0xfb,
485 0x4b, 0xde, 0x05, 0x5b, 0xb9, 0x1d, 0x1c, 0x11, 0xa7, 0x5f, 0x5d, 0x76, 0xd7, 0x56, 0xe1, 0x71,
486 0x0d, 0x3c, 0xa7, 0x2d, 0xa4, 0xde, 0xa7, 0x11, 0x3f, 0x1c, 0xb7, 0x67, 0x40, 0x64, 0xe5, 0xc5,
487 0x71, 0xec, 0x19, 0xf0, 0xd8, 0x33, 0xca, 0xe5, 0xf9, 0x95, 0x47, 0xaa, 0x10, 0x72, 0x48, 0x9f,
488 0x8d, 0xf2, 0xef, 0x79, 0x09, 0xc5, 0xae, 0x71, 0x5a, 0x4d, 0x53, 0x11, 0x93, 0x0c, 0x74, 0xec,
489 0xd5, 0x08, 0x98, 0x25, 0x97, 0x99, 0x1a, 0xd5, 0x98, 0x5e, 0xe8, 0x23, 0xbe, 0x5d, 0x31, 0xc8,
490 0x6a, 0x2b, 0x77, 0x8c, 0x23, 0xc9, 0x63, 0x9a, 0x99, 0x4f, 0x08, 0xb8, 0xdb, 0x13, 0xd6, 0x89,
491 0xb0, 0xe0, 0x55, 0xa1, 0xa9, 0xb4, 0x0c, 0xa5, 0x3a, 0xcf, 0x78, 0xd0, 0xcb, 0x00, 0xad, 0xcd,
492 0x6c, 0x28, 0x6f, 0xd0, 0xaa, 0x28, 0x42, 0xc7, 0x9e, 0x28, 0x67, 0xf6, 0xbe, 0x51, 0x2a, 0xcf,
493 0x6a, 0x3d, 0x06, 0x88, 0xf8, 0x7b, 0x32, 0x21, 0xe3, 0xeb, 0x34, 0xfe, 0x19, 0x5d, 0xd4, 0xcf,
494 0x5d, 0x55, 0x99, 0x67, 0x0a, 0x59, 0x40, 0x10, 0xfc, 0xd8, 0x47, 0x39, 0xe5, 0x14, 0x37, 0x72,
495 0x82, 0xc1, 0x25, 0xf1, 0x61, 0x56, 0xb2, 0x83, 0xc0, 0xa7, 0x56, 0x90, 0x89, 0x60, 0x42, 0xea,
496 0x77, 0xcc, 0x79, 0xb3, 0x52, 0xca, 0x6c, 0xd2, 0xdb, 0x91, 0x15, 0x6c, 0x50, 0x3a, 0xa9, 0xa7,
497 0x08, 0x54, 0xdc, 0x5e, 0xac, 0xbb, 0x3e, 0x30, 0x4f, 0xf9, 0xe2, 0xac, 0x1e, 0xe7, 0xef, 0xfc,
498 0xa9, 0x90, 0x2d, 0x22, 0x06, 0x4c, 0x98, 0x08, 0x54, 0x12, 0x5a, 0xbc, 0x7c, 0xe7, 0x60, 0x5e,
499 0xdd, 0xae, 0x2d, 0xc9, 0x94, 0x8c, 0xd0, 0x31, 0xbc, 0x5d, 0x77, 0xf3, 0xac, 0x68, 0x7e, 0x16,
500 0xd3, 0xfe, 0x40, 0x62, 0xb9, 0xff, 0x62, 0x3c, 0xcc, 0xbd, 0x0a, 0xfb, 0xb1, 0x26, 0x0a, 0x88,
501 0xc1, 0x2c, 0xfb, 0x5e, 0xc6, 0xfc, 0x96, 0x83, 0xda, 0x37, 0x8c, 0xe4, 0x42, 0xe3, 0xcd, 0xdb,
502 0x2a, 0x2d, 0x27, 0x75, 0x0a, 0x58, 0x6e, 0x5a, 0x12, 0xb9, 0xd9, 0x55, 0xf0, 0xf7, 0xbb, 0x71,
503 0x6c, 0xa6, 0x50, 0xa3, 0xed, 0x39, 0xcf, 0xb1, 0x16, 0x2e, 0x3b, 0x47, 0x4e, 0xb7, 0x7b, 0x5c,
504 0x6b, 0x50, 0x42, 0xf9, 0x3e, 0x2e, 0x8e, 0xe8, 0xa5, 0xa0, 0xb6, 0xe0, 0x4a, 0xc2, 0x6f, 0xcf,
505 0x24, 0x5e, 0xfe, 0x43, 0xbf, 0x15, 0x38, 0x74, 0x6e, 0x23, 0x67, 0xe5, 0xd3, 0x03, 0x07, 0xa1,
506 0xc8, 0x19, 0x65, 0x2c, 0x4b, 0xf5, 0x1f, 0xd2, 0x65, 0xd8, 0x82, 0x05, 0x1a, 0x85, 0x6b, 0x3a,
507 0x7f, 0x3b, 0x23, 0x9e, 0x82, 0x07, 0xb8, 0xac, 0x87, 0x54, 0xf4, 0xc6, 0x45, 0x32, 0x0c, 0xf8,
508 0xe3, 0xe4, 0x1f, 0x86, 0x49, 0xd2, 0x04, 0xdb, 0x2e, 0xc8, 0x27, 0x5e, 0xf2, 0xfa, 0x7d, 0xa3,
509 0x20, 0x0b, 0x40, 0xe6, 0x9b, 0x1c, 0x31, 0xb4, 0x79, 0xf3, 0x5e, 0x61, 0xd6, 0x8c, 0x3f, 0x27,
510 0xd0, 0x0e, 0xcf, 0x6f, 0x9f, 0x76, 0xe0, 0x12, 0x25, 0xe2, 0xac, 0x1a, 0xf5, 0x24, 0x5f, 0x73,
511 0x18, 0x10, 0xe1, 0x25, 0x05, 0xbc, 0xda, 0x2f
514 std::vector<unsigned char> example_E_2_decrypt_data = {
516 0x56, 0x57, 0x8b, 0xeb,
526 0x4e, 0x2f, 0xb8, 0x17,
528 0x4e, 0x2f, 0xb8, 0x17,
530 0x4e, 0x2f, 0xb8, 0x17,
533 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x00,
534 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x3a, 0x31, 0x35,
535 0x30, 0x38, 0x35, 0x33, 0x34, 0x3a, 0x00,
539 0x31, 0x30, 0x30, 0x2e, 0x32, 0x31, 0x36, 0x33, 0x33, 0x35, 0x2e, 0x61, 0x6c, 0x70, 0x68, 0x61,
543 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x00,
551 0x66, 0x72, 0x61, 0x67, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00,
555 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x00,
556 0x6f, 0x70, 0x65, 0x6e, 0x70, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x00,
559 0x67, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x00,
560 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00,
563 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x00,
564 0x63, 0x6f, 0x6e, 0x71, 0x75, 0x65, 0x73, 0x74, 0x00,
567 0x67, 0x61, 0x6d, 0x65, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x00,
568 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x00,
571 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x00,
572 0x56, 0x31, 0x2e, 0x33, 0x31, 0x61, 0x00,
579 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x00,
580 0x5b, 0x43, 0x51, 0x5d, 0x42, 0x46, 0x32, 0x4d, 0x43, 0x2d, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52,
584 0x68, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x00,
585 0x33, 0x36, 0x35, 0x38, 0x00,
588 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x70, 0x30, 0x00,
589 0x37, 0x38, 0x2e, 0x34, 0x37, 0x2e, 0x31, 0x38, 0x34, 0x2e, 0x32, 0x33, 0x00,
592 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x70, 0x6f, 0x72, 0x74, 0x00,
593 0x33, 0x36, 0x35, 0x38, 0x00,
596 0x6d, 0x61, 0x70, 0x00,
597 0x62, 0x61, 0x63, 0x6b, 0x73, 0x74, 0x61, 0x62, 0x00,
600 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x00,
604 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00,
612 0x6e, 0x61, 0x74, 0x6e, 0x65, 0x67, 0x00,
617 0x2d, 0x32, 0x31, 0x34, 0x37, 0x34, 0x38, 0x33, 0x36, 0x34, 0x38, 0x00,
624 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00,
628 0x6e, 0x75, 0x6d, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x00,
632 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x00,
644 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x00,
645 0x36, 0x35, 0x35, 0x33, 0x36, 0x00,
649 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x00,
656 0x73, 0x74, 0x61, 0x74, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x00,
660 0x74, 0x65, 0x61, 0x6d, 0x66, 0x72, 0x61, 0x67, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00,
664 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x00,
668 0x74, 0x69, 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x00,
669 0x31, 0x34, 0x38, 0x00,
672 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00,
673 0x31, 0x32, 0x30, 0x30, 0x00,
677 0x32, 0x31, 0x34, 0x37, 0x34, 0x38, 0x33, 0x36, 0x34, 0x37, 0x00,
684 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x30, 0x00,
688 0x70, 0x69, 0x64, 0x5f, 0x30, 0x00,
689 0x31, 0x30, 0x30, 0x34, 0x36, 0x36, 0x33, 0x31, 0x00,
692 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x30, 0x00,
696 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x30, 0x00,
697 0x41, 0x53, 0x53, 0x41, 0x53, 0x49, 0x4e, 0x4f, 0x5f, 0x42, 0x52, 0x00,
700 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x30, 0x00,
704 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x30, 0x00,
705 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
708 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x30, 0x00,
712 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x31, 0x00,
716 0x70, 0x69, 0x64, 0x5f, 0x31, 0x00,
717 0x31, 0x30, 0x30, 0x34, 0x34, 0x30, 0x32, 0x33, 0x00,
720 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x31, 0x00,
724 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x31, 0x00,
725 0x5f, 0x2d, 0x5e, 0x46, 0x61, 0x4e, 0x74, 0x41, 0x53, 0x6d, 0x41, 0x5e, 0x2d, 0x5f, 0x00,
728 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x31, 0x00,
732 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x31, 0x00,
733 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
736 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x31, 0x00,
740 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x32, 0x00,
744 0x70, 0x69, 0x64, 0x5f, 0x32, 0x00,
745 0x31, 0x30, 0x30, 0x33, 0x37, 0x37, 0x39, 0x36, 0x00,
748 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x32, 0x00,
752 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x32, 0x00,
753 0x72, 0x65, 0x76, 0x61, 0x69, 0x00,
756 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x32, 0x00,
759 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x32, 0x00,
760 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
763 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x32, 0x00,
767 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x33, 0x00,
771 0x70, 0x69, 0x64, 0x5f, 0x33, 0x00,
772 0x31, 0x30, 0x30, 0x34, 0x38, 0x36, 0x37, 0x39, 0x00,
775 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x33, 0x00,
779 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x33, 0x00,
780 0x6b, 0x61, 0x6c, 0x69, 0x6f, 0x6e, 0x00,
783 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x33, 0x00,
787 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x33, 0x00,
788 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
791 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x33, 0x00,
795 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x34, 0x00,
799 0x70, 0x69, 0x64, 0x5f, 0x34, 0x00,
800 0x31, 0x30, 0x30, 0x34, 0x34, 0x35, 0x34, 0x37, 0x00,
803 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x34, 0x00,
807 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x34, 0x00,
808 0x53, 0x57, 0x45, 0x45, 0x50, 0x54, 0x48, 0x45, 0x4c, 0x45, 0x47, 0x00,
811 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x34, 0x00,
815 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x34, 0x00,
816 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
819 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x34, 0x00,
823 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x35, 0x00,
827 0x70, 0x69, 0x64, 0x5f, 0x35, 0x00,
828 0x31, 0x30, 0x30, 0x34, 0x32, 0x32, 0x34, 0x39, 0x00,
831 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x35, 0x00,
835 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x35, 0x00,
836 0x5d, 0x37, 0x72, 0x41, 0x67, 0x6f, 0x4e, 0x5d, 0x2d, 0x5b, 0x61, 0x57, 0x6b, 0x00,
839 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x35, 0x00,
843 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x35, 0x00,
844 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
847 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x35, 0x00,
851 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x36, 0x00,
855 0x70, 0x69, 0x64, 0x5f, 0x36, 0x00,
856 0x31, 0x30, 0x30, 0x33, 0x37, 0x37, 0x38, 0x34, 0x00,
859 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x36, 0x00,
863 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x36, 0x00,
864 0x54, 0x61, 0x62, 0x73, 0x41, 0x6e, 0x44, 0x61, 0x62, 0x73, 0x00,
867 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x36, 0x00,
871 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x36, 0x00,
872 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
875 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x36, 0x00,
879 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x37, 0x00,
883 0x70, 0x69, 0x64, 0x5f, 0x37, 0x00,
884 0x31, 0x30, 0x30, 0x33, 0x36, 0x38, 0x31, 0x39, 0x00,
887 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x37, 0x00,
891 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x37, 0x00,
892 0x49, 0x61, 0x6d, 0x4c, 0x75, 0x70, 0x6f, 0x00,
895 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x37, 0x00,
899 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x37, 0x00,
900 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
903 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x37, 0x00,
907 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x38, 0x00,
911 0x70, 0x69, 0x64, 0x5f, 0x38, 0x00,
912 0x31, 0x30, 0x30, 0x34, 0x38, 0x35, 0x38, 0x39, 0x00,
915 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x38, 0x00,
919 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x38, 0x00,
920 0x4a, 0x65, 0x6f, 0x64, 0x00,
923 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x38, 0x00,
927 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x38, 0x00,
928 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
931 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x38, 0x00,
935 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x39, 0x00,
939 0x70, 0x69, 0x64, 0x5f, 0x39, 0x00,
940 0x31, 0x30, 0x30, 0x33, 0x37, 0x37, 0x38, 0x34, 0x00,
943 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x39, 0x00,
947 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x39, 0x00,
948 0x54, 0x61, 0x62, 0x73, 0x41, 0x6e, 0x44, 0x61, 0x62, 0x73, 0x00,
951 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x39, 0x00,
955 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x39, 0x00,
956 0x72, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00,
959 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x39, 0x00,
963 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x30, 0x00,
964 0x34, 0x34, 0x37, 0x00,
967 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x30, 0x00,
971 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x31, 0x00,
972 0x34, 0x32, 0x36, 0x00,
975 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x31, 0x00,
981 std::vector<unsigned char> example_F_request = {
982 0x01, 0x5e, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00, 0x62, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x34, 0x32, 0x70, 0x73, 0x32, 0x00, 0x3a, 0x60, 0x6d, 0x70, 0x6d, 0x42, 0x47, 0x36, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x3d, 0x27, 0x56, 0x31, 0x2e, 0x33, 0x31, 0x61, 0x27, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x3d, 0x30, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x3c, 0x3d, 0x32, 0x33, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x3e, 0x3d, 0x30, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x21, 0x3d, 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x72, 0x3c, 0x3d, 0x32, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x78, 0x72, 0x3e, 0x3d, 0x32, 0x29, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x20, 0x26, 0x20, 0x31, 0x29, 0x21, 0x3d, 0x30, 0x00, 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x5c, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5c, 0x74, 0x69, 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5c, 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x5c, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x5c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x5c, 0x63, 0x30, 0x5c, 0x63, 0x31, 0x5c, 0x6e, 0x30, 0x5c, 0x6e, 0x31, 0x5c, 0x63, 0x30, 0x63, 0x5c, 0x63, 0x31, 0x63, 0x5c, 0x6e, 0x72, 0x5c, 0x78, 0x72, 0x5c, 0x66, 0x66, 0x5c, 0x6d, 0x63, 0x5c, 0x67, 0x63, 0x5c, 0x72, 0x63, 0x5c, 0x73, 0x72, 0x5c, 0x6e, 0x69, 0x5c, 0x78, 0x69, 0x5c, 0x71, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00
985 std::vector<unsigned char> example_F_response = {
987 0x16, 0x2f, 0xcd, 0x9e, 0x2f, 0x37, 0x03, 0x0c, 0xfe, 0xf5,
990 0xea, 0x48, 0xaa, 0x7a, 0xb9, 0x1f, 0xd4, 0xdd, 0x34, 0xdd, 0xf0, 0x41, 0x57, 0xb1, 0x89, 0x53, 0x43, 0x86, 0x4e, 0x89, 0xa0, 0x65, 0x39, 0x6d, 0x03, 0xdd, 0x61, 0x4d, 0x42, 0x1d, 0x5a, 0xb9, 0xc1, 0x3f, 0x86, 0xb4, 0x41, 0x7f, 0x24, 0xd0, 0x6c, 0x8e, 0xa5, 0xd2, 0xfa, 0x22, 0x3f, 0xdc, 0x75, 0x48, 0x8b, 0x74, 0xb9, 0x42, 0x6a, 0xb2, 0x7a, 0x74, 0x71, 0x70, 0x89, 0xe6, 0xbf, 0x45, 0xea, 0x1b, 0x6c, 0x8e, 0x29, 0x29, 0x7c, 0xfc, 0x0d, 0xfa, 0x1d, 0xf0, 0x89, 0xb9, 0x17, 0x95, 0x55, 0x84, 0xa9, 0x4d, 0x03, 0x72, 0xe4, 0x35, 0xed, 0x21, 0x3a, 0xb5, 0x92, 0x27, 0x8f, 0xdb, 0x19, 0x3d, 0x3c, 0xf8, 0x43, 0x31, 0xfb, 0xad, 0xbb, 0x24, 0x81, 0x97, 0x7d, 0x4a, 0x39, 0x35, 0x66, 0xfe, 0x68, 0xa3, 0x5e, 0x2d, 0xe4, 0xcc, 0xe9, 0xe7, 0xbc, 0xdb, 0x68, 0xd4, 0x36, 0x38, 0x2d, 0x3f, 0x74, 0x9b, 0xbd, 0x98, 0x6a, 0xe5, 0x4a, 0x30, 0xac, 0x15, 0xa3, 0xf7, 0x8a, 0x5d, 0xb0, 0xa5, 0x10, 0xd3, 0x70, 0xdb, 0xe9, 0xf4, 0x15, 0x15, 0xad, 0xfc, 0x92, 0x5f, 0xa7, 0x70, 0x2f, 0x1f, 0xfd, 0x22, 0xa2, 0x6b, 0x07, 0x65, 0xfb, 0x1a, 0x25, 0x4d, 0x2b, 0x6c, 0x3f, 0x51, 0xa6, 0xe2, 0x6f, 0x29, 0xbb, 0x7b, 0xe9, 0x17, 0x25, 0x11, 0x6f, 0x17, 0x9a, 0x27, 0x7d, 0x49, 0x3b, 0x46, 0x1a, 0x17, 0x93, 0xe2, 0x75, 0x0f, 0x81, 0x2d, 0x47, 0xb3, 0x33, 0x22, 0x0d, 0x5b, 0xda, 0xc2, 0xe1, 0x29, 0x6c, 0x21, 0x86, 0x8e, 0xf1, 0x33, 0xf9, 0x09, 0x25, 0xbe, 0x7e, 0xf2, 0x46, 0x9d, 0x8d, 0xd4, 0x44, 0x3d, 0x6b, 0x0f, 0x9a, 0xdd, 0xe3, 0x2d, 0x96, 0x1b, 0x44, 0x85, 0x01, 0x58, 0xa6, 0x46, 0x82, 0xe8, 0xbd, 0x70, 0xff, 0x31, 0x71, 0x09, 0xee, 0x11, 0x31, 0x95, 0x34, 0x3a, 0x69
993 std::vector<unsigned char> example_F_decrypt_data = {
994 0x56, 0x57, 0x8b, 0xeb,
999 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00,
1000 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00,
1001 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x00, 0x00,
1002 0x68, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00,
1003 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00, 0x00,
1004 0x74, 0x69, 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x00, 0x00,
1005 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00,
1006 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00,
1007 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00,
1008 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x00, 0x00,
1009 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x00, 0x00,
1010 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x00, 0x00,
1011 0x63, 0x30, 0x00, 0x00,
1012 0x63, 0x31, 0x00, 0x00,
1013 0x6e, 0x30, 0x00, 0x00,
1014 0x6e, 0x31, 0x00, 0x00,
1015 0x63, 0x30, 0x63, 0x00, 0x00,
1016 0x63, 0x31, 0x63, 0x00, 0x00,
1017 0x6e, 0x72, 0x00, 0x00,
1018 0x78, 0x72, 0x00, 0x00,
1019 0x66, 0x66, 0x00, 0x00,
1020 0x6d, 0x63, 0x00, 0x00,
1021 0x67, 0x63, 0x00, 0x00,
1022 0x72, 0x63, 0x00, 0x00,
1023 0x73, 0x72, 0x00, 0x00,
1024 0x6e, 0x69, 0x00, 0x00,
1025 0x78, 0x69, 0x00, 0x00,
1026 0x71, 0x6d, 0x00, 0x00,
1029 0xa8, 0x77, 0xbd, 0x95,
1031 0xa8, 0x77, 0xbd, 0x95,
1032 0x0e, 0x4a, 0xa8, 0x77,
1037 0x4e, 0x2f, 0xb8, 0x17,
1039 0x4e, 0x2f, 0xb8, 0x17,
1041 0x4e, 0x2f, 0xb8, 0x17,
1045 0xff, 0xff, 0xff, 0xff,
1050 int response_offset = 0;
1051 std::stringstream ss;
1063 std::vector<unsigned char> request = example_F_request;
1064 std::vector<unsigned char> response = example_F_response;
1066 uint32_t cryptlen = CHALLENGE_CRYPT_LEN;
1067 uint8_t cryptchal[CHALLENGE_CRYPT_LEN];
1068 uint32_t servchallen = CHALLENGE_SERVER_LEN;
1069 uint8_t servchal[CHALLENGE_SERVER_LEN];
1070 uint8_t m_challenge[CHALLENGE_CLIENT_LEN];
1075 ss << std::hex << (cryptlen ^ 0xEC);
1076 Logger::debug(ss.str());
1081 for(
int i = 0; i < CHALLENGE_CRYPT_LEN; i++)
1083 cryptchal[i] = response[response_offset + i];
1084 ss << std::hex << std::setfill(
'0') << std::setw(2) << (int)(cryptchal[i]);
1086 response_offset += CHALLENGE_CRYPT_LEN;
1087 Logger::debug(
"cryptchal = " + ss.str());
1093 ss << std::hex << (servchallen ^ 0xEA) << std::endl;
1094 Logger::debug(ss.str());
1099 for(
int i = 0; i < CHALLENGE_SERVER_LEN; i++)
1101 servchal[i] = response[response_offset + i];
1102 ss << std::hex << std::setfill(
'0') << std::setw(2) << (int)(servchal[i]);
1104 response_offset += CHALLENGE_SERVER_LEN;
1105 Logger::debug(
"servchal = " + ss.str());
1112 size_t seckeylen = 6;
1113 const char *seckey =
"HpWx9z";
1117 for(
int i = 0; i < CHALLENGE_CLIENT_LEN; i++)
1119 m_challenge[i] = request[37 + i];
1120 ss << std::hex << std::setfill(
'0') << std::setw(2) << (int)(m_challenge[i]);
1122 Logger::debug(
"m_challenge = " + ss.str());
1125 for (uint32_t i = 0 ; i < servchallen ; i++)
1127 m_challenge[(i * seckey[i % seckeylen]) % CHALLENGE_CLIENT_LEN] ^= (
char)((m_challenge[i % CHALLENGE_CLIENT_LEN] ^ servchal[i]) & 0xFF);
1131 int header_size = 1 + CHALLENGE_CRYPT_LEN + 1 + CHALLENGE_SERVER_LEN;
1134 for(
int i = header_size; i < response.size(); i++)
1136 ss << std::hex << std::setfill(
'0') << std::setw(2) << (int)(response[i]);
1138 Logger::debug(
"encrypted data = " + ss.str());
1141 GOACryptInit(&(m_crypt_state), (
unsigned char *)(&m_challenge), CHALLENGE_CLIENT_LEN);
1144 GOADecrypt(&(m_crypt_state), (&response[header_size]), response.size() - header_size);
1147 for(
int i = header_size; i < response.size(); i++)
1149 ss << std::hex << std::setfill(
'0') << std::setw(2) << (int)(response[i]);
1151 Logger::debug(
"decrypted data = " + ss.str());
1170 std::stringstream ss;
1172 uint8_t crypt_challenge[CHALLENGE_CRYPT_LEN];
1173 uint8_t server_challenge[CHALLENGE_SERVER_LEN];
1174 uint8_t client_challenge[CHALLENGE_CLIENT_LEN];
1175 uint8_t key_challenge[CHALLENGE_CLIENT_LEN];
1177 std::vector<unsigned char> request = example_C_request;
1178 std::vector<unsigned char> response = example_C_response;
1179 std::vector<unsigned char> decrypted_data = example_C_decrypt_data;
1183 for(
int i = 0; i < CHALLENGE_CRYPT_LEN; i++)
1185 crypt_challenge[i] = response[1 + i];
1186 ss << std::hex << std::setfill(
'0') << std::setw(2) << (int)(crypt_challenge[i]);
1188 Logger::debug(
"crypt_challenge = " + ss.str());
1191 for(
int i = 0; i < CHALLENGE_SERVER_LEN; i++)
1193 server_challenge[i] = response[12 + i];
1194 ss << std::hex << std::setfill(
'0') << std::setw(2) << (int)(server_challenge[i]);
1196 Logger::debug(
"server_challenge = " + ss.str());
1200 for(
int i = 0; i < CHALLENGE_CLIENT_LEN; i++)
1202 client_challenge[i] = request[37 + i];
1203 ss << std::hex << std::setfill(
'0') << std::setw(2) << (int)(client_challenge[i]);
1205 Logger::debug(
"client_challenge = " + ss.str());
1210 std::string alphabet =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
1211 std::vector<unsigned char> encryted_data(16, 0x0);
1215 std::string secret_key =
"123456";
1218 for(
int i = 0; i < 6; i++)
1220 secret_key[i] = alphabet[rand() % alphabet.size()];
1224 for(
int i = 0; i < CHALLENGE_CLIENT_LEN; i++)
1226 key_challenge[i] = client_challenge[i];
1230 for (uint32_t i = 0 ; i < CHALLENGE_SERVER_LEN; i++)
1232 key_challenge[(i * secret_key[i % 6]) % CHALLENGE_CLIENT_LEN] ^= (
char)((key_challenge[i % CHALLENGE_CLIENT_LEN] ^ server_challenge[i]) & 0xFF);
1236 for(
int i = 0; i < 8; i++)
1238 encryted_data[i] = response[CHALLENGE_CRYPT_LEN + CHALLENGE_SERVER_LEN + 2 + i];
1242 GOACryptInit(&(m_crypt_state2), (
unsigned char *)(&key_challenge), CHALLENGE_CLIENT_LEN);
1243 GOADecrypt(&(m_crypt_state2), &encryted_data[0], 8);
1245 bool correct =
true;
1246 for(
int i = 0; i < 8 && correct; i++)
1247 if(encryted_data[i] != decrypted_data[i])
1252 Logger::debug(
"Found!! secret_key = " + secret_key);
static void Crack()
Cracking function to find the secret key from a package.
static void Test()
Testing function to encrypt/decrypt a package.