46 const uint64_t Tiger::sbox1[256] =
48 UINT64_C(0x02aab17cf7e90c5e) , UINT64_C(0xac424b03e243a8ec) ,
49 UINT64_C(0x72cd5be30dd5fcd3) , UINT64_C(0x6d019b93f6f97f3a) ,
50 UINT64_C(0xcd9978ffd21f9193) , UINT64_C(0x7573a1c9708029e2) ,
51 UINT64_C(0xb164326b922a83c3) , UINT64_C(0x46883eee04915870) ,
52 UINT64_C(0xeaace3057103ece6) , UINT64_C(0xc54169b808a3535c) ,
53 UINT64_C(0x4ce754918ddec47c) , UINT64_C(0x0aa2f4dfdc0df40c) ,
54 UINT64_C(0x10b76f18a74dbefa) , UINT64_C(0xc6ccb6235ad1ab6a) ,
55 UINT64_C(0x13726121572fe2ff) , UINT64_C(0x1a488c6f199d921e) ,
56 UINT64_C(0x4bc9f9f4da0007ca) , UINT64_C(0x26f5e6f6e85241c7) ,
57 UINT64_C(0x859079dbea5947b6) , UINT64_C(0x4f1885c5c99e8c92) ,
58 UINT64_C(0xd78e761ea96f864b) , UINT64_C(0x8e36428c52b5c17d) ,
59 UINT64_C(0x69cf6827373063c1) , UINT64_C(0xb607c93d9bb4c56e) ,
60 UINT64_C(0x7d820e760e76b5ea) , UINT64_C(0x645c9cc6f07fdc42) ,
61 UINT64_C(0xbf38a078243342e0) , UINT64_C(0x5f6b343c9d2e7d04) ,
62 UINT64_C(0xf2c28aeb600b0ec6) , UINT64_C(0x6c0ed85f7254bcac) ,
63 UINT64_C(0x71592281a4db4fe5) , UINT64_C(0x1967fa69ce0fed9f) ,
64 UINT64_C(0xfd5293f8b96545db) , UINT64_C(0xc879e9d7f2a7600b) ,
65 UINT64_C(0x860248920193194e) , UINT64_C(0xa4f9533b2d9cc0b3) ,
66 UINT64_C(0x9053836c15957613) , UINT64_C(0xdb6dcf8afc357bf1) ,
67 UINT64_C(0x18beea7a7a370f57) , UINT64_C(0x037117ca50b99066) ,
68 UINT64_C(0x6ab30a9774424a35) , UINT64_C(0xf4e92f02e325249b) ,
69 UINT64_C(0x7739db07061ccae1) , UINT64_C(0xd8f3b49ceca42a05) ,
70 UINT64_C(0xbd56be3f51382f73) , UINT64_C(0x45faed5843b0bb28) ,
71 UINT64_C(0x1c813d5c11bf1f83) , UINT64_C(0x8af0e4b6d75fa169) ,
72 UINT64_C(0x33ee18a487ad9999) , UINT64_C(0x3c26e8eab1c94410) ,
73 UINT64_C(0xb510102bc0a822f9) , UINT64_C(0x141eef310ce6123b) ,
74 UINT64_C(0xfc65b90059ddb154) , UINT64_C(0xe0158640c5e0e607) ,
75 UINT64_C(0x884e079826c3a3cf) , UINT64_C(0x930d0d9523c535fd) ,
76 UINT64_C(0x35638d754e9a2b00) , UINT64_C(0x4085fccf40469dd5) ,
77 UINT64_C(0xc4b17ad28be23a4c) , UINT64_C(0xcab2f0fc6a3e6a2e) ,
78 UINT64_C(0x2860971a6b943fcd) , UINT64_C(0x3dde6ee212e30446) ,
79 UINT64_C(0x6222f32ae01765ae) , UINT64_C(0x5d550bb5478308fe) ,
80 UINT64_C(0xa9efa98da0eda22a) , UINT64_C(0xc351a71686c40da7) ,
81 UINT64_C(0x1105586d9c867c84) , UINT64_C(0xdcffee85fda22853) ,
82 UINT64_C(0xccfbd0262c5eef76) , UINT64_C(0xbaf294cb8990d201) ,
83 UINT64_C(0xe69464f52afad975) , UINT64_C(0x94b013afdf133e14) ,
84 UINT64_C(0x06a7d1a32823c958) , UINT64_C(0x6f95fe5130f61119) ,
85 UINT64_C(0xd92ab34e462c06c0) , UINT64_C(0xed7bde33887c71d2) ,
86 UINT64_C(0x79746d6e6518393e) , UINT64_C(0x5ba419385d713329) ,
87 UINT64_C(0x7c1ba6b948a97564) , UINT64_C(0x31987c197bfdac67) ,
88 UINT64_C(0xde6c23c44b053d02) , UINT64_C(0x581c49fed002d64d) ,
89 UINT64_C(0xdd474d6338261571) , UINT64_C(0xaa4546c3e473d062) ,
90 UINT64_C(0x928fce349455f860) , UINT64_C(0x48161bbacaab94d9) ,
91 UINT64_C(0x63912430770e6f68) , UINT64_C(0x6ec8a5e602c6641c) ,
92 UINT64_C(0x87282515337ddd2b) , UINT64_C(0x2cda6b42034b701b) ,
93 UINT64_C(0xb03d37c181cb096d) , UINT64_C(0xe108438266c71c6f) ,
94 UINT64_C(0x2b3180c7eb51b255) , UINT64_C(0xdf92b82f96c08bbc) ,
95 UINT64_C(0x5c68c8c0a632f3ba) , UINT64_C(0x5504cc861c3d0556) ,
96 UINT64_C(0xabbfa4e55fb26b8f) , UINT64_C(0x41848b0ab3baceb4) ,
97 UINT64_C(0xb334a273aa445d32) , UINT64_C(0xbca696f0a85ad881) ,
98 UINT64_C(0x24f6ec65b528d56c) , UINT64_C(0x0ce1512e90f4524a) ,
99 UINT64_C(0x4e9dd79d5506d35a) , UINT64_C(0x258905fac6ce9779) ,
100 UINT64_C(0x2019295b3e109b33) , UINT64_C(0xf8a9478b73a054cc) ,
101 UINT64_C(0x2924f2f934417eb0) , UINT64_C(0x3993357d536d1bc4) ,
102 UINT64_C(0x38a81ac21db6ff8b) , UINT64_C(0x47c4fbf17d6016bf) ,
103 UINT64_C(0x1e0faadd7667e3f5) , UINT64_C(0x7abcff62938beb96) ,
104 UINT64_C(0xa78dad948fc179c9) , UINT64_C(0x8f1f98b72911e50d) ,
105 UINT64_C(0x61e48eae27121a91) , UINT64_C(0x4d62f7ad31859808) ,
106 UINT64_C(0xeceba345ef5ceaeb) , UINT64_C(0xf5ceb25ebc9684ce) ,
107 UINT64_C(0xf633e20cb7f76221) , UINT64_C(0xa32cdf06ab8293e4) ,
108 UINT64_C(0x985a202ca5ee2ca4) , UINT64_C(0xcf0b8447cc8a8fb1) ,
109 UINT64_C(0x9f765244979859a3) , UINT64_C(0xa8d516b1a1240017) ,
110 UINT64_C(0x0bd7ba3ebb5dc726) , UINT64_C(0xe54bca55b86adb39) ,
111 UINT64_C(0x1d7a3afd6c478063) , UINT64_C(0x519ec608e7669edd) ,
112 UINT64_C(0x0e5715a2d149aa23) , UINT64_C(0x177d4571848ff194) ,
113 UINT64_C(0xeeb55f3241014c22) , UINT64_C(0x0f5e5ca13a6e2ec2) ,
114 UINT64_C(0x8029927b75f5c361) , UINT64_C(0xad139fabc3d6e436) ,
115 UINT64_C(0x0d5df1a94ccf402f) , UINT64_C(0x3e8bd948bea5dfc8) ,
116 UINT64_C(0xa5a0d357bd3ff77e) , UINT64_C(0xa2d12e251f74f645) ,
117 UINT64_C(0x66fd9e525e81a082) , UINT64_C(0x2e0c90ce7f687a49) ,
118 UINT64_C(0xc2e8bcbeba973bc5) , UINT64_C(0x000001bce509745f) ,
119 UINT64_C(0x423777bbe6dab3d6) , UINT64_C(0xd1661c7eaef06eb5) ,
120 UINT64_C(0xa1781f354daacfd8) , UINT64_C(0x2d11284a2b16affc) ,
121 UINT64_C(0xf1fc4f67fa891d1f) , UINT64_C(0x73ecc25dcb920ada) ,
122 UINT64_C(0xae610c22c2a12651) , UINT64_C(0x96e0a810d356b78a) ,
123 UINT64_C(0x5a9a381f2fe7870f) , UINT64_C(0xd5ad62ede94e5530) ,
124 UINT64_C(0xd225e5e8368d1427) , UINT64_C(0x65977b70c7af4631) ,
125 UINT64_C(0x99f889b2de39d74f) , UINT64_C(0x233f30bf54e1d143) ,
126 UINT64_C(0x9a9675d3d9a63c97) , UINT64_C(0x5470554ff334f9a8) ,
127 UINT64_C(0x166acb744a4f5688) , UINT64_C(0x70c74caab2e4aead) ,
128 UINT64_C(0xf0d091646f294d12) , UINT64_C(0x57b82a89684031d1) ,
129 UINT64_C(0xefd95a5a61be0b6b) , UINT64_C(0x2fbd12e969f2f29a) ,
130 UINT64_C(0x9bd37013feff9fe8) , UINT64_C(0x3f9b0404d6085a06) ,
131 UINT64_C(0x4940c1f3166cfe15) , UINT64_C(0x09542c4dcdf3defb) ,
132 UINT64_C(0xb4c5218385cd5ce3) , UINT64_C(0xc935b7dc4462a641) ,
133 UINT64_C(0x3417f8a68ed3b63f) , UINT64_C(0xb80959295b215b40) ,
134 UINT64_C(0xf99cdaef3b8c8572) , UINT64_C(0x018c0614f8fcb95d) ,
135 UINT64_C(0x1b14accd1a3acdf3) , UINT64_C(0x84d471f200bb732d) ,
136 UINT64_C(0xc1a3110e95e8da16) , UINT64_C(0x430a7220bf1a82b8) ,
137 UINT64_C(0xb77e090d39df210e) , UINT64_C(0x5ef4bd9f3cd05e9d) ,
138 UINT64_C(0x9d4ff6da7e57a444) , UINT64_C(0xda1d60e183d4a5f8) ,
139 UINT64_C(0xb287c38417998e47) , UINT64_C(0xfe3edc121bb31886) ,
140 UINT64_C(0xc7fe3ccc980ccbef) , UINT64_C(0xe46fb590189bfd03) ,
141 UINT64_C(0x3732fd469a4c57dc) , UINT64_C(0x7ef700a07cf1ad65) ,
142 UINT64_C(0x59c64468a31d8859) , UINT64_C(0x762fb0b4d45b61f6) ,
143 UINT64_C(0x155baed099047718) , UINT64_C(0x68755e4c3d50baa6) ,
144 UINT64_C(0xe9214e7f22d8b4df) , UINT64_C(0x2addbf532eac95f4) ,
145 UINT64_C(0x32ae3909b4bd0109) , UINT64_C(0x834df537b08e3450) ,
146 UINT64_C(0xfa209da84220728d) , UINT64_C(0x9e691d9b9efe23f7) ,
147 UINT64_C(0x0446d288c4ae8d7f) , UINT64_C(0x7b4cc524e169785b) ,
148 UINT64_C(0x21d87f0135ca1385) , UINT64_C(0xcebb400f137b8aa5) ,
149 UINT64_C(0x272e2b66580796be) , UINT64_C(0x3612264125c2b0de) ,
150 UINT64_C(0x057702bdad1efbb2) , UINT64_C(0xd4babb8eacf84be9) ,
151 UINT64_C(0x91583139641bc67b) , UINT64_C(0x8bdc2de08036e024) ,
152 UINT64_C(0x603c8156f49f68ed) , UINT64_C(0xf7d236f7dbef5111) ,
153 UINT64_C(0x9727c4598ad21e80) , UINT64_C(0xa08a0896670a5fd7) ,
154 UINT64_C(0xcb4a8f4309eba9cb) , UINT64_C(0x81af564b0f7036a1) ,
155 UINT64_C(0xc0b99aa778199abd) , UINT64_C(0x959f1ec83fc8e952) ,
156 UINT64_C(0x8c505077794a81b9) , UINT64_C(0x3acaaf8f056338f0) ,
157 UINT64_C(0x07b43f50627a6778) , UINT64_C(0x4a44ab49f5eccc77) ,
158 UINT64_C(0x3bc3d6e4b679ee98) , UINT64_C(0x9cc0d4d1cf14108c) ,
159 UINT64_C(0x4406c00b206bc8a0) , UINT64_C(0x82a18854c8d72d89) ,
160 UINT64_C(0x67e366b35c3c432c) , UINT64_C(0xb923dd61102b37f2) ,
161 UINT64_C(0x56ab2779d884271d) , UINT64_C(0xbe83e1b0ff1525af) ,
162 UINT64_C(0xfb7c65d4217e49a9) , UINT64_C(0x6bdbe0e76d48e7d4) ,
163 UINT64_C(0x08df828745d9179e) , UINT64_C(0x22ea6a9add53bd34) ,
164 UINT64_C(0xe36e141c5622200a) , UINT64_C(0x7f805d1b8cb750ee) ,
165 UINT64_C(0xafe5c7a59f58e837) , UINT64_C(0xe27f996a4fb1c23c) ,
166 UINT64_C(0xd3867dfb0775f0d0) , UINT64_C(0xd0e673de6e88891a) ,
167 UINT64_C(0x123aeb9eafb86c25) , UINT64_C(0x30f1d5d5c145b895) ,
168 UINT64_C(0xbb434a2dee7269e7) , UINT64_C(0x78cb67ecf931fa38) ,
169 UINT64_C(0xf33b0372323bbf9c) , UINT64_C(0x52d66336fb279c74) ,
170 UINT64_C(0x505f33ac0afb4eaa) , UINT64_C(0xe8a5cd99a2cce187) ,
171 UINT64_C(0x534974801e2d30bb) , UINT64_C(0x8d2d5711d5876d90) ,
172 UINT64_C(0x1f1a412891bc038e) , UINT64_C(0xd6e2e71d82e56648) ,
173 UINT64_C(0x74036c3a497732b7) , UINT64_C(0x89b67ed96361f5ab) ,
174 UINT64_C(0xffed95d8f1ea02a2) , UINT64_C(0xe72b3bd61464d43d) ,
175 UINT64_C(0xa6300f170bdc4820) , UINT64_C(0xebc18760ed78a77a)
178 const uint64_t Tiger::sbox2[256] =
180 UINT64_C(0xe6a6be5a05a12138) , UINT64_C(0xb5a122a5b4f87c98) ,
181 UINT64_C(0x563c6089140b6990) , UINT64_C(0x4c46cb2e391f5dd5) ,
182 UINT64_C(0xd932addbc9b79434) , UINT64_C(0x08ea70e42015aff5) ,
183 UINT64_C(0xd765a6673e478cf1) , UINT64_C(0xc4fb757eab278d99) ,
184 UINT64_C(0xdf11c6862d6e0692) , UINT64_C(0xddeb84f10d7f3b16) ,
185 UINT64_C(0x6f2ef604a665ea04) , UINT64_C(0x4a8e0f0ff0e0dfb3) ,
186 UINT64_C(0xa5edeef83dbcba51) , UINT64_C(0xfc4f0a2a0ea4371e) ,
187 UINT64_C(0xe83e1da85cb38429) , UINT64_C(0xdc8ff882ba1b1ce2) ,
188 UINT64_C(0xcd45505e8353e80d) , UINT64_C(0x18d19a00d4db0717) ,
189 UINT64_C(0x34a0cfeda5f38101) , UINT64_C(0x0be77e518887caf2) ,
190 UINT64_C(0x1e341438b3c45136) , UINT64_C(0xe05797f49089ccf9) ,
191 UINT64_C(0xffd23f9df2591d14) , UINT64_C(0x543dda228595c5cd) ,
192 UINT64_C(0x661f81fd99052a33) , UINT64_C(0x8736e641db0f7b76) ,
193 UINT64_C(0x15227725418e5307) , UINT64_C(0xe25f7f46162eb2fa) ,
194 UINT64_C(0x48a8b2126c13d9fe) , UINT64_C(0xafdc541792e76eea) ,
195 UINT64_C(0x03d912bfc6d1898f) , UINT64_C(0x31b1aafa1b83f51b) ,
196 UINT64_C(0xf1ac2796e42ab7d9) , UINT64_C(0x40a3a7d7fcd2ebac) ,
197 UINT64_C(0x1056136d0afbbcc5) , UINT64_C(0x7889e1dd9a6d0c85) ,
198 UINT64_C(0xd33525782a7974aa) , UINT64_C(0xa7e25d09078ac09b) ,
199 UINT64_C(0xbd4138b3eac6edd0) , UINT64_C(0x920abfbe71eb9e70) ,
200 UINT64_C(0xa2a5d0f54fc2625c) , UINT64_C(0xc054e36b0b1290a3) ,
201 UINT64_C(0xf6dd59ff62fe932b) , UINT64_C(0x3537354511a8ac7d) ,
202 UINT64_C(0xca845e9172fadcd4) , UINT64_C(0x84f82b60329d20dc) ,
203 UINT64_C(0x79c62ce1cd672f18) , UINT64_C(0x8b09a2add124642c) ,
204 UINT64_C(0xd0c1e96a19d9e726) , UINT64_C(0x5a786a9b4ba9500c) ,
205 UINT64_C(0x0e020336634c43f3) , UINT64_C(0xc17b474aeb66d822) ,
206 UINT64_C(0x6a731ae3ec9baac2) , UINT64_C(0x8226667ae0840258) ,
207 UINT64_C(0x67d4567691caeca5) , UINT64_C(0x1d94155c4875adb5) ,
208 UINT64_C(0x6d00fd985b813fdf) , UINT64_C(0x51286efcb774cd06) ,
209 UINT64_C(0x5e8834471fa744af) , UINT64_C(0xf72ca0aee761ae2e) ,
210 UINT64_C(0xbe40e4cdaee8e09a) , UINT64_C(0xe9970bbb5118f665) ,
211 UINT64_C(0x726e4beb33df1964) , UINT64_C(0x703b000729199762) ,
212 UINT64_C(0x4631d816f5ef30a7) , UINT64_C(0xb880b5b51504a6be) ,
213 UINT64_C(0x641793c37ed84b6c) , UINT64_C(0x7b21ed77f6e97d96) ,
214 UINT64_C(0x776306312ef96b73) , UINT64_C(0xae528948e86ff3f4) ,
215 UINT64_C(0x53dbd7f286a3f8f8) , UINT64_C(0x16cadce74cfc1063) ,
216 UINT64_C(0x005c19bdfa52c6dd) , UINT64_C(0x68868f5d64d46ad3) ,
217 UINT64_C(0x3a9d512ccf1e186a) , UINT64_C(0x367e62c2385660ae) ,
218 UINT64_C(0xe359e7ea77dcb1d7) , UINT64_C(0x526c0773749abe6e) ,
219 UINT64_C(0x735ae5f9d09f734b) , UINT64_C(0x493fc7cc8a558ba8) ,
220 UINT64_C(0xb0b9c1533041ab45) , UINT64_C(0x321958ba470a59bd) ,
221 UINT64_C(0x852db00b5f46c393) , UINT64_C(0x91209b2bd336b0e5) ,
222 UINT64_C(0x6e604f7d659ef19f) , UINT64_C(0xb99a8ae2782ccb24) ,
223 UINT64_C(0xccf52ab6c814c4c7) , UINT64_C(0x4727d9afbe11727b) ,
224 UINT64_C(0x7e950d0c0121b34d) , UINT64_C(0x756f435670ad471f) ,
225 UINT64_C(0xf5add442615a6849) , UINT64_C(0x4e87e09980b9957a) ,
226 UINT64_C(0x2acfa1df50aee355) , UINT64_C(0xd898263afd2fd556) ,
227 UINT64_C(0xc8f4924dd80c8fd6) , UINT64_C(0xcf99ca3d754a173a) ,
228 UINT64_C(0xfe477bacaf91bf3c) , UINT64_C(0xed5371f6d690c12d) ,
229 UINT64_C(0x831a5c285e687094) , UINT64_C(0xc5d3c90a3708a0a4) ,
230 UINT64_C(0x0f7f903717d06580) , UINT64_C(0x19f9bb13b8fdf27f) ,
231 UINT64_C(0xb1bd6f1b4d502843) , UINT64_C(0x1c761ba38fff4012) ,
232 UINT64_C(0x0d1530c4e2e21f3b) , UINT64_C(0x8943ce69a7372c8a) ,
233 UINT64_C(0xe5184e11feb5ce66) , UINT64_C(0x618bdb80bd736621) ,
234 UINT64_C(0x7d29bad68b574d0b) , UINT64_C(0x81bb613e25e6fe5b) ,
235 UINT64_C(0x071c9c10bc07913f) , UINT64_C(0xc7beeb7909ac2d97) ,
236 UINT64_C(0xc3e58d353bc5d757) , UINT64_C(0xeb017892f38f61e8) ,
237 UINT64_C(0xd4effb9c9b1cc21a) , UINT64_C(0x99727d26f494f7ab) ,
238 UINT64_C(0xa3e063a2956b3e03) , UINT64_C(0x9d4a8b9a4aa09c30) ,
239 UINT64_C(0x3f6ab7d500090fb4) , UINT64_C(0x9cc0f2a057268ac0) ,
240 UINT64_C(0x3dee9d2dedbf42d1) , UINT64_C(0x330f49c87960a972) ,
241 UINT64_C(0xc6b2720287421b41) , UINT64_C(0x0ac59ec07c00369c) ,
242 UINT64_C(0xef4eac49cb353425) , UINT64_C(0xf450244eef0129d8) ,
243 UINT64_C(0x8acc46e5caf4deb6) , UINT64_C(0x2ffeab63989263f7) ,
244 UINT64_C(0x8f7cb9fe5d7a4578) , UINT64_C(0x5bd8f7644e634635) ,
245 UINT64_C(0x427a7315bf2dc900) , UINT64_C(0x17d0c4aa2125261c) ,
246 UINT64_C(0x3992486c93518e50) , UINT64_C(0xb4cbfee0a2d7d4c3) ,
247 UINT64_C(0x7c75d6202c5ddd8d) , UINT64_C(0xdbc295d8e35b6c61) ,
248 UINT64_C(0x60b369d302032b19) , UINT64_C(0xce42685fdce44132) ,
249 UINT64_C(0x06f3ddb9ddf65610) , UINT64_C(0x8ea4d21db5e148f0) ,
250 UINT64_C(0x20b0fce62fcd496f) , UINT64_C(0x2c1b912358b0ee31) ,
251 UINT64_C(0xb28317b818f5a308) , UINT64_C(0xa89c1e189ca6d2cf) ,
252 UINT64_C(0x0c6b18576aaadbc8) , UINT64_C(0xb65deaa91299fae3) ,
253 UINT64_C(0xfb2b794b7f1027e7) , UINT64_C(0x04e4317f443b5beb) ,
254 UINT64_C(0x4b852d325939d0a6) , UINT64_C(0xd5ae6beefb207ffc) ,
255 UINT64_C(0x309682b281c7d374) , UINT64_C(0xbae309a194c3b475) ,
256 UINT64_C(0x8cc3f97b13b49f05) , UINT64_C(0x98a9422ff8293967) ,
257 UINT64_C(0x244b16b01076ff7c) , UINT64_C(0xf8bf571c663d67ee) ,
258 UINT64_C(0x1f0d6758eee30da1) , UINT64_C(0xc9b611d97adeb9b7) ,
259 UINT64_C(0xb7afd5887b6c57a2) , UINT64_C(0x6290ae846b984fe1) ,
260 UINT64_C(0x94df4cdeacc1a5fd) , UINT64_C(0x058a5bd1c5483aff) ,
261 UINT64_C(0x63166cc142ba3c37) , UINT64_C(0x8db8526eb2f76f40) ,
262 UINT64_C(0xe10880036f0d6d4e) , UINT64_C(0x9e0523c9971d311d) ,
263 UINT64_C(0x45ec2824cc7cd691) , UINT64_C(0x575b8359e62382c9) ,
264 UINT64_C(0xfa9e400dc4889995) , UINT64_C(0xd1823ecb45721568) ,
265 UINT64_C(0xdafd983b8206082f) , UINT64_C(0xaa7d29082386a8cb) ,
266 UINT64_C(0x269fcd4403b87588) , UINT64_C(0x1b91f5f728bdd1e0) ,
267 UINT64_C(0xe4669f39040201f6) , UINT64_C(0x7a1d7c218cf04ade) ,
268 UINT64_C(0x65623c29d79ce5ce) , UINT64_C(0x2368449096c00bb1) ,
269 UINT64_C(0xab9bf1879da503ba) , UINT64_C(0xbc23ecb1a458058e) ,
270 UINT64_C(0x9a58df01bb401ecc) , UINT64_C(0xa070e868a85f143d) ,
271 UINT64_C(0x4ff188307df2239e) , UINT64_C(0x14d565b41a641183) ,
272 UINT64_C(0xee13337452701602) , UINT64_C(0x950e3dcf3f285e09) ,
273 UINT64_C(0x59930254b9c80953) , UINT64_C(0x3bf299408930da6d) ,
274 UINT64_C(0xa955943f53691387) , UINT64_C(0xa15edecaa9cb8784) ,
275 UINT64_C(0x29142127352be9a0) , UINT64_C(0x76f0371fff4e7afb) ,
276 UINT64_C(0x0239f450274f2228) , UINT64_C(0xbb073af01d5e868b) ,
277 UINT64_C(0xbfc80571c10e96c1) , UINT64_C(0xd267088568222e23) ,
278 UINT64_C(0x9671a3d48e80b5b0) , UINT64_C(0x55b5d38ae193bb81) ,
279 UINT64_C(0x693ae2d0a18b04b8) , UINT64_C(0x5c48b4ecadd5335f) ,
280 UINT64_C(0xfd743b194916a1ca) , UINT64_C(0x2577018134be98c4) ,
281 UINT64_C(0xe77987e83c54a4ad) , UINT64_C(0x28e11014da33e1b9) ,
282 UINT64_C(0x270cc59e226aa213) , UINT64_C(0x71495f756d1a5f60) ,
283 UINT64_C(0x9be853fb60afef77) , UINT64_C(0xadc786a7f7443dbf) ,
284 UINT64_C(0x0904456173b29a82) , UINT64_C(0x58bc7a66c232bd5e) ,
285 UINT64_C(0xf306558c673ac8b2) , UINT64_C(0x41f639c6b6c9772a) ,
286 UINT64_C(0x216defe99fda35da) , UINT64_C(0x11640cc71c7be615) ,
287 UINT64_C(0x93c43694565c5527) , UINT64_C(0xea038e6246777839) ,
288 UINT64_C(0xf9abf3ce5a3e2469) , UINT64_C(0x741e768d0fd312d2) ,
289 UINT64_C(0x0144b883ced652c6) , UINT64_C(0xc20b5a5ba33f8552) ,
290 UINT64_C(0x1ae69633c3435a9d) , UINT64_C(0x97a28ca4088cfdec) ,
291 UINT64_C(0x8824a43c1e96f420) , UINT64_C(0x37612fa66eeea746) ,
292 UINT64_C(0x6b4cb165f9cf0e5a) , UINT64_C(0x43aa1c06a0abfb4a) ,
293 UINT64_C(0x7f4dc26ff162796b) , UINT64_C(0x6cbacc8e54ed9b0f) ,
294 UINT64_C(0xa6b7ffefd2bb253e) , UINT64_C(0x2e25bc95b0a29d4f) ,
295 UINT64_C(0x86d6a58bdef1388c) , UINT64_C(0xded74ac576b6f054) ,
296 UINT64_C(0x8030bdbc2b45805d) , UINT64_C(0x3c81af70e94d9289) ,
297 UINT64_C(0x3eff6dda9e3100db) , UINT64_C(0xb38dc39fdfcc8847) ,
298 UINT64_C(0x123885528d17b87e) , UINT64_C(0xf2da0ed240b1b642) ,
299 UINT64_C(0x44cefadcd54bf9a9) , UINT64_C(0x1312200e433c7ee6) ,
300 UINT64_C(0x9ffcc84f3a78c748) , UINT64_C(0xf0cd1f72248576bb) ,
301 UINT64_C(0xec6974053638cfe4) , UINT64_C(0x2ba7b67c0cec4e4c) ,
302 UINT64_C(0xac2f4df3e5ce32ed) , UINT64_C(0xcb33d14326ea4c11) ,
303 UINT64_C(0xa4e9044cc77e58bc) , UINT64_C(0x5f513293d934fcef) ,
304 UINT64_C(0x5dc9645506e55444) , UINT64_C(0x50de418f317de40a) ,
305 UINT64_C(0x388cb31a69dde259) , UINT64_C(0x2db4a83455820a86) ,
306 UINT64_C(0x9010a91e84711ae9) , UINT64_C(0x4df7f0b7b1498371) ,
307 UINT64_C(0xd62a2eabc0977179) , UINT64_C(0x22fac097aa8d5c0e)
310 const uint64_t Tiger::sbox3[256] =
312 UINT64_C(0xf49fcc2ff1daf39b) , UINT64_C(0x487fd5c66ff29281) ,
313 UINT64_C(0xe8a30667fcdca83f) , UINT64_C(0x2c9b4be3d2fcce63) ,
314 UINT64_C(0xda3ff74b93fbbbc2) , UINT64_C(0x2fa165d2fe70ba66) ,
315 UINT64_C(0xa103e279970e93d4) , UINT64_C(0xbecdec77b0e45e71) ,
316 UINT64_C(0xcfb41e723985e497) , UINT64_C(0xb70aaa025ef75017) ,
317 UINT64_C(0xd42309f03840b8e0) , UINT64_C(0x8efc1ad035898579) ,
318 UINT64_C(0x96c6920be2b2abc5) , UINT64_C(0x66af4163375a9172) ,
319 UINT64_C(0x2174abdcca7127fb) , UINT64_C(0xb33ccea64a72ff41) ,
320 UINT64_C(0xf04a4933083066a5) , UINT64_C(0x8d970acdd7289af5) ,
321 UINT64_C(0x8f96e8e031c8c25e) , UINT64_C(0xf3fec02276875d47) ,
322 UINT64_C(0xec7bf310056190dd) , UINT64_C(0xf5adb0aebb0f1491) ,
323 UINT64_C(0x9b50f8850fd58892) , UINT64_C(0x4975488358b74de8) ,
324 UINT64_C(0xa3354ff691531c61) , UINT64_C(0x0702bbe481d2c6ee) ,
325 UINT64_C(0x89fb24057deded98) , UINT64_C(0xac3075138596e902) ,
326 UINT64_C(0x1d2d3580172772ed) , UINT64_C(0xeb738fc28e6bc30d) ,
327 UINT64_C(0x5854ef8f63044326) , UINT64_C(0x9e5c52325add3bbe) ,
328 UINT64_C(0x90aa53cf325c4623) , UINT64_C(0xc1d24d51349dd067) ,
329 UINT64_C(0x2051cfeea69ea624) , UINT64_C(0x13220f0a862e7e4f) ,
330 UINT64_C(0xce39399404e04864) , UINT64_C(0xd9c42ca47086fcb7) ,
331 UINT64_C(0x685ad2238a03e7cc) , UINT64_C(0x066484b2ab2ff1db) ,
332 UINT64_C(0xfe9d5d70efbf79ec) , UINT64_C(0x5b13b9dd9c481854) ,
333 UINT64_C(0x15f0d475ed1509ad) , UINT64_C(0x0bebcd060ec79851) ,
334 UINT64_C(0xd58c6791183ab7f8) , UINT64_C(0xd1187c5052f3eee4) ,
335 UINT64_C(0xc95d1192e54e82ff) , UINT64_C(0x86eea14cb9ac6ca2) ,
336 UINT64_C(0x3485beb153677d5d) , UINT64_C(0xdd191d781f8c492a) ,
337 UINT64_C(0xf60866baa784ebf9) , UINT64_C(0x518f643ba2d08c74) ,
338 UINT64_C(0x8852e956e1087c22) , UINT64_C(0xa768cb8dc410ae8d) ,
339 UINT64_C(0x38047726bfec8e1a) , UINT64_C(0xa67738b4cd3b45aa) ,
340 UINT64_C(0xad16691cec0dde19) , UINT64_C(0xc6d4319380462e07) ,
341 UINT64_C(0xc5a5876d0ba61938) , UINT64_C(0x16b9fa1fa58fd840) ,
342 UINT64_C(0x188ab1173ca74f18) , UINT64_C(0xabda2f98c99c021f) ,
343 UINT64_C(0x3e0580ab134ae816) , UINT64_C(0x5f3b05b773645abb) ,
344 UINT64_C(0x2501a2be5575f2f6) , UINT64_C(0x1b2f74004e7e8ba9) ,
345 UINT64_C(0x1cd7580371e8d953) , UINT64_C(0x7f6ed89562764e30) ,
346 UINT64_C(0xb15926ff596f003d) , UINT64_C(0x9f65293da8c5d6b9) ,
347 UINT64_C(0x6ecef04dd690f84c) , UINT64_C(0x4782275fff33af88) ,
348 UINT64_C(0xe41433083f820801) , UINT64_C(0xfd0dfe409a1af9b5) ,
349 UINT64_C(0x4325a3342cdb396b) , UINT64_C(0x8ae77e62b301b252) ,
350 UINT64_C(0xc36f9e9f6655615a) , UINT64_C(0x85455a2d92d32c09) ,
351 UINT64_C(0xf2c7dea949477485) , UINT64_C(0x63cfb4c133a39eba) ,
352 UINT64_C(0x83b040cc6ebc5462) , UINT64_C(0x3b9454c8fdb326b0) ,
353 UINT64_C(0x56f56a9e87ffd78c) , UINT64_C(0x2dc2940d99f42bc6) ,
354 UINT64_C(0x98f7df096b096e2d) , UINT64_C(0x19a6e01e3ad852bf) ,
355 UINT64_C(0x42a99ccbdbd4b40b) , UINT64_C(0xa59998af45e9c559) ,
356 UINT64_C(0x366295e807d93186) , UINT64_C(0x6b48181bfaa1f773) ,
357 UINT64_C(0x1fec57e2157a0a1d) , UINT64_C(0x4667446af6201ad5) ,
358 UINT64_C(0xe615ebcacfb0f075) , UINT64_C(0xb8f31f4f68290778) ,
359 UINT64_C(0x22713ed6ce22d11e) , UINT64_C(0x3057c1a72ec3c93b) ,
360 UINT64_C(0xcb46acc37c3f1f2f) , UINT64_C(0xdbb893fd02aaf50e) ,
361 UINT64_C(0x331fd92e600b9fcf) , UINT64_C(0xa498f96148ea3ad6) ,
362 UINT64_C(0xa8d8426e8b6a83ea) , UINT64_C(0xa089b274b7735cdc) ,
363 UINT64_C(0x87f6b3731e524a11) , UINT64_C(0x118808e5cbc96749) ,
364 UINT64_C(0x9906e4c7b19bd394) , UINT64_C(0xafed7f7e9b24a20c) ,
365 UINT64_C(0x6509eadeeb3644a7) , UINT64_C(0x6c1ef1d3e8ef0ede) ,
366 UINT64_C(0xb9c97d43e9798fb4) , UINT64_C(0xa2f2d784740c28a3) ,
367 UINT64_C(0x7b8496476197566f) , UINT64_C(0x7a5be3e6b65f069d) ,
368 UINT64_C(0xf96330ed78be6f10) , UINT64_C(0xeee60de77a076a15) ,
369 UINT64_C(0x2b4bee4aa08b9bd0) , UINT64_C(0x6a56a63ec7b8894e) ,
370 UINT64_C(0x02121359ba34fef4) , UINT64_C(0x4cbf99f8283703fc) ,
371 UINT64_C(0x398071350caf30c8) , UINT64_C(0xd0a77a89f017687a) ,
372 UINT64_C(0xf1c1a9eb9e423569) , UINT64_C(0x8c7976282dee8199) ,
373 UINT64_C(0x5d1737a5dd1f7abd) , UINT64_C(0x4f53433c09a9fa80) ,
374 UINT64_C(0xfa8b0c53df7ca1d9) , UINT64_C(0x3fd9dcbc886ccb77) ,
375 UINT64_C(0xc040917ca91b4720) , UINT64_C(0x7dd00142f9d1dcdf) ,
376 UINT64_C(0x8476fc1d4f387b58) , UINT64_C(0x23f8e7c5f3316503) ,
377 UINT64_C(0x032a2244e7e37339) , UINT64_C(0x5c87a5d750f5a74b) ,
378 UINT64_C(0x082b4cc43698992e) , UINT64_C(0xdf917becb858f63c) ,
379 UINT64_C(0x3270b8fc5bf86dda) , UINT64_C(0x10ae72bb29b5dd76) ,
380 UINT64_C(0x576ac94e7700362b) , UINT64_C(0x1ad112dac61efb8f) ,
381 UINT64_C(0x691bc30ec5faa427) , UINT64_C(0xff246311cc327143) ,
382 UINT64_C(0x3142368e30e53206) , UINT64_C(0x71380e31e02ca396) ,
383 UINT64_C(0x958d5c960aad76f1) , UINT64_C(0xf8d6f430c16da536) ,
384 UINT64_C(0xc8ffd13f1be7e1d2) , UINT64_C(0x7578ae66004ddbe1) ,
385 UINT64_C(0x05833f01067be646) , UINT64_C(0xbb34b5ad3bfe586d) ,
386 UINT64_C(0x095f34c9a12b97f0) , UINT64_C(0x247ab64525d60ca8) ,
387 UINT64_C(0xdcdbc6f3017477d1) , UINT64_C(0x4a2e14d4decad24d) ,
388 UINT64_C(0xbdb5e6d9be0a1eeb) , UINT64_C(0x2a7e70f7794301ab) ,
389 UINT64_C(0xdef42d8a270540fd) , UINT64_C(0x01078ec0a34c22c1) ,
390 UINT64_C(0xe5de511af4c16387) , UINT64_C(0x7ebb3a52bd9a330a) ,
391 UINT64_C(0x77697857aa7d6435) , UINT64_C(0x004e831603ae4c32) ,
392 UINT64_C(0xe7a21020ad78e312) , UINT64_C(0x9d41a70c6ab420f2) ,
393 UINT64_C(0x28e06c18ea1141e6) , UINT64_C(0xd2b28cbd984f6b28) ,
394 UINT64_C(0x26b75f6c446e9d83) , UINT64_C(0xba47568c4d418d7f) ,
395 UINT64_C(0xd80badbfe6183d8e) , UINT64_C(0x0e206d7f5f166044) ,
396 UINT64_C(0xe258a43911cbca3e) , UINT64_C(0x723a1746b21dc0bc) ,
397 UINT64_C(0xc7caa854f5d7cdd3) , UINT64_C(0x7cac32883d261d9c) ,
398 UINT64_C(0x7690c26423ba942c) , UINT64_C(0x17e55524478042b8) ,
399 UINT64_C(0xe0be477656a2389f) , UINT64_C(0x4d289b5e67ab2da0) ,
400 UINT64_C(0x44862b9c8fbbfd31) , UINT64_C(0xb47cc8049d141365) ,
401 UINT64_C(0x822c1b362b91c793) , UINT64_C(0x4eb14655fb13dfd8) ,
402 UINT64_C(0x1ecbba0714e2a97b) , UINT64_C(0x6143459d5cde5f14) ,
403 UINT64_C(0x53a8fbf1d5f0ac89) , UINT64_C(0x97ea04d81c5e5b00) ,
404 UINT64_C(0x622181a8d4fdb3f3) , UINT64_C(0xe9bcd341572a1208) ,
405 UINT64_C(0x1411258643cce58a) , UINT64_C(0x9144c5fea4c6e0a4) ,
406 UINT64_C(0x0d33d06565cf620f) , UINT64_C(0x54a48d489f219ca1) ,
407 UINT64_C(0xc43e5eac6d63c821) , UINT64_C(0xa9728b3a72770daf) ,
408 UINT64_C(0xd7934e7b20df87ef) , UINT64_C(0xe35503b61a3e86e5) ,
409 UINT64_C(0xcae321fbc819d504) , UINT64_C(0x129a50b3ac60bfa6) ,
410 UINT64_C(0xcd5e68ea7e9fb6c3) , UINT64_C(0xb01c90199483b1c7) ,
411 UINT64_C(0x3de93cd5c295376c) , UINT64_C(0xaed52edf2ab9ad13) ,
412 UINT64_C(0x2e60f512c0a07884) , UINT64_C(0xbc3d86a3e36210c9) ,
413 UINT64_C(0x35269d9b163951ce) , UINT64_C(0x0c7d6e2ad0cdb5fa) ,
414 UINT64_C(0x59e86297d87f5733) , UINT64_C(0x298ef221898db0e7) ,
415 UINT64_C(0x55000029d1a5aa7e) , UINT64_C(0x8bc08ae1b5061b45) ,
416 UINT64_C(0xc2c31c2b6c92703a) , UINT64_C(0x94cc596baf25ef42) ,
417 UINT64_C(0x0a1d73db22540456) , UINT64_C(0x04b6a0f9d9c4179a) ,
418 UINT64_C(0xeffdafa2ae3d3c60) , UINT64_C(0xf7c8075bb49496c4) ,
419 UINT64_C(0x9cc5c7141d1cd4e3) , UINT64_C(0x78bd1638218e5534) ,
420 UINT64_C(0xb2f11568f850246a) , UINT64_C(0xedfabcfa9502bc29) ,
421 UINT64_C(0x796ce5f2da23051b) , UINT64_C(0xaae128b0dc93537c) ,
422 UINT64_C(0x3a493da0ee4b29ae) , UINT64_C(0xb5df6b2c416895d7) ,
423 UINT64_C(0xfcabbd25122d7f37) , UINT64_C(0x70810b58105dc4b1) ,
424 UINT64_C(0xe10fdd37f7882a90) , UINT64_C(0x524dcab5518a3f5c) ,
425 UINT64_C(0x3c9e85878451255b) , UINT64_C(0x4029828119bd34e2) ,
426 UINT64_C(0x74a05b6f5d3ceccb) , UINT64_C(0xb610021542e13eca) ,
427 UINT64_C(0x0ff979d12f59e2ac) , UINT64_C(0x6037da27e4f9cc50) ,
428 UINT64_C(0x5e92975a0df1847d) , UINT64_C(0xd66de190d3e623fe) ,
429 UINT64_C(0x5032d6b87b568048) , UINT64_C(0x9a36b7ce8235216e) ,
430 UINT64_C(0x80272a7a24f64b4a) , UINT64_C(0x93efed8b8c6916f7) ,
431 UINT64_C(0x37ddbff44cce1555) , UINT64_C(0x4b95db5d4b99bd25) ,
432 UINT64_C(0x92d3fda169812fc0) , UINT64_C(0xfb1a4a9a90660bb6) ,
433 UINT64_C(0x730c196946a4b9b2) , UINT64_C(0x81e289aa7f49da68) ,
434 UINT64_C(0x64669a0f83b1a05f) , UINT64_C(0x27b3ff7d9644f48b) ,
435 UINT64_C(0xcc6b615c8db675b3) , UINT64_C(0x674f20b9bcebbe95) ,
436 UINT64_C(0x6f31238275655982) , UINT64_C(0x5ae488713e45cf05) ,
437 UINT64_C(0xbf619f9954c21157) , UINT64_C(0xeabac46040a8eae9) ,
438 UINT64_C(0x454c6fe9f2c0c1cd) , UINT64_C(0x419cf6496412691c) ,
439 UINT64_C(0xd3dc3bef265b0f70) , UINT64_C(0x6d0e60f5c3578a9e)
442 const uint64_t Tiger::sbox4[256] =
444 UINT64_C(0x5b0e608526323c55) , UINT64_C(0x1a46c1a9fa1b59f5) ,
445 UINT64_C(0xa9e245a17c4c8ffa) , UINT64_C(0x65ca5159db2955d7) ,
446 UINT64_C(0x05db0a76ce35afc2) , UINT64_C(0x81eac77ea9113d45) ,
447 UINT64_C(0x528ef88ab6ac0a0d) , UINT64_C(0xa09ea253597be3ff) ,
448 UINT64_C(0x430ddfb3ac48cd56) , UINT64_C(0xc4b3a67af45ce46f) ,
449 UINT64_C(0x4ececfd8fbe2d05e) , UINT64_C(0x3ef56f10b39935f0) ,
450 UINT64_C(0x0b22d6829cd619c6) , UINT64_C(0x17fd460a74df2069) ,
451 UINT64_C(0x6cf8cc8e8510ed40) , UINT64_C(0xd6c824bf3a6ecaa7) ,
452 UINT64_C(0x61243d581a817049) , UINT64_C(0x048bacb6bbc163a2) ,
453 UINT64_C(0xd9a38ac27d44cc32) , UINT64_C(0x7fddff5baaf410ab) ,
454 UINT64_C(0xad6d495aa804824b) , UINT64_C(0xe1a6a74f2d8c9f94) ,
455 UINT64_C(0xd4f7851235dee8e3) , UINT64_C(0xfd4b7f886540d893) ,
456 UINT64_C(0x247c20042aa4bfda) , UINT64_C(0x096ea1c517d1327c) ,
457 UINT64_C(0xd56966b4361a6685) , UINT64_C(0x277da5c31221057d) ,
458 UINT64_C(0x94d59893a43acff7) , UINT64_C(0x64f0c51ccdc02281) ,
459 UINT64_C(0x3d33bcc4ff6189db) , UINT64_C(0xe005cb184ce66af1) ,
460 UINT64_C(0xff5ccd1d1db99bea) , UINT64_C(0xb0b854a7fe42980f) ,
461 UINT64_C(0x7bd46a6a718d4b9f) , UINT64_C(0xd10fa8cc22a5fd8c) ,
462 UINT64_C(0xd31484952be4bd31) , UINT64_C(0xc7fa975fcb243847) ,
463 UINT64_C(0x4886ed1e5846c407) , UINT64_C(0x28cddb791eb70b04) ,
464 UINT64_C(0xc2b00be2f573417f) , UINT64_C(0x5c9590452180f877) ,
465 UINT64_C(0x7a6bddfff370eb00) , UINT64_C(0xce509e38d6d9d6a4) ,
466 UINT64_C(0xebeb0f00647fa702) , UINT64_C(0x1dcc06cf76606f06) ,
467 UINT64_C(0xe4d9f28ba286ff0a) , UINT64_C(0xd85a305dc918c262) ,
468 UINT64_C(0x475b1d8732225f54) , UINT64_C(0x2d4fb51668ccb5fe) ,
469 UINT64_C(0xa679b9d9d72bba20) , UINT64_C(0x53841c0d912d43a5) ,
470 UINT64_C(0x3b7eaa48bf12a4e8) , UINT64_C(0x781e0e47f22f1ddf) ,
471 UINT64_C(0xeff20ce60ab50973) , UINT64_C(0x20d261d19dffb742) ,
472 UINT64_C(0x16a12b03062a2e39) , UINT64_C(0x1960eb2239650495) ,
473 UINT64_C(0x251c16fed50eb8b8) , UINT64_C(0x9ac0c330f826016e) ,
474 UINT64_C(0xed152665953e7671) , UINT64_C(0x02d63194a6369570) ,
475 UINT64_C(0x5074f08394b1c987) , UINT64_C(0x70ba598c90b25ce1) ,
476 UINT64_C(0x794a15810b9742f6) , UINT64_C(0x0d5925e9fcaf8c6c) ,
477 UINT64_C(0x3067716cd868744e) , UINT64_C(0x910ab077e8d7731b) ,
478 UINT64_C(0x6a61bbdb5ac42f61) , UINT64_C(0x93513efbf0851567) ,
479 UINT64_C(0xf494724b9e83e9d5) , UINT64_C(0xe887e1985c09648d) ,
480 UINT64_C(0x34b1d3c675370cfd) , UINT64_C(0xdc35e433bc0d255d) ,
481 UINT64_C(0xd0aab84234131be0) , UINT64_C(0x08042a50b48b7eaf) ,
482 UINT64_C(0x9997c4ee44a3ab35) , UINT64_C(0x829a7b49201799d0) ,
483 UINT64_C(0x263b8307b7c54441) , UINT64_C(0x752f95f4fd6a6ca6) ,
484 UINT64_C(0x927217402c08c6e5) , UINT64_C(0x2a8ab754a795d9ee) ,
485 UINT64_C(0xa442f7552f72943d) , UINT64_C(0x2c31334e19781208) ,
486 UINT64_C(0x4fa98d7ceaee6291) , UINT64_C(0x55c3862f665db309) ,
487 UINT64_C(0xbd0610175d53b1f3) , UINT64_C(0x46fe6cb840413f27) ,
488 UINT64_C(0x3fe03792df0cfa59) , UINT64_C(0xcfe700372eb85e8f) ,
489 UINT64_C(0xa7be29e7adbce118) , UINT64_C(0xe544ee5cde8431dd) ,
490 UINT64_C(0x8a781b1b41f1873e) , UINT64_C(0xa5c94c78a0d2f0e7) ,
491 UINT64_C(0x39412e2877b60728) , UINT64_C(0xa1265ef3afc9a62c) ,
492 UINT64_C(0xbcc2770c6a2506c5) , UINT64_C(0x3ab66dd5dce1ce12) ,
493 UINT64_C(0xe65499d04a675b37) , UINT64_C(0x7d8f523481bfd216) ,
494 UINT64_C(0x0f6f64fcec15f389) , UINT64_C(0x74efbe618b5b13c8) ,
495 UINT64_C(0xacdc82b714273e1d) , UINT64_C(0xdd40bfe003199d17) ,
496 UINT64_C(0x37e99257e7e061f8) , UINT64_C(0xfa52626904775aaa) ,
497 UINT64_C(0x8bbbf63a463d56f9) , UINT64_C(0xf0013f1543a26e64) ,
498 UINT64_C(0xa8307e9f879ec898) , UINT64_C(0xcc4c27a4150177cc) ,
499 UINT64_C(0x1b432f2cca1d3348) , UINT64_C(0xde1d1f8f9f6fa013) ,
500 UINT64_C(0x606602a047a7ddd6) , UINT64_C(0xd237ab64cc1cb2c7) ,
501 UINT64_C(0x9b938e7225fcd1d3) , UINT64_C(0xec4e03708e0ff476) ,
502 UINT64_C(0xfeb2fbda3d03c12d) , UINT64_C(0xae0bced2ee43889a) ,
503 UINT64_C(0x22cb8923ebfb4f43) , UINT64_C(0x69360d013cf7396d) ,
504 UINT64_C(0x855e3602d2d4e022) , UINT64_C(0x073805bad01f784c) ,
505 UINT64_C(0x33e17a133852f546) , UINT64_C(0xdf4874058ac7b638) ,
506 UINT64_C(0xba92b29c678aa14a) , UINT64_C(0x0ce89fc76cfaadcd) ,
507 UINT64_C(0x5f9d4e0908339e34) , UINT64_C(0xf1afe9291f5923b9) ,
508 UINT64_C(0x6e3480f60f4a265f) , UINT64_C(0xeebf3a2ab29b841c) ,
509 UINT64_C(0xe21938a88f91b4ad) , UINT64_C(0x57dfeff845c6d3c3) ,
510 UINT64_C(0x2f006b0bf62caaf2) , UINT64_C(0x62f479ef6f75ee78) ,
511 UINT64_C(0x11a55ad41c8916a9) , UINT64_C(0xf229d29084fed453) ,
512 UINT64_C(0x42f1c27b16b000e6) , UINT64_C(0x2b1f76749823c074) ,
513 UINT64_C(0x4b76eca3c2745360) , UINT64_C(0x8c98f463b91691bd) ,
514 UINT64_C(0x14bcc93cf1ade66a) , UINT64_C(0x8885213e6d458397) ,
515 UINT64_C(0x8e177df0274d4711) , UINT64_C(0xb49b73b5503f2951) ,
516 UINT64_C(0x10168168c3f96b6b) , UINT64_C(0x0e3d963b63cab0ae) ,
517 UINT64_C(0x8dfc4b5655a1db14) , UINT64_C(0xf789f1356e14de5c) ,
518 UINT64_C(0x683e68af4e51dac1) , UINT64_C(0xc9a84f9d8d4b0fd9) ,
519 UINT64_C(0x3691e03f52a0f9d1) , UINT64_C(0x5ed86e46e1878e80) ,
520 UINT64_C(0x3c711a0e99d07150) , UINT64_C(0x5a0865b20c4e9310) ,
521 UINT64_C(0x56fbfc1fe4f0682e) , UINT64_C(0xea8d5de3105edf9b) ,
522 UINT64_C(0x71abfdb12379187a) , UINT64_C(0x2eb99de1bee77b9c) ,
523 UINT64_C(0x21ecc0ea33cf4523) , UINT64_C(0x59a4d7521805c7a1) ,
524 UINT64_C(0x3896f5eb56ae7c72) , UINT64_C(0xaa638f3db18f75dc) ,
525 UINT64_C(0x9f39358dabe9808e) , UINT64_C(0xb7defa91c00b72ac) ,
526 UINT64_C(0x6b5541fd62492d92) , UINT64_C(0x6dc6dee8f92e4d5b) ,
527 UINT64_C(0x353f57abc4beea7e) , UINT64_C(0x735769d6da5690ce) ,
528 UINT64_C(0x0a234aa642391484) , UINT64_C(0xf6f9508028f80d9d) ,
529 UINT64_C(0xb8e319a27ab3f215) , UINT64_C(0x31ad9c1151341a4d) ,
530 UINT64_C(0x773c22a57bef5805) , UINT64_C(0x45c7561a07968633) ,
531 UINT64_C(0xf913da9e249dbe36) , UINT64_C(0xda652d9b78a64c68) ,
532 UINT64_C(0x4c27a97f3bc334ef) , UINT64_C(0x76621220e66b17f4) ,
533 UINT64_C(0x967743899acd7d0b) , UINT64_C(0xf3ee5bcae0ed6782) ,
534 UINT64_C(0x409f753600c879fc) , UINT64_C(0x06d09a39b5926db6) ,
535 UINT64_C(0x6f83aeb0317ac588) , UINT64_C(0x01e6ca4a86381f21) ,
536 UINT64_C(0x66ff3462d19f3025) , UINT64_C(0x72207c24ddfd3bfb) ,
537 UINT64_C(0x4af6b6d3e2ece2eb) , UINT64_C(0x9c994dbec7ea08de) ,
538 UINT64_C(0x49ace597b09a8bc4) , UINT64_C(0xb38c4766cf0797ba) ,
539 UINT64_C(0x131b9373c57c2a75) , UINT64_C(0xb1822cce61931e58) ,
540 UINT64_C(0x9d7555b909ba1c0c) , UINT64_C(0x127fafdd937d11d2) ,
541 UINT64_C(0x29da3badc66d92e4) , UINT64_C(0xa2c1d57154c2ecbc) ,
542 UINT64_C(0x58c5134d82f6fe24) , UINT64_C(0x1c3ae3515b62274f) ,
543 UINT64_C(0xe907c82e01cb8126) , UINT64_C(0xf8ed091913e37fcb) ,
544 UINT64_C(0x3249d8f9c80046c9) , UINT64_C(0x80cf9bede388fb63) ,
545 UINT64_C(0x1881539a116cf19e) , UINT64_C(0x5103f3f76bd52457) ,
546 UINT64_C(0x15b7e6f5ae47f7a8) , UINT64_C(0xdbd7c6ded47e9ccf) ,
547 UINT64_C(0x44e55c410228bb1a) , UINT64_C(0xb647d4255edb4e99) ,
548 UINT64_C(0x5d11882bb8aafc30) , UINT64_C(0xf5098bbb29d3212a) ,
549 UINT64_C(0x8fb5ea14e90296b3) , UINT64_C(0x677b942157dd025a) ,
550 UINT64_C(0xfb58e7c0a390acb5) , UINT64_C(0x89d3674c83bd4a01) ,
551 UINT64_C(0x9e2da4df4bf3b93b) , UINT64_C(0xfcc41e328cab4829) ,
552 UINT64_C(0x03f38c96ba582c52) , UINT64_C(0xcad1bdbd7fd85db2) ,
553 UINT64_C(0xbbb442c16082ae83) , UINT64_C(0xb95fe86ba5da9ab0) ,
554 UINT64_C(0xb22e04673771a93f) , UINT64_C(0x845358c9493152d8) ,
555 UINT64_C(0xbe2a488697b4541e) , UINT64_C(0x95a2dc2dd38e6966) ,
556 UINT64_C(0xc02c11ac923c852b) , UINT64_C(0x2388b1990df2a87b) ,
557 UINT64_C(0x7c8008fa1b4f37be) , UINT64_C(0x1f70d0c84d54e503) ,
558 UINT64_C(0x5490adec7ece57d4) , UINT64_C(0x002b3c27d9063a3a) ,
559 UINT64_C(0x7eaea3848030a2bf) , UINT64_C(0xc602326ded2003c0) ,
560 UINT64_C(0x83a7287d69a94086) , UINT64_C(0xc57a5fcb30f57a8a) ,
561 UINT64_C(0xb56844e479ebe779) , UINT64_C(0xa373b40f05dcbce9) ,
562 UINT64_C(0xd71a786e88570ee2) , UINT64_C(0x879cbacdbde8f6a0) ,
563 UINT64_C(0x976ad1bcc164a32f) , UINT64_C(0xab21e25e9666d78b) ,
564 UINT64_C(0x901063aae5e5c33c) , UINT64_C(0x9818b34448698d90) ,
565 UINT64_C(0xe36487ae3e1e8abb) , UINT64_C(0xafbdf931893bdcb4) ,
566 UINT64_C(0x6345a0dc5fbbd519) , UINT64_C(0x8628fe269b9465ca) ,
567 UINT64_C(0x1e5d01603f9c51ec) , UINT64_C(0x4de44006a15049b7) ,
568 UINT64_C(0xbf6c70e5f776cbb1) , UINT64_C(0x411218f2ef552bed) ,
569 UINT64_C(0xcb0c0708705a36a3) , UINT64_C(0xe74d14754f986044) ,
570 UINT64_C(0xcd56d9430ea8280e) , UINT64_C(0xc12591d7535f5065) ,
571 UINT64_C(0xc83223f1720aef96) , UINT64_C(0xc3a0396f7363a51f)
591 a = UINT64_C(0x0123456789abcdef);
592 b = UINT64_C(0xfedcba9876543210);
593 c = UINT64_C(0xf096a5b4c3b2e187);
606 uint32_t t, msb, lsb;
617 if ((lsb += count) < t)
627 ibuffer[count++] = 0x01;
629 ibuffer[count++] = 0;
633 ibuffer[count++] = 0x01;
635 ibuffer[count++] = 0;
637 memset(ibuffer, 0, 56);
641 ibuffer[57] = lsb >> 8;
642 ibuffer[58] = lsb >> 16;
643 ibuffer[59] = lsb >> 24;
645 ibuffer[61] = msb >> 8;
646 ibuffer[62] = msb >> 16;
647 ibuffer[63] = msb >> 24;
652 #if (LIBXCKS_BYTE_ORDER == LIBXCKS_LITTLE_ENDIAN)
653 #define X(a) do { *(uint64_t*)p = a ; p += 8; } while(0)
655 #define X(a) do { *p++ = a >> 56; *p++ = a >> 48; \
656 *p++ = a >> 40; *p++ = a >> 32; \
657 *p++ = a >> 24; *p++ = a >> 16; \
658 *p++ = a >> 8; *p++ = a; } while(0)
671 void Tiger::update(
const uint8_t* buf,
size_t len)
685 for (; len && count < 64; len--)
686 ibuffer[count++] = *buf++;
694 uint8_t tmpBuf[
sizeof(uint64_t) * 8];
695 memcpy(tmpBuf, buf,
sizeof(uint64_t) * 8);
703 for(; len && count < 64; len--)
704 ibuffer[count++] = *buf++;
712 void Tiger::transform(uint8_t* data)
714 uint64_t la, lb, lc, aa, bb, cc;
717 #if (LIBXCKS_BYTE_ORDER == LIBXCKS_BIG_ENDIAN)
719 #define MKWORD(d,n) \
720 ((uint64_t)(d)[8*(n)+7]) << 56 | ((uint64_t)(d)[8*(n)+6]) << 48 \
721 | ((uint64_t)(d)[8*(n)+5]) << 40 | ((uint64_t)(d)[8*(n)+4]) << 32 \
722 | ((uint64_t)(d)[8*(n)+3]) << 24 | ((uint64_t)(d)[8*(n)+2]) << 16 \
723 | ((uint64_t)(d)[8*(n)+1]) << 8 | ((uint64_t)(d)[8*(n)])
724 x[0] = MKWORD(data, 0);
725 x[1] = MKWORD(data, 1);
726 x[2] = MKWORD(data, 2);
727 x[3] = MKWORD(data, 3);
728 x[4] = MKWORD(data, 4);
729 x[5] = MKWORD(data, 5);
730 x[6] = MKWORD(data, 6);
731 x[7] = MKWORD(data, 7);
734 memcpy(&x[0], data, 64);
742 pass(la, lb, lc, x, 5);
744 pass(lc, la, lb, x, 7);
746 pass(lb, lc, la, x, 9);
763 void Tiger::round(uint64_t& a, uint64_t& b, uint64_t& c, uint64_t x,
int mul)
766 a -= ( sbox1[
static_cast<size_t>(c & 0xff) ]
767 ^ sbox2[
static_cast<size_t>((c >> 16) & 0xff) ]
768 ^ sbox3[
static_cast<size_t>((c >> 32) & 0xff) ]
769 ^ sbox4[
static_cast<size_t>((c >> 48) & 0xff) ]);
770 b += ( sbox4[
static_cast<size_t>((c >> 8) & 0xff) ]
771 ^ sbox3[
static_cast<size_t>((c >> 24) & 0xff) ]
772 ^ sbox2[
static_cast<size_t>((c >> 40) & 0xff) ]
773 ^ sbox1[
static_cast<size_t>((c >> 56) & 0xff) ]);
782 void Tiger::pass(uint64_t& a, uint64_t& b, uint64_t& c, uint64_t* x,
int mul)
784 round(a, b, c, x[0], mul);
785 round(b, c, a, x[1], mul);
786 round(c, a, b, x[2], mul);
787 round(a, b, c, x[3], mul);
788 round(b, c, a, x[4], mul);
789 round(c, a, b, x[5], mul);
790 round(a, b, c, x[6], mul);
791 round(b, c, a, x[7], mul);
799 void Tiger::key_schedule(uint64_t* x)
801 x[0] -= x[7] ^ UINT64_C(0xa5a5a5a5a5a5a5a5);
804 x[3] -= x[2] ^ ((~x[1]) << 19 );
807 x[6] -= x[5] ^ ((~x[4]) >> 23 );
810 x[1] -= x[0] ^ ((~x[7]) << 19 );
813 x[4] -= x[3] ^ ((~x[2]) >> 23 );
816 x[7] -= x[6] ^ UINT64_C(0x0123456789abcdef);
824 uint8_t* Tiger::getValue(uint8_t* buffer)
const
829 memcpy(buffer, tiger.
ibuffer, getSize());
Computes the Tiger hash from a byte stream.
uint8_t ibuffer[64]
Input buffer.
void finish()
Process the remaining bytes in the internal buffer and the usual prolog according to the standard.
#define X(a)
Helper function for Tiger's computing.