]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgo/go/crypto/rsa/rsa_test.go
libgo: Update to current sources.
[thirdparty/gcc.git] / libgo / go / crypto / rsa / rsa_test.go
CommitLineData
7a938933
ILT
1// Copyright 2009 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package rsa
6
7import (
7a938933
ILT
8 "bytes"
9 "crypto/rand"
10 "crypto/sha1"
9c63abc9 11 "math/big"
7a938933
ILT
12 "testing"
13)
14
15func TestKeyGeneration(t *testing.T) {
f72f4169
ILT
16 size := 1024
17 if testing.Short() {
18 size = 128
19 }
405ca104 20 priv, err := GenerateKey(rand.Reader, size)
7a938933
ILT
21 if err != nil {
22 t.Errorf("failed to generate key")
23 }
405ca104
ILT
24 testKeyBasics(t, priv)
25}
26
27func Test3PrimeKeyGeneration(t *testing.T) {
28 if testing.Short() {
29 return
30 }
31
32 size := 768
9ff56c95
ILT
33 priv, err := GenerateMultiPrimeKey(rand.Reader, 3, size)
34 if err != nil {
35 t.Errorf("failed to generate key")
36 }
37 testKeyBasics(t, priv)
38}
39
40func Test4PrimeKeyGeneration(t *testing.T) {
41 if testing.Short() {
42 return
43 }
44
45 size := 768
46 priv, err := GenerateMultiPrimeKey(rand.Reader, 4, size)
405ca104
ILT
47 if err != nil {
48 t.Errorf("failed to generate key")
49 }
50 testKeyBasics(t, priv)
51}
52
4ccad563
ILT
53func TestGnuTLSKey(t *testing.T) {
54 // This is a key generated by `certtool --generate-privkey --bits 128`.
55 // It's such that de ≢ 1 mod φ(n), but is congruent mod the order of
56 // the group.
57 priv := &PrivateKey{
58 PublicKey: PublicKey{
59 N: fromBase10("290684273230919398108010081414538931343"),
60 E: 65537,
61 },
62 D: fromBase10("31877380284581499213530787347443987241"),
63 Primes: []*big.Int{
64 fromBase10("16775196964030542637"),
65 fromBase10("17328218193455850539"),
66 },
67 }
68 testKeyBasics(t, priv)
69}
70
405ca104
ILT
71func testKeyBasics(t *testing.T, priv *PrivateKey) {
72 if err := priv.Validate(); err != nil {
73 t.Errorf("Validate() failed: %s", err)
74 }
75
7a938933
ILT
76 pub := &priv.PublicKey
77 m := big.NewInt(42)
78 c := encrypt(new(big.Int), pub, m)
9ff56c95 79
7a938933
ILT
80 m2, err := decrypt(nil, priv, c)
81 if err != nil {
82 t.Errorf("error while decrypting: %s", err)
405ca104 83 return
7a938933
ILT
84 }
85 if m.Cmp(m2) != 0 {
405ca104 86 t.Errorf("got:%v, want:%v (%+v)", m2, m, priv)
7a938933
ILT
87 }
88
405ca104 89 m3, err := decrypt(rand.Reader, priv, c)
7a938933
ILT
90 if err != nil {
91 t.Errorf("error while decrypting (blind): %s", err)
92 }
93 if m.Cmp(m3) != 0 {
9ff56c95 94 t.Errorf("(blind) got:%v, want:%v (%#v)", m3, m, priv)
7a938933
ILT
95 }
96}
97
405ca104
ILT
98func fromBase10(base10 string) *big.Int {
99 i := new(big.Int)
100 i.SetString(base10, 10)
101 return i
102}
103
104func BenchmarkRSA2048Decrypt(b *testing.B) {
105 b.StopTimer()
106 priv := &PrivateKey{
107 PublicKey: PublicKey{
108 N: fromBase10("14314132931241006650998084889274020608918049032671858325988396851334124245188214251956198731333464217832226406088020736932173064754214329009979944037640912127943488972644697423190955557435910767690712778463524983667852819010259499695177313115447116110358524558307947613422897787329221478860907963827160223559690523660574329011927531289655711860504630573766609239332569210831325633840174683944553667352219670930408593321661375473885147973879086994006440025257225431977751512374815915392249179976902953721486040787792801849818254465486633791826766873076617116727073077821584676715609985777563958286637185868165868520557"),
109 E: 3,
110 },
111 D: fromBase10("9542755287494004433998723259516013739278699355114572217325597900889416163458809501304132487555642811888150937392013824621448709836142886006653296025093941418628992648429798282127303704957273845127141852309016655778568546006839666463451542076964744073572349705538631742281931858219480985907271975884773482372966847639853897890615456605598071088189838676728836833012254065983259638538107719766738032720239892094196108713378822882383694456030043492571063441943847195939549773271694647657549658603365629458610273821292232646334717612674519997533901052790334279661754176490593041941863932308687197618671528035670452762731"),
9ff56c95
ILT
112 Primes: []*big.Int{
113 fromBase10("130903255182996722426771613606077755295583329135067340152947172868415809027537376306193179624298874215608270802054347609836776473930072411958753044562214537013874103802006369634761074377213995983876788718033850153719421695468704276694983032644416930879093914927146648402139231293035971427838068945045019075433"),
114 fromBase10("109348945610485453577574767652527472924289229538286649661240938988020367005475727988253438647560958573506159449538793540472829815903949343191091817779240101054552748665267574271163617694640513549693841337820602726596756351006149518830932261246698766355347898158548465400674856021497190430791824869615170301029"),
115 },
405ca104 116 }
9ff56c95 117 priv.Precompute()
405ca104
ILT
118
119 c := fromBase10("1000")
120
121 b.StartTimer()
122
123 for i := 0; i < b.N; i++ {
124 decrypt(nil, priv, c)
125 }
126}
127
128func Benchmark3PrimeRSA2048Decrypt(b *testing.B) {
129 b.StopTimer()
130 priv := &PrivateKey{
131 PublicKey: PublicKey{
132 N: fromBase10("16346378922382193400538269749936049106320265317511766357599732575277382844051791096569333808598921852351577762718529818072849191122419410612033592401403764925096136759934497687765453905884149505175426053037420486697072448609022753683683718057795566811401938833367954642951433473337066311978821180526439641496973296037000052546108507805269279414789035461158073156772151892452251106173507240488993608650881929629163465099476849643165682709047462010581308719577053905787496296934240246311806555924593059995202856826239801816771116902778517096212527979497399966526283516447337775509777558018145573127308919204297111496233"),
133 E: 3,
134 },
135 D: fromBase10("10897585948254795600358846499957366070880176878341177571733155050184921896034527397712889205732614568234385175145686545381899460748279607074689061600935843283397424506622998458510302603922766336783617368686090042765718290914099334449154829375179958369993407724946186243249568928237086215759259909861748642124071874879861299389874230489928271621259294894142840428407196932444474088857746123104978617098858619445675532587787023228852383149557470077802718705420275739737958953794088728369933811184572620857678792001136676902250566845618813972833750098806496641114644760255910789397593428910198080271317419213080834885003"),
9ff56c95
ILT
136 Primes: []*big.Int{
137 fromBase10("1025363189502892836833747188838978207017355117492483312747347695538428729137306368764177201532277413433182799108299960196606011786562992097313508180436744488171474690412562218914213688661311117337381958560443"),
138 fromBase10("3467903426626310123395340254094941045497208049900750380025518552334536945536837294961497712862519984786362199788654739924501424784631315081391467293694361474867825728031147665777546570788493758372218019373"),
139 fromBase10("4597024781409332673052708605078359346966325141767460991205742124888960305710298765592730135879076084498363772408626791576005136245060321874472727132746643162385746062759369754202494417496879741537284589047"),
140 },
405ca104 141 }
9ff56c95 142 priv.Precompute()
405ca104
ILT
143
144 c := fromBase10("1000")
145
146 b.StartTimer()
147
148 for i := 0; i < b.N; i++ {
149 decrypt(nil, priv, c)
150 }
151}
152
7a938933
ILT
153type testEncryptOAEPMessage struct {
154 in []byte
155 seed []byte
156 out []byte
157}
158
159type testEncryptOAEPStruct struct {
160 modulus string
161 e int
162 d string
163 msgs []testEncryptOAEPMessage
164}
165
166func TestEncryptOAEP(t *testing.T) {
167 sha1 := sha1.New()
168 n := new(big.Int)
169 for i, test := range testEncryptOAEPData {
170 n.SetString(test.modulus, 16)
171 public := PublicKey{n, test.e}
172
173 for j, message := range test.msgs {
174 randomSource := bytes.NewBuffer(message.seed)
175 out, err := EncryptOAEP(sha1, randomSource, &public, message.in, nil)
176 if err != nil {
177 t.Errorf("#%d,%d error: %s", i, j, err)
178 }
179 if bytes.Compare(out, message.out) != 0 {
5133f00e 180 t.Errorf("#%d,%d bad result: %x (want %x)", i, j, out, message.out)
7a938933
ILT
181 }
182 }
183 }
184}
185
186func TestDecryptOAEP(t *testing.T) {
187 random := rand.Reader
188
189 sha1 := sha1.New()
190 n := new(big.Int)
191 d := new(big.Int)
192 for i, test := range testEncryptOAEPData {
193 n.SetString(test.modulus, 16)
194 d.SetString(test.d, 16)
405ca104
ILT
195 private := new(PrivateKey)
196 private.PublicKey = PublicKey{n, test.e}
197 private.D = d
7a938933
ILT
198
199 for j, message := range test.msgs {
405ca104 200 out, err := DecryptOAEP(sha1, nil, private, message.out, nil)
7a938933
ILT
201 if err != nil {
202 t.Errorf("#%d,%d error: %s", i, j, err)
203 } else if bytes.Compare(out, message.in) != 0 {
204 t.Errorf("#%d,%d bad result: %#v (want %#v)", i, j, out, message.in)
205 }
206
207 // Decrypt with blinding.
405ca104 208 out, err = DecryptOAEP(sha1, random, private, message.out, nil)
7a938933
ILT
209 if err != nil {
210 t.Errorf("#%d,%d (blind) error: %s", i, j, err)
211 } else if bytes.Compare(out, message.in) != 0 {
212 t.Errorf("#%d,%d (blind) bad result: %#v (want %#v)", i, j, out, message.in)
213 }
214 }
f72f4169
ILT
215 if testing.Short() {
216 break
217 }
7a938933
ILT
218 }
219}
220
221// testEncryptOAEPData contains a subset of the vectors from RSA's "Test vectors for RSA-OAEP".
222var testEncryptOAEPData = []testEncryptOAEPStruct{
223 // Key 1
224 {"a8b3b284af8eb50b387034a860f146c4919f318763cd6c5598c8ae4811a1e0abc4c7e0b082d693a5e7fced675cf4668512772c0cbc64a742c6c630f533c8cc72f62ae833c40bf25842e984bb78bdbf97c0107d55bdb662f5c4e0fab9845cb5148ef7392dd3aaff93ae1e6b667bb3d4247616d4f5ba10d4cfd226de88d39f16fb",
225 65537,
226 "53339cfdb79fc8466a655c7316aca85c55fd8f6dd898fdaf119517ef4f52e8fd8e258df93fee180fa0e4ab29693cd83b152a553d4ac4d1812b8b9fa5af0e7f55fe7304df41570926f3311f15c4d65a732c483116ee3d3d2d0af3549ad9bf7cbfb78ad884f84d5beb04724dc7369b31def37d0cf539e9cfcdd3de653729ead5d1",
227 []testEncryptOAEPMessage{
228 // Example 1.1
229 {
230 []byte{0x66, 0x28, 0x19, 0x4e, 0x12, 0x07, 0x3d, 0xb0,
231 0x3b, 0xa9, 0x4c, 0xda, 0x9e, 0xf9, 0x53, 0x23, 0x97,
232 0xd5, 0x0d, 0xba, 0x79, 0xb9, 0x87, 0x00, 0x4a, 0xfe,
233 0xfe, 0x34,
234 },
235 []byte{0x18, 0xb7, 0x76, 0xea, 0x21, 0x06, 0x9d, 0x69,
236 0x77, 0x6a, 0x33, 0xe9, 0x6b, 0xad, 0x48, 0xe1, 0xdd,
237 0xa0, 0xa5, 0xef,
238 },
239 []byte{0x35, 0x4f, 0xe6, 0x7b, 0x4a, 0x12, 0x6d, 0x5d,
240 0x35, 0xfe, 0x36, 0xc7, 0x77, 0x79, 0x1a, 0x3f, 0x7b,
241 0xa1, 0x3d, 0xef, 0x48, 0x4e, 0x2d, 0x39, 0x08, 0xaf,
242 0xf7, 0x22, 0xfa, 0xd4, 0x68, 0xfb, 0x21, 0x69, 0x6d,
243 0xe9, 0x5d, 0x0b, 0xe9, 0x11, 0xc2, 0xd3, 0x17, 0x4f,
244 0x8a, 0xfc, 0xc2, 0x01, 0x03, 0x5f, 0x7b, 0x6d, 0x8e,
245 0x69, 0x40, 0x2d, 0xe5, 0x45, 0x16, 0x18, 0xc2, 0x1a,
246 0x53, 0x5f, 0xa9, 0xd7, 0xbf, 0xc5, 0xb8, 0xdd, 0x9f,
247 0xc2, 0x43, 0xf8, 0xcf, 0x92, 0x7d, 0xb3, 0x13, 0x22,
248 0xd6, 0xe8, 0x81, 0xea, 0xa9, 0x1a, 0x99, 0x61, 0x70,
249 0xe6, 0x57, 0xa0, 0x5a, 0x26, 0x64, 0x26, 0xd9, 0x8c,
250 0x88, 0x00, 0x3f, 0x84, 0x77, 0xc1, 0x22, 0x70, 0x94,
251 0xa0, 0xd9, 0xfa, 0x1e, 0x8c, 0x40, 0x24, 0x30, 0x9c,
252 0xe1, 0xec, 0xcc, 0xb5, 0x21, 0x00, 0x35, 0xd4, 0x7a,
253 0xc7, 0x2e, 0x8a,
254 },
255 },
256 // Example 1.2
257 {
258 []byte{0x75, 0x0c, 0x40, 0x47, 0xf5, 0x47, 0xe8, 0xe4,
259 0x14, 0x11, 0x85, 0x65, 0x23, 0x29, 0x8a, 0xc9, 0xba,
260 0xe2, 0x45, 0xef, 0xaf, 0x13, 0x97, 0xfb, 0xe5, 0x6f,
261 0x9d, 0xd5,
262 },
263 []byte{0x0c, 0xc7, 0x42, 0xce, 0x4a, 0x9b, 0x7f, 0x32,
264 0xf9, 0x51, 0xbc, 0xb2, 0x51, 0xef, 0xd9, 0x25, 0xfe,
265 0x4f, 0xe3, 0x5f,
266 },
267 []byte{0x64, 0x0d, 0xb1, 0xac, 0xc5, 0x8e, 0x05, 0x68,
268 0xfe, 0x54, 0x07, 0xe5, 0xf9, 0xb7, 0x01, 0xdf, 0xf8,
269 0xc3, 0xc9, 0x1e, 0x71, 0x6c, 0x53, 0x6f, 0xc7, 0xfc,
270 0xec, 0x6c, 0xb5, 0xb7, 0x1c, 0x11, 0x65, 0x98, 0x8d,
271 0x4a, 0x27, 0x9e, 0x15, 0x77, 0xd7, 0x30, 0xfc, 0x7a,
272 0x29, 0x93, 0x2e, 0x3f, 0x00, 0xc8, 0x15, 0x15, 0x23,
273 0x6d, 0x8d, 0x8e, 0x31, 0x01, 0x7a, 0x7a, 0x09, 0xdf,
274 0x43, 0x52, 0xd9, 0x04, 0xcd, 0xeb, 0x79, 0xaa, 0x58,
275 0x3a, 0xdc, 0xc3, 0x1e, 0xa6, 0x98, 0xa4, 0xc0, 0x52,
276 0x83, 0xda, 0xba, 0x90, 0x89, 0xbe, 0x54, 0x91, 0xf6,
277 0x7c, 0x1a, 0x4e, 0xe4, 0x8d, 0xc7, 0x4b, 0xbb, 0xe6,
278 0x64, 0x3a, 0xef, 0x84, 0x66, 0x79, 0xb4, 0xcb, 0x39,
279 0x5a, 0x35, 0x2d, 0x5e, 0xd1, 0x15, 0x91, 0x2d, 0xf6,
280 0x96, 0xff, 0xe0, 0x70, 0x29, 0x32, 0x94, 0x6d, 0x71,
281 0x49, 0x2b, 0x44,
282 },
283 },
284 // Example 1.3
285 {
286 []byte{0xd9, 0x4a, 0xe0, 0x83, 0x2e, 0x64, 0x45, 0xce,
287 0x42, 0x33, 0x1c, 0xb0, 0x6d, 0x53, 0x1a, 0x82, 0xb1,
288 0xdb, 0x4b, 0xaa, 0xd3, 0x0f, 0x74, 0x6d, 0xc9, 0x16,
289 0xdf, 0x24, 0xd4, 0xe3, 0xc2, 0x45, 0x1f, 0xff, 0x59,
290 0xa6, 0x42, 0x3e, 0xb0, 0xe1, 0xd0, 0x2d, 0x4f, 0xe6,
291 0x46, 0xcf, 0x69, 0x9d, 0xfd, 0x81, 0x8c, 0x6e, 0x97,
292 0xb0, 0x51,
293 },
294 []byte{0x25, 0x14, 0xdf, 0x46, 0x95, 0x75, 0x5a, 0x67,
295 0xb2, 0x88, 0xea, 0xf4, 0x90, 0x5c, 0x36, 0xee, 0xc6,
296 0x6f, 0xd2, 0xfd,
297 },
298 []byte{0x42, 0x37, 0x36, 0xed, 0x03, 0x5f, 0x60, 0x26,
299 0xaf, 0x27, 0x6c, 0x35, 0xc0, 0xb3, 0x74, 0x1b, 0x36,
300 0x5e, 0x5f, 0x76, 0xca, 0x09, 0x1b, 0x4e, 0x8c, 0x29,
301 0xe2, 0xf0, 0xbe, 0xfe, 0xe6, 0x03, 0x59, 0x5a, 0xa8,
302 0x32, 0x2d, 0x60, 0x2d, 0x2e, 0x62, 0x5e, 0x95, 0xeb,
303 0x81, 0xb2, 0xf1, 0xc9, 0x72, 0x4e, 0x82, 0x2e, 0xca,
304 0x76, 0xdb, 0x86, 0x18, 0xcf, 0x09, 0xc5, 0x34, 0x35,
305 0x03, 0xa4, 0x36, 0x08, 0x35, 0xb5, 0x90, 0x3b, 0xc6,
306 0x37, 0xe3, 0x87, 0x9f, 0xb0, 0x5e, 0x0e, 0xf3, 0x26,
307 0x85, 0xd5, 0xae, 0xc5, 0x06, 0x7c, 0xd7, 0xcc, 0x96,
308 0xfe, 0x4b, 0x26, 0x70, 0xb6, 0xea, 0xc3, 0x06, 0x6b,
309 0x1f, 0xcf, 0x56, 0x86, 0xb6, 0x85, 0x89, 0xaa, 0xfb,
310 0x7d, 0x62, 0x9b, 0x02, 0xd8, 0xf8, 0x62, 0x5c, 0xa3,
311 0x83, 0x36, 0x24, 0xd4, 0x80, 0x0f, 0xb0, 0x81, 0xb1,
312 0xcf, 0x94, 0xeb,
313 },
314 },
315 },
316 },
317 // Key 10
318 {"ae45ed5601cec6b8cc05f803935c674ddbe0d75c4c09fd7951fc6b0caec313a8df39970c518bffba5ed68f3f0d7f22a4029d413f1ae07e4ebe9e4177ce23e7f5404b569e4ee1bdcf3c1fb03ef113802d4f855eb9b5134b5a7c8085adcae6fa2fa1417ec3763be171b0c62b760ede23c12ad92b980884c641f5a8fac26bdad4a03381a22fe1b754885094c82506d4019a535a286afeb271bb9ba592de18dcf600c2aeeae56e02f7cf79fc14cf3bdc7cd84febbbf950ca90304b2219a7aa063aefa2c3c1980e560cd64afe779585b6107657b957857efde6010988ab7de417fc88d8f384c4e6e72c3f943e0c31c0c4a5cc36f879d8a3ac9d7d59860eaada6b83bb",
319 65537,
320 "056b04216fe5f354ac77250a4b6b0c8525a85c59b0bd80c56450a22d5f438e596a333aa875e291dd43f48cb88b9d5fc0d499f9fcd1c397f9afc070cd9e398c8d19e61db7c7410a6b2675dfbf5d345b804d201add502d5ce2dfcb091ce9997bbebe57306f383e4d588103f036f7e85d1934d152a323e4a8db451d6f4a5b1b0f102cc150e02feee2b88dea4ad4c1baccb24d84072d14e1d24a6771f7408ee30564fb86d4393a34bcf0b788501d193303f13a2284b001f0f649eaf79328d4ac5c430ab4414920a9460ed1b7bc40ec653e876d09abc509ae45b525190116a0c26101848298509c1c3bf3a483e7274054e15e97075036e989f60932807b5257751e79",
321 []testEncryptOAEPMessage{
322 // Example 10.1
323 {
324 []byte{0x8b, 0xba, 0x6b, 0xf8, 0x2a, 0x6c, 0x0f, 0x86,
325 0xd5, 0xf1, 0x75, 0x6e, 0x97, 0x95, 0x68, 0x70, 0xb0,
326 0x89, 0x53, 0xb0, 0x6b, 0x4e, 0xb2, 0x05, 0xbc, 0x16,
327 0x94, 0xee,
328 },
329 []byte{0x47, 0xe1, 0xab, 0x71, 0x19, 0xfe, 0xe5, 0x6c,
330 0x95, 0xee, 0x5e, 0xaa, 0xd8, 0x6f, 0x40, 0xd0, 0xaa,
331 0x63, 0xbd, 0x33,
332 },
333 []byte{0x53, 0xea, 0x5d, 0xc0, 0x8c, 0xd2, 0x60, 0xfb,
334 0x3b, 0x85, 0x85, 0x67, 0x28, 0x7f, 0xa9, 0x15, 0x52,
335 0xc3, 0x0b, 0x2f, 0xeb, 0xfb, 0xa2, 0x13, 0xf0, 0xae,
336 0x87, 0x70, 0x2d, 0x06, 0x8d, 0x19, 0xba, 0xb0, 0x7f,
337 0xe5, 0x74, 0x52, 0x3d, 0xfb, 0x42, 0x13, 0x9d, 0x68,
338 0xc3, 0xc5, 0xaf, 0xee, 0xe0, 0xbf, 0xe4, 0xcb, 0x79,
339 0x69, 0xcb, 0xf3, 0x82, 0xb8, 0x04, 0xd6, 0xe6, 0x13,
340 0x96, 0x14, 0x4e, 0x2d, 0x0e, 0x60, 0x74, 0x1f, 0x89,
341 0x93, 0xc3, 0x01, 0x4b, 0x58, 0xb9, 0xb1, 0x95, 0x7a,
342 0x8b, 0xab, 0xcd, 0x23, 0xaf, 0x85, 0x4f, 0x4c, 0x35,
343 0x6f, 0xb1, 0x66, 0x2a, 0xa7, 0x2b, 0xfc, 0xc7, 0xe5,
344 0x86, 0x55, 0x9d, 0xc4, 0x28, 0x0d, 0x16, 0x0c, 0x12,
345 0x67, 0x85, 0xa7, 0x23, 0xeb, 0xee, 0xbe, 0xff, 0x71,
346 0xf1, 0x15, 0x94, 0x44, 0x0a, 0xae, 0xf8, 0x7d, 0x10,
347 0x79, 0x3a, 0x87, 0x74, 0xa2, 0x39, 0xd4, 0xa0, 0x4c,
348 0x87, 0xfe, 0x14, 0x67, 0xb9, 0xda, 0xf8, 0x52, 0x08,
349 0xec, 0x6c, 0x72, 0x55, 0x79, 0x4a, 0x96, 0xcc, 0x29,
350 0x14, 0x2f, 0x9a, 0x8b, 0xd4, 0x18, 0xe3, 0xc1, 0xfd,
351 0x67, 0x34, 0x4b, 0x0c, 0xd0, 0x82, 0x9d, 0xf3, 0xb2,
352 0xbe, 0xc6, 0x02, 0x53, 0x19, 0x62, 0x93, 0xc6, 0xb3,
353 0x4d, 0x3f, 0x75, 0xd3, 0x2f, 0x21, 0x3d, 0xd4, 0x5c,
354 0x62, 0x73, 0xd5, 0x05, 0xad, 0xf4, 0xcc, 0xed, 0x10,
355 0x57, 0xcb, 0x75, 0x8f, 0xc2, 0x6a, 0xee, 0xfa, 0x44,
356 0x12, 0x55, 0xed, 0x4e, 0x64, 0xc1, 0x99, 0xee, 0x07,
357 0x5e, 0x7f, 0x16, 0x64, 0x61, 0x82, 0xfd, 0xb4, 0x64,
358 0x73, 0x9b, 0x68, 0xab, 0x5d, 0xaf, 0xf0, 0xe6, 0x3e,
359 0x95, 0x52, 0x01, 0x68, 0x24, 0xf0, 0x54, 0xbf, 0x4d,
360 0x3c, 0x8c, 0x90, 0xa9, 0x7b, 0xb6, 0xb6, 0x55, 0x32,
361 0x84, 0xeb, 0x42, 0x9f, 0xcc,
362 },
363 },
364 },
365 },
366}