Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6

Pull crypto update from Herbert Xu:

- Added aesni/avx/x86_64 implementations for camellia.

- Optimised AVX code for cast5/serpent/twofish/cast6.

- Fixed vmac bug with unaligned input.

- Allow compression algorithms in FIPS mode.

- Optimised crc32c implementation for Intel.

- Misc fixes.

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (32 commits)
crypto: caam - Updated SEC-4.0 device tree binding for ERA information.
crypto: testmgr - remove superfluous initializers for xts(aes)
crypto: testmgr - allow compression algs in fips mode
crypto: testmgr - add larger crc32c test vector to test FPU path in crc32c_intel
crypto: testmgr - clean alg_test_null entries in alg_test_descs[]
crypto: testmgr - remove fips_allowed flag from camellia-aesni null-tests
crypto: cast5/cast6 - move lookup tables to shared module
padata: use __this_cpu_read per-cpu helper
crypto: s5p-sss - Fix compilation error
crypto: picoxcell - Add terminating entry for platform_device_id table
crypto: omap-aes - select BLKCIPHER2
crypto: camellia - add AES-NI/AVX/x86_64 assembler implementation of camellia cipher
crypto: camellia-x86_64 - share common functions and move structures and function definitions to header file
crypto: tcrypt - add async speed test for camellia cipher
crypto: tegra-aes - fix error-valued pointer dereference
crypto: tegra - fix missing unlock on error case
crypto: cast5/avx - avoid using temporary stack buffers
crypto: serpent/avx - avoid using temporary stack buffers
crypto: twofish/avx - avoid using temporary stack buffers
crypto: cast6/avx - avoid using temporary stack buffers
...

+9375 -1670
+3 -2
Documentation/devicetree/bindings/crypto/fsl-sec4.txt
··· 54 54 - compatible 55 55 Usage: required 56 56 Value type: <string> 57 - Definition: Must include "fsl,sec-v4.0" 57 + Definition: Must include "fsl,sec-v4.0". Also includes SEC 58 + ERA versions (optional) with which the device is compatible. 58 59 59 60 - #address-cells 60 61 Usage: required ··· 107 106 108 107 EXAMPLE 109 108 crypto@300000 { 110 - compatible = "fsl,sec-v4.0"; 109 + compatible = "fsl,sec-v4.0", "fsl,sec-era-v2.0"; 111 110 #address-cells = <1>; 112 111 #size-cells = <1>; 113 112 reg = <0x300000 0x10000>;
+5
arch/x86/crypto/Makefile
··· 12 12 13 13 obj-$(CONFIG_CRYPTO_AES_X86_64) += aes-x86_64.o 14 14 obj-$(CONFIG_CRYPTO_CAMELLIA_X86_64) += camellia-x86_64.o 15 + obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64) += camellia-aesni-avx-x86_64.o 15 16 obj-$(CONFIG_CRYPTO_CAST5_AVX_X86_64) += cast5-avx-x86_64.o 16 17 obj-$(CONFIG_CRYPTO_CAST6_AVX_X86_64) += cast6-avx-x86_64.o 17 18 obj-$(CONFIG_CRYPTO_BLOWFISH_X86_64) += blowfish-x86_64.o ··· 35 34 36 35 aes-x86_64-y := aes-x86_64-asm_64.o aes_glue.o 37 36 camellia-x86_64-y := camellia-x86_64-asm_64.o camellia_glue.o 37 + camellia-aesni-avx-x86_64-y := camellia-aesni-avx-asm_64.o \ 38 + camellia_aesni_avx_glue.o 38 39 cast5-avx-x86_64-y := cast5-avx-x86_64-asm_64.o cast5_avx_glue.o 39 40 cast6-avx-x86_64-y := cast6-avx-x86_64-asm_64.o cast6_avx_glue.o 40 41 blowfish-x86_64-y := blowfish-x86_64-asm_64.o blowfish_glue.o ··· 50 47 aesni-intel-y := aesni-intel_asm.o aesni-intel_glue.o fpu.o 51 48 ghash-clmulni-intel-y := ghash-clmulni-intel_asm.o ghash-clmulni-intel_glue.o 52 49 sha1-ssse3-y := sha1_ssse3_asm.o sha1_ssse3_glue.o 50 + crc32c-intel-y := crc32c-intel_glue.o 51 + crc32c-intel-$(CONFIG_CRYPTO_CRC32C_X86_64) += crc32c-pcl-intel-asm_64.o
+1102
arch/x86/crypto/camellia-aesni-avx-asm_64.S
··· 1 + /* 2 + * x86_64/AVX/AES-NI assembler implementation of Camellia 3 + * 4 + * Copyright © 2012 Jussi Kivilinna <jussi.kivilinna@mbnet.fi> 5 + * 6 + * This program is free software; you can redistribute it and/or modify 7 + * it under the terms of the GNU General Public License as published by 8 + * the Free Software Foundation; either version 2 of the License, or 9 + * (at your option) any later version. 10 + * 11 + */ 12 + 13 + /* 14 + * Version licensed under 2-clause BSD License is available at: 15 + * http://koti.mbnet.fi/axh/crypto/camellia-BSD-1.2.0-aesni1.tar.xz 16 + */ 17 + 18 + #define CAMELLIA_TABLE_BYTE_LEN 272 19 + 20 + /* struct camellia_ctx: */ 21 + #define key_table 0 22 + #define key_length CAMELLIA_TABLE_BYTE_LEN 23 + 24 + /* register macros */ 25 + #define CTX %rdi 26 + 27 + /********************************************************************** 28 + 16-way camellia 29 + **********************************************************************/ 30 + #define filter_8bit(x, lo_t, hi_t, mask4bit, tmp0) \ 31 + vpand x, mask4bit, tmp0; \ 32 + vpandn x, mask4bit, x; \ 33 + vpsrld $4, x, x; \ 34 + \ 35 + vpshufb tmp0, lo_t, tmp0; \ 36 + vpshufb x, hi_t, x; \ 37 + vpxor tmp0, x, x; 38 + 39 + /* 40 + * IN: 41 + * x0..x7: byte-sliced AB state 42 + * mem_cd: register pointer storing CD state 43 + * key: index for key material 44 + * OUT: 45 + * x0..x7: new byte-sliced CD state 46 + */ 47 + #define roundsm16(x0, x1, x2, x3, x4, x5, x6, x7, t0, t1, t2, t3, t4, t5, t6, \ 48 + t7, mem_cd, key) \ 49 + /* \ 50 + * S-function with AES subbytes \ 51 + */ \ 52 + vmovdqa .Linv_shift_row, t4; \ 53 + vbroadcastss .L0f0f0f0f, t7; \ 54 + vmovdqa .Lpre_tf_lo_s1, t0; \ 55 + vmovdqa .Lpre_tf_hi_s1, t1; \ 56 + \ 57 + /* AES inverse shift rows */ \ 58 + vpshufb t4, x0, x0; \ 59 + vpshufb t4, x7, x7; \ 60 + vpshufb t4, x1, x1; \ 61 + vpshufb t4, x4, x4; \ 62 + vpshufb t4, x2, x2; \ 63 + vpshufb t4, x5, x5; \ 64 + vpshufb t4, x3, x3; \ 65 + vpshufb t4, x6, x6; \ 66 + \ 67 + /* prefilter sboxes 1, 2 and 3 */ \ 68 + vmovdqa .Lpre_tf_lo_s4, t2; \ 69 + vmovdqa .Lpre_tf_hi_s4, t3; \ 70 + filter_8bit(x0, t0, t1, t7, t6); \ 71 + filter_8bit(x7, t0, t1, t7, t6); \ 72 + filter_8bit(x1, t0, t1, t7, t6); \ 73 + filter_8bit(x4, t0, t1, t7, t6); \ 74 + filter_8bit(x2, t0, t1, t7, t6); \ 75 + filter_8bit(x5, t0, t1, t7, t6); \ 76 + \ 77 + /* prefilter sbox 4 */ \ 78 + vpxor t4, t4, t4; \ 79 + filter_8bit(x3, t2, t3, t7, t6); \ 80 + filter_8bit(x6, t2, t3, t7, t6); \ 81 + \ 82 + /* AES subbytes + AES shift rows */ \ 83 + vmovdqa .Lpost_tf_lo_s1, t0; \ 84 + vmovdqa .Lpost_tf_hi_s1, t1; \ 85 + vaesenclast t4, x0, x0; \ 86 + vaesenclast t4, x7, x7; \ 87 + vaesenclast t4, x1, x1; \ 88 + vaesenclast t4, x4, x4; \ 89 + vaesenclast t4, x2, x2; \ 90 + vaesenclast t4, x5, x5; \ 91 + vaesenclast t4, x3, x3; \ 92 + vaesenclast t4, x6, x6; \ 93 + \ 94 + /* postfilter sboxes 1 and 4 */ \ 95 + vmovdqa .Lpost_tf_lo_s3, t2; \ 96 + vmovdqa .Lpost_tf_hi_s3, t3; \ 97 + filter_8bit(x0, t0, t1, t7, t6); \ 98 + filter_8bit(x7, t0, t1, t7, t6); \ 99 + filter_8bit(x3, t0, t1, t7, t6); \ 100 + filter_8bit(x6, t0, t1, t7, t6); \ 101 + \ 102 + /* postfilter sbox 3 */ \ 103 + vmovdqa .Lpost_tf_lo_s2, t4; \ 104 + vmovdqa .Lpost_tf_hi_s2, t5; \ 105 + filter_8bit(x2, t2, t3, t7, t6); \ 106 + filter_8bit(x5, t2, t3, t7, t6); \ 107 + \ 108 + vpxor t6, t6, t6; \ 109 + vmovq key, t0; \ 110 + \ 111 + /* postfilter sbox 2 */ \ 112 + filter_8bit(x1, t4, t5, t7, t2); \ 113 + filter_8bit(x4, t4, t5, t7, t2); \ 114 + \ 115 + vpsrldq $5, t0, t5; \ 116 + vpsrldq $1, t0, t1; \ 117 + vpsrldq $2, t0, t2; \ 118 + vpsrldq $3, t0, t3; \ 119 + vpsrldq $4, t0, t4; \ 120 + vpshufb t6, t0, t0; \ 121 + vpshufb t6, t1, t1; \ 122 + vpshufb t6, t2, t2; \ 123 + vpshufb t6, t3, t3; \ 124 + vpshufb t6, t4, t4; \ 125 + vpsrldq $2, t5, t7; \ 126 + vpshufb t6, t7, t7; \ 127 + \ 128 + /* \ 129 + * P-function \ 130 + */ \ 131 + vpxor x5, x0, x0; \ 132 + vpxor x6, x1, x1; \ 133 + vpxor x7, x2, x2; \ 134 + vpxor x4, x3, x3; \ 135 + \ 136 + vpxor x2, x4, x4; \ 137 + vpxor x3, x5, x5; \ 138 + vpxor x0, x6, x6; \ 139 + vpxor x1, x7, x7; \ 140 + \ 141 + vpxor x7, x0, x0; \ 142 + vpxor x4, x1, x1; \ 143 + vpxor x5, x2, x2; \ 144 + vpxor x6, x3, x3; \ 145 + \ 146 + vpxor x3, x4, x4; \ 147 + vpxor x0, x5, x5; \ 148 + vpxor x1, x6, x6; \ 149 + vpxor x2, x7, x7; /* note: high and low parts swapped */ \ 150 + \ 151 + /* \ 152 + * Add key material and result to CD (x becomes new CD) \ 153 + */ \ 154 + \ 155 + vpxor t3, x4, x4; \ 156 + vpxor 0 * 16(mem_cd), x4, x4; \ 157 + \ 158 + vpxor t2, x5, x5; \ 159 + vpxor 1 * 16(mem_cd), x5, x5; \ 160 + \ 161 + vpsrldq $1, t5, t3; \ 162 + vpshufb t6, t5, t5; \ 163 + vpshufb t6, t3, t6; \ 164 + \ 165 + vpxor t1, x6, x6; \ 166 + vpxor 2 * 16(mem_cd), x6, x6; \ 167 + \ 168 + vpxor t0, x7, x7; \ 169 + vpxor 3 * 16(mem_cd), x7, x7; \ 170 + \ 171 + vpxor t7, x0, x0; \ 172 + vpxor 4 * 16(mem_cd), x0, x0; \ 173 + \ 174 + vpxor t6, x1, x1; \ 175 + vpxor 5 * 16(mem_cd), x1, x1; \ 176 + \ 177 + vpxor t5, x2, x2; \ 178 + vpxor 6 * 16(mem_cd), x2, x2; \ 179 + \ 180 + vpxor t4, x3, x3; \ 181 + vpxor 7 * 16(mem_cd), x3, x3; 182 + 183 + /* 184 + * Size optimization... with inlined roundsm16, binary would be over 5 times 185 + * larger and would only be 0.5% faster (on sandy-bridge). 186 + */ 187 + .align 8 188 + roundsm16_x0_x1_x2_x3_x4_x5_x6_x7_y0_y1_y2_y3_y4_y5_y6_y7_cd: 189 + roundsm16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 190 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, %xmm15, 191 + %rcx, (%r9)); 192 + ret; 193 + 194 + .align 8 195 + roundsm16_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab: 196 + roundsm16(%xmm4, %xmm5, %xmm6, %xmm7, %xmm0, %xmm1, %xmm2, %xmm3, 197 + %xmm12, %xmm13, %xmm14, %xmm15, %xmm8, %xmm9, %xmm10, %xmm11, 198 + %rax, (%r9)); 199 + ret; 200 + 201 + /* 202 + * IN/OUT: 203 + * x0..x7: byte-sliced AB state preloaded 204 + * mem_ab: byte-sliced AB state in memory 205 + * mem_cb: byte-sliced CD state in memory 206 + */ 207 + #define two_roundsm16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 208 + y6, y7, mem_ab, mem_cd, i, dir, store_ab) \ 209 + leaq (key_table + (i) * 8)(CTX), %r9; \ 210 + call roundsm16_x0_x1_x2_x3_x4_x5_x6_x7_y0_y1_y2_y3_y4_y5_y6_y7_cd; \ 211 + \ 212 + vmovdqu x4, 0 * 16(mem_cd); \ 213 + vmovdqu x5, 1 * 16(mem_cd); \ 214 + vmovdqu x6, 2 * 16(mem_cd); \ 215 + vmovdqu x7, 3 * 16(mem_cd); \ 216 + vmovdqu x0, 4 * 16(mem_cd); \ 217 + vmovdqu x1, 5 * 16(mem_cd); \ 218 + vmovdqu x2, 6 * 16(mem_cd); \ 219 + vmovdqu x3, 7 * 16(mem_cd); \ 220 + \ 221 + leaq (key_table + ((i) + (dir)) * 8)(CTX), %r9; \ 222 + call roundsm16_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab; \ 223 + \ 224 + store_ab(x0, x1, x2, x3, x4, x5, x6, x7, mem_ab); 225 + 226 + #define dummy_store(x0, x1, x2, x3, x4, x5, x6, x7, mem_ab) /* do nothing */ 227 + 228 + #define store_ab_state(x0, x1, x2, x3, x4, x5, x6, x7, mem_ab) \ 229 + /* Store new AB state */ \ 230 + vmovdqu x0, 0 * 16(mem_ab); \ 231 + vmovdqu x1, 1 * 16(mem_ab); \ 232 + vmovdqu x2, 2 * 16(mem_ab); \ 233 + vmovdqu x3, 3 * 16(mem_ab); \ 234 + vmovdqu x4, 4 * 16(mem_ab); \ 235 + vmovdqu x5, 5 * 16(mem_ab); \ 236 + vmovdqu x6, 6 * 16(mem_ab); \ 237 + vmovdqu x7, 7 * 16(mem_ab); 238 + 239 + #define enc_rounds16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 240 + y6, y7, mem_ab, mem_cd, i) \ 241 + two_roundsm16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 242 + y6, y7, mem_ab, mem_cd, (i) + 2, 1, store_ab_state); \ 243 + two_roundsm16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 244 + y6, y7, mem_ab, mem_cd, (i) + 4, 1, store_ab_state); \ 245 + two_roundsm16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 246 + y6, y7, mem_ab, mem_cd, (i) + 6, 1, dummy_store); 247 + 248 + #define dec_rounds16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 249 + y6, y7, mem_ab, mem_cd, i) \ 250 + two_roundsm16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 251 + y6, y7, mem_ab, mem_cd, (i) + 7, -1, store_ab_state); \ 252 + two_roundsm16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 253 + y6, y7, mem_ab, mem_cd, (i) + 5, -1, store_ab_state); \ 254 + two_roundsm16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 255 + y6, y7, mem_ab, mem_cd, (i) + 3, -1, dummy_store); 256 + 257 + /* 258 + * IN: 259 + * v0..3: byte-sliced 32-bit integers 260 + * OUT: 261 + * v0..3: (IN <<< 1) 262 + */ 263 + #define rol32_1_16(v0, v1, v2, v3, t0, t1, t2, zero) \ 264 + vpcmpgtb v0, zero, t0; \ 265 + vpaddb v0, v0, v0; \ 266 + vpabsb t0, t0; \ 267 + \ 268 + vpcmpgtb v1, zero, t1; \ 269 + vpaddb v1, v1, v1; \ 270 + vpabsb t1, t1; \ 271 + \ 272 + vpcmpgtb v2, zero, t2; \ 273 + vpaddb v2, v2, v2; \ 274 + vpabsb t2, t2; \ 275 + \ 276 + vpor t0, v1, v1; \ 277 + \ 278 + vpcmpgtb v3, zero, t0; \ 279 + vpaddb v3, v3, v3; \ 280 + vpabsb t0, t0; \ 281 + \ 282 + vpor t1, v2, v2; \ 283 + vpor t2, v3, v3; \ 284 + vpor t0, v0, v0; 285 + 286 + /* 287 + * IN: 288 + * r: byte-sliced AB state in memory 289 + * l: byte-sliced CD state in memory 290 + * OUT: 291 + * x0..x7: new byte-sliced CD state 292 + */ 293 + #define fls16(l, l0, l1, l2, l3, l4, l5, l6, l7, r, t0, t1, t2, t3, tt0, \ 294 + tt1, tt2, tt3, kll, klr, krl, krr) \ 295 + /* \ 296 + * t0 = kll; \ 297 + * t0 &= ll; \ 298 + * lr ^= rol32(t0, 1); \ 299 + */ \ 300 + vpxor tt0, tt0, tt0; \ 301 + vmovd kll, t0; \ 302 + vpshufb tt0, t0, t3; \ 303 + vpsrldq $1, t0, t0; \ 304 + vpshufb tt0, t0, t2; \ 305 + vpsrldq $1, t0, t0; \ 306 + vpshufb tt0, t0, t1; \ 307 + vpsrldq $1, t0, t0; \ 308 + vpshufb tt0, t0, t0; \ 309 + \ 310 + vpand l0, t0, t0; \ 311 + vpand l1, t1, t1; \ 312 + vpand l2, t2, t2; \ 313 + vpand l3, t3, t3; \ 314 + \ 315 + rol32_1_16(t3, t2, t1, t0, tt1, tt2, tt3, tt0); \ 316 + \ 317 + vpxor l4, t0, l4; \ 318 + vmovdqu l4, 4 * 16(l); \ 319 + vpxor l5, t1, l5; \ 320 + vmovdqu l5, 5 * 16(l); \ 321 + vpxor l6, t2, l6; \ 322 + vmovdqu l6, 6 * 16(l); \ 323 + vpxor l7, t3, l7; \ 324 + vmovdqu l7, 7 * 16(l); \ 325 + \ 326 + /* \ 327 + * t2 = krr; \ 328 + * t2 |= rr; \ 329 + * rl ^= t2; \ 330 + */ \ 331 + \ 332 + vmovd krr, t0; \ 333 + vpshufb tt0, t0, t3; \ 334 + vpsrldq $1, t0, t0; \ 335 + vpshufb tt0, t0, t2; \ 336 + vpsrldq $1, t0, t0; \ 337 + vpshufb tt0, t0, t1; \ 338 + vpsrldq $1, t0, t0; \ 339 + vpshufb tt0, t0, t0; \ 340 + \ 341 + vpor 4 * 16(r), t0, t0; \ 342 + vpor 5 * 16(r), t1, t1; \ 343 + vpor 6 * 16(r), t2, t2; \ 344 + vpor 7 * 16(r), t3, t3; \ 345 + \ 346 + vpxor 0 * 16(r), t0, t0; \ 347 + vpxor 1 * 16(r), t1, t1; \ 348 + vpxor 2 * 16(r), t2, t2; \ 349 + vpxor 3 * 16(r), t3, t3; \ 350 + vmovdqu t0, 0 * 16(r); \ 351 + vmovdqu t1, 1 * 16(r); \ 352 + vmovdqu t2, 2 * 16(r); \ 353 + vmovdqu t3, 3 * 16(r); \ 354 + \ 355 + /* \ 356 + * t2 = krl; \ 357 + * t2 &= rl; \ 358 + * rr ^= rol32(t2, 1); \ 359 + */ \ 360 + vmovd krl, t0; \ 361 + vpshufb tt0, t0, t3; \ 362 + vpsrldq $1, t0, t0; \ 363 + vpshufb tt0, t0, t2; \ 364 + vpsrldq $1, t0, t0; \ 365 + vpshufb tt0, t0, t1; \ 366 + vpsrldq $1, t0, t0; \ 367 + vpshufb tt0, t0, t0; \ 368 + \ 369 + vpand 0 * 16(r), t0, t0; \ 370 + vpand 1 * 16(r), t1, t1; \ 371 + vpand 2 * 16(r), t2, t2; \ 372 + vpand 3 * 16(r), t3, t3; \ 373 + \ 374 + rol32_1_16(t3, t2, t1, t0, tt1, tt2, tt3, tt0); \ 375 + \ 376 + vpxor 4 * 16(r), t0, t0; \ 377 + vpxor 5 * 16(r), t1, t1; \ 378 + vpxor 6 * 16(r), t2, t2; \ 379 + vpxor 7 * 16(r), t3, t3; \ 380 + vmovdqu t0, 4 * 16(r); \ 381 + vmovdqu t1, 5 * 16(r); \ 382 + vmovdqu t2, 6 * 16(r); \ 383 + vmovdqu t3, 7 * 16(r); \ 384 + \ 385 + /* \ 386 + * t0 = klr; \ 387 + * t0 |= lr; \ 388 + * ll ^= t0; \ 389 + */ \ 390 + \ 391 + vmovd klr, t0; \ 392 + vpshufb tt0, t0, t3; \ 393 + vpsrldq $1, t0, t0; \ 394 + vpshufb tt0, t0, t2; \ 395 + vpsrldq $1, t0, t0; \ 396 + vpshufb tt0, t0, t1; \ 397 + vpsrldq $1, t0, t0; \ 398 + vpshufb tt0, t0, t0; \ 399 + \ 400 + vpor l4, t0, t0; \ 401 + vpor l5, t1, t1; \ 402 + vpor l6, t2, t2; \ 403 + vpor l7, t3, t3; \ 404 + \ 405 + vpxor l0, t0, l0; \ 406 + vmovdqu l0, 0 * 16(l); \ 407 + vpxor l1, t1, l1; \ 408 + vmovdqu l1, 1 * 16(l); \ 409 + vpxor l2, t2, l2; \ 410 + vmovdqu l2, 2 * 16(l); \ 411 + vpxor l3, t3, l3; \ 412 + vmovdqu l3, 3 * 16(l); 413 + 414 + #define transpose_4x4(x0, x1, x2, x3, t1, t2) \ 415 + vpunpckhdq x1, x0, t2; \ 416 + vpunpckldq x1, x0, x0; \ 417 + \ 418 + vpunpckldq x3, x2, t1; \ 419 + vpunpckhdq x3, x2, x2; \ 420 + \ 421 + vpunpckhqdq t1, x0, x1; \ 422 + vpunpcklqdq t1, x0, x0; \ 423 + \ 424 + vpunpckhqdq x2, t2, x3; \ 425 + vpunpcklqdq x2, t2, x2; 426 + 427 + #define byteslice_16x16b(a0, b0, c0, d0, a1, b1, c1, d1, a2, b2, c2, d2, a3, \ 428 + b3, c3, d3, st0, st1) \ 429 + vmovdqu d2, st0; \ 430 + vmovdqu d3, st1; \ 431 + transpose_4x4(a0, a1, a2, a3, d2, d3); \ 432 + transpose_4x4(b0, b1, b2, b3, d2, d3); \ 433 + vmovdqu st0, d2; \ 434 + vmovdqu st1, d3; \ 435 + \ 436 + vmovdqu a0, st0; \ 437 + vmovdqu a1, st1; \ 438 + transpose_4x4(c0, c1, c2, c3, a0, a1); \ 439 + transpose_4x4(d0, d1, d2, d3, a0, a1); \ 440 + \ 441 + vmovdqu .Lshufb_16x16b, a0; \ 442 + vmovdqu st1, a1; \ 443 + vpshufb a0, a2, a2; \ 444 + vpshufb a0, a3, a3; \ 445 + vpshufb a0, b0, b0; \ 446 + vpshufb a0, b1, b1; \ 447 + vpshufb a0, b2, b2; \ 448 + vpshufb a0, b3, b3; \ 449 + vpshufb a0, a1, a1; \ 450 + vpshufb a0, c0, c0; \ 451 + vpshufb a0, c1, c1; \ 452 + vpshufb a0, c2, c2; \ 453 + vpshufb a0, c3, c3; \ 454 + vpshufb a0, d0, d0; \ 455 + vpshufb a0, d1, d1; \ 456 + vpshufb a0, d2, d2; \ 457 + vpshufb a0, d3, d3; \ 458 + vmovdqu d3, st1; \ 459 + vmovdqu st0, d3; \ 460 + vpshufb a0, d3, a0; \ 461 + vmovdqu d2, st0; \ 462 + \ 463 + transpose_4x4(a0, b0, c0, d0, d2, d3); \ 464 + transpose_4x4(a1, b1, c1, d1, d2, d3); \ 465 + vmovdqu st0, d2; \ 466 + vmovdqu st1, d3; \ 467 + \ 468 + vmovdqu b0, st0; \ 469 + vmovdqu b1, st1; \ 470 + transpose_4x4(a2, b2, c2, d2, b0, b1); \ 471 + transpose_4x4(a3, b3, c3, d3, b0, b1); \ 472 + vmovdqu st0, b0; \ 473 + vmovdqu st1, b1; \ 474 + /* does not adjust output bytes inside vectors */ 475 + 476 + /* load blocks to registers and apply pre-whitening */ 477 + #define inpack16_pre(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 478 + y6, y7, rio, key) \ 479 + vmovq key, x0; \ 480 + vpshufb .Lpack_bswap, x0, x0; \ 481 + \ 482 + vpxor 0 * 16(rio), x0, y7; \ 483 + vpxor 1 * 16(rio), x0, y6; \ 484 + vpxor 2 * 16(rio), x0, y5; \ 485 + vpxor 3 * 16(rio), x0, y4; \ 486 + vpxor 4 * 16(rio), x0, y3; \ 487 + vpxor 5 * 16(rio), x0, y2; \ 488 + vpxor 6 * 16(rio), x0, y1; \ 489 + vpxor 7 * 16(rio), x0, y0; \ 490 + vpxor 8 * 16(rio), x0, x7; \ 491 + vpxor 9 * 16(rio), x0, x6; \ 492 + vpxor 10 * 16(rio), x0, x5; \ 493 + vpxor 11 * 16(rio), x0, x4; \ 494 + vpxor 12 * 16(rio), x0, x3; \ 495 + vpxor 13 * 16(rio), x0, x2; \ 496 + vpxor 14 * 16(rio), x0, x1; \ 497 + vpxor 15 * 16(rio), x0, x0; 498 + 499 + /* byteslice pre-whitened blocks and store to temporary memory */ 500 + #define inpack16_post(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 501 + y6, y7, mem_ab, mem_cd) \ 502 + byteslice_16x16b(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, \ 503 + y5, y6, y7, (mem_ab), (mem_cd)); \ 504 + \ 505 + vmovdqu x0, 0 * 16(mem_ab); \ 506 + vmovdqu x1, 1 * 16(mem_ab); \ 507 + vmovdqu x2, 2 * 16(mem_ab); \ 508 + vmovdqu x3, 3 * 16(mem_ab); \ 509 + vmovdqu x4, 4 * 16(mem_ab); \ 510 + vmovdqu x5, 5 * 16(mem_ab); \ 511 + vmovdqu x6, 6 * 16(mem_ab); \ 512 + vmovdqu x7, 7 * 16(mem_ab); \ 513 + vmovdqu y0, 0 * 16(mem_cd); \ 514 + vmovdqu y1, 1 * 16(mem_cd); \ 515 + vmovdqu y2, 2 * 16(mem_cd); \ 516 + vmovdqu y3, 3 * 16(mem_cd); \ 517 + vmovdqu y4, 4 * 16(mem_cd); \ 518 + vmovdqu y5, 5 * 16(mem_cd); \ 519 + vmovdqu y6, 6 * 16(mem_cd); \ 520 + vmovdqu y7, 7 * 16(mem_cd); 521 + 522 + /* de-byteslice, apply post-whitening and store blocks */ 523 + #define outunpack16(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, \ 524 + y5, y6, y7, key, stack_tmp0, stack_tmp1) \ 525 + byteslice_16x16b(y0, y4, x0, x4, y1, y5, x1, x5, y2, y6, x2, x6, y3, \ 526 + y7, x3, x7, stack_tmp0, stack_tmp1); \ 527 + \ 528 + vmovdqu x0, stack_tmp0; \ 529 + \ 530 + vmovq key, x0; \ 531 + vpshufb .Lpack_bswap, x0, x0; \ 532 + \ 533 + vpxor x0, y7, y7; \ 534 + vpxor x0, y6, y6; \ 535 + vpxor x0, y5, y5; \ 536 + vpxor x0, y4, y4; \ 537 + vpxor x0, y3, y3; \ 538 + vpxor x0, y2, y2; \ 539 + vpxor x0, y1, y1; \ 540 + vpxor x0, y0, y0; \ 541 + vpxor x0, x7, x7; \ 542 + vpxor x0, x6, x6; \ 543 + vpxor x0, x5, x5; \ 544 + vpxor x0, x4, x4; \ 545 + vpxor x0, x3, x3; \ 546 + vpxor x0, x2, x2; \ 547 + vpxor x0, x1, x1; \ 548 + vpxor stack_tmp0, x0, x0; 549 + 550 + #define write_output(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ 551 + y6, y7, rio) \ 552 + vmovdqu x0, 0 * 16(rio); \ 553 + vmovdqu x1, 1 * 16(rio); \ 554 + vmovdqu x2, 2 * 16(rio); \ 555 + vmovdqu x3, 3 * 16(rio); \ 556 + vmovdqu x4, 4 * 16(rio); \ 557 + vmovdqu x5, 5 * 16(rio); \ 558 + vmovdqu x6, 6 * 16(rio); \ 559 + vmovdqu x7, 7 * 16(rio); \ 560 + vmovdqu y0, 8 * 16(rio); \ 561 + vmovdqu y1, 9 * 16(rio); \ 562 + vmovdqu y2, 10 * 16(rio); \ 563 + vmovdqu y3, 11 * 16(rio); \ 564 + vmovdqu y4, 12 * 16(rio); \ 565 + vmovdqu y5, 13 * 16(rio); \ 566 + vmovdqu y6, 14 * 16(rio); \ 567 + vmovdqu y7, 15 * 16(rio); 568 + 569 + .data 570 + .align 16 571 + 572 + #define SHUFB_BYTES(idx) \ 573 + 0 + (idx), 4 + (idx), 8 + (idx), 12 + (idx) 574 + 575 + .Lshufb_16x16b: 576 + .byte SHUFB_BYTES(0), SHUFB_BYTES(1), SHUFB_BYTES(2), SHUFB_BYTES(3); 577 + 578 + .Lpack_bswap: 579 + .long 0x00010203 580 + .long 0x04050607 581 + .long 0x80808080 582 + .long 0x80808080 583 + 584 + /* For CTR-mode IV byteswap */ 585 + .Lbswap128_mask: 586 + .byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 587 + 588 + /* 589 + * pre-SubByte transform 590 + * 591 + * pre-lookup for sbox1, sbox2, sbox3: 592 + * swap_bitendianness( 593 + * isom_map_camellia_to_aes( 594 + * camellia_f( 595 + * swap_bitendianess(in) 596 + * ) 597 + * ) 598 + * ) 599 + * 600 + * (note: '⊕ 0xc5' inside camellia_f()) 601 + */ 602 + .Lpre_tf_lo_s1: 603 + .byte 0x45, 0xe8, 0x40, 0xed, 0x2e, 0x83, 0x2b, 0x86 604 + .byte 0x4b, 0xe6, 0x4e, 0xe3, 0x20, 0x8d, 0x25, 0x88 605 + .Lpre_tf_hi_s1: 606 + .byte 0x00, 0x51, 0xf1, 0xa0, 0x8a, 0xdb, 0x7b, 0x2a 607 + .byte 0x09, 0x58, 0xf8, 0xa9, 0x83, 0xd2, 0x72, 0x23 608 + 609 + /* 610 + * pre-SubByte transform 611 + * 612 + * pre-lookup for sbox4: 613 + * swap_bitendianness( 614 + * isom_map_camellia_to_aes( 615 + * camellia_f( 616 + * swap_bitendianess(in <<< 1) 617 + * ) 618 + * ) 619 + * ) 620 + * 621 + * (note: '⊕ 0xc5' inside camellia_f()) 622 + */ 623 + .Lpre_tf_lo_s4: 624 + .byte 0x45, 0x40, 0x2e, 0x2b, 0x4b, 0x4e, 0x20, 0x25 625 + .byte 0x14, 0x11, 0x7f, 0x7a, 0x1a, 0x1f, 0x71, 0x74 626 + .Lpre_tf_hi_s4: 627 + .byte 0x00, 0xf1, 0x8a, 0x7b, 0x09, 0xf8, 0x83, 0x72 628 + .byte 0xad, 0x5c, 0x27, 0xd6, 0xa4, 0x55, 0x2e, 0xdf 629 + 630 + /* 631 + * post-SubByte transform 632 + * 633 + * post-lookup for sbox1, sbox4: 634 + * swap_bitendianness( 635 + * camellia_h( 636 + * isom_map_aes_to_camellia( 637 + * swap_bitendianness( 638 + * aes_inverse_affine_transform(in) 639 + * ) 640 + * ) 641 + * ) 642 + * ) 643 + * 644 + * (note: '⊕ 0x6e' inside camellia_h()) 645 + */ 646 + .Lpost_tf_lo_s1: 647 + .byte 0x3c, 0xcc, 0xcf, 0x3f, 0x32, 0xc2, 0xc1, 0x31 648 + .byte 0xdc, 0x2c, 0x2f, 0xdf, 0xd2, 0x22, 0x21, 0xd1 649 + .Lpost_tf_hi_s1: 650 + .byte 0x00, 0xf9, 0x86, 0x7f, 0xd7, 0x2e, 0x51, 0xa8 651 + .byte 0xa4, 0x5d, 0x22, 0xdb, 0x73, 0x8a, 0xf5, 0x0c 652 + 653 + /* 654 + * post-SubByte transform 655 + * 656 + * post-lookup for sbox2: 657 + * swap_bitendianness( 658 + * camellia_h( 659 + * isom_map_aes_to_camellia( 660 + * swap_bitendianness( 661 + * aes_inverse_affine_transform(in) 662 + * ) 663 + * ) 664 + * ) 665 + * ) <<< 1 666 + * 667 + * (note: '⊕ 0x6e' inside camellia_h()) 668 + */ 669 + .Lpost_tf_lo_s2: 670 + .byte 0x78, 0x99, 0x9f, 0x7e, 0x64, 0x85, 0x83, 0x62 671 + .byte 0xb9, 0x58, 0x5e, 0xbf, 0xa5, 0x44, 0x42, 0xa3 672 + .Lpost_tf_hi_s2: 673 + .byte 0x00, 0xf3, 0x0d, 0xfe, 0xaf, 0x5c, 0xa2, 0x51 674 + .byte 0x49, 0xba, 0x44, 0xb7, 0xe6, 0x15, 0xeb, 0x18 675 + 676 + /* 677 + * post-SubByte transform 678 + * 679 + * post-lookup for sbox3: 680 + * swap_bitendianness( 681 + * camellia_h( 682 + * isom_map_aes_to_camellia( 683 + * swap_bitendianness( 684 + * aes_inverse_affine_transform(in) 685 + * ) 686 + * ) 687 + * ) 688 + * ) >>> 1 689 + * 690 + * (note: '⊕ 0x6e' inside camellia_h()) 691 + */ 692 + .Lpost_tf_lo_s3: 693 + .byte 0x1e, 0x66, 0xe7, 0x9f, 0x19, 0x61, 0xe0, 0x98 694 + .byte 0x6e, 0x16, 0x97, 0xef, 0x69, 0x11, 0x90, 0xe8 695 + .Lpost_tf_hi_s3: 696 + .byte 0x00, 0xfc, 0x43, 0xbf, 0xeb, 0x17, 0xa8, 0x54 697 + .byte 0x52, 0xae, 0x11, 0xed, 0xb9, 0x45, 0xfa, 0x06 698 + 699 + /* For isolating SubBytes from AESENCLAST, inverse shift row */ 700 + .Linv_shift_row: 701 + .byte 0x00, 0x0d, 0x0a, 0x07, 0x04, 0x01, 0x0e, 0x0b 702 + .byte 0x08, 0x05, 0x02, 0x0f, 0x0c, 0x09, 0x06, 0x03 703 + 704 + /* 4-bit mask */ 705 + .align 4 706 + .L0f0f0f0f: 707 + .long 0x0f0f0f0f 708 + 709 + .text 710 + 711 + .align 8 712 + .type __camellia_enc_blk16,@function; 713 + 714 + __camellia_enc_blk16: 715 + /* input: 716 + * %rdi: ctx, CTX 717 + * %rax: temporary storage, 256 bytes 718 + * %xmm0..%xmm15: 16 plaintext blocks 719 + * output: 720 + * %xmm0..%xmm15: 16 encrypted blocks, order swapped: 721 + * 7, 8, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 722 + */ 723 + 724 + leaq 8 * 16(%rax), %rcx; 725 + 726 + inpack16_post(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 727 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 728 + %xmm15, %rax, %rcx); 729 + 730 + enc_rounds16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 731 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 732 + %xmm15, %rax, %rcx, 0); 733 + 734 + fls16(%rax, %xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 735 + %rcx, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 736 + %xmm15, 737 + ((key_table + (8) * 8) + 0)(CTX), 738 + ((key_table + (8) * 8) + 4)(CTX), 739 + ((key_table + (8) * 8) + 8)(CTX), 740 + ((key_table + (8) * 8) + 12)(CTX)); 741 + 742 + enc_rounds16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 743 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 744 + %xmm15, %rax, %rcx, 8); 745 + 746 + fls16(%rax, %xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 747 + %rcx, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 748 + %xmm15, 749 + ((key_table + (16) * 8) + 0)(CTX), 750 + ((key_table + (16) * 8) + 4)(CTX), 751 + ((key_table + (16) * 8) + 8)(CTX), 752 + ((key_table + (16) * 8) + 12)(CTX)); 753 + 754 + enc_rounds16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 755 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 756 + %xmm15, %rax, %rcx, 16); 757 + 758 + movl $24, %r8d; 759 + cmpl $16, key_length(CTX); 760 + jne .Lenc_max32; 761 + 762 + .Lenc_done: 763 + /* load CD for output */ 764 + vmovdqu 0 * 16(%rcx), %xmm8; 765 + vmovdqu 1 * 16(%rcx), %xmm9; 766 + vmovdqu 2 * 16(%rcx), %xmm10; 767 + vmovdqu 3 * 16(%rcx), %xmm11; 768 + vmovdqu 4 * 16(%rcx), %xmm12; 769 + vmovdqu 5 * 16(%rcx), %xmm13; 770 + vmovdqu 6 * 16(%rcx), %xmm14; 771 + vmovdqu 7 * 16(%rcx), %xmm15; 772 + 773 + outunpack16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 774 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 775 + %xmm15, (key_table)(CTX, %r8, 8), (%rax), 1 * 16(%rax)); 776 + 777 + ret; 778 + 779 + .align 8 780 + .Lenc_max32: 781 + movl $32, %r8d; 782 + 783 + fls16(%rax, %xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 784 + %rcx, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 785 + %xmm15, 786 + ((key_table + (24) * 8) + 0)(CTX), 787 + ((key_table + (24) * 8) + 4)(CTX), 788 + ((key_table + (24) * 8) + 8)(CTX), 789 + ((key_table + (24) * 8) + 12)(CTX)); 790 + 791 + enc_rounds16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 792 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 793 + %xmm15, %rax, %rcx, 24); 794 + 795 + jmp .Lenc_done; 796 + 797 + .align 8 798 + .type __camellia_dec_blk16,@function; 799 + 800 + __camellia_dec_blk16: 801 + /* input: 802 + * %rdi: ctx, CTX 803 + * %rax: temporary storage, 256 bytes 804 + * %r8d: 24 for 16 byte key, 32 for larger 805 + * %xmm0..%xmm15: 16 encrypted blocks 806 + * output: 807 + * %xmm0..%xmm15: 16 plaintext blocks, order swapped: 808 + * 7, 8, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 809 + */ 810 + 811 + leaq 8 * 16(%rax), %rcx; 812 + 813 + inpack16_post(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 814 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 815 + %xmm15, %rax, %rcx); 816 + 817 + cmpl $32, %r8d; 818 + je .Ldec_max32; 819 + 820 + .Ldec_max24: 821 + dec_rounds16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 822 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 823 + %xmm15, %rax, %rcx, 16); 824 + 825 + fls16(%rax, %xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 826 + %rcx, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 827 + %xmm15, 828 + ((key_table + (16) * 8) + 8)(CTX), 829 + ((key_table + (16) * 8) + 12)(CTX), 830 + ((key_table + (16) * 8) + 0)(CTX), 831 + ((key_table + (16) * 8) + 4)(CTX)); 832 + 833 + dec_rounds16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 834 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 835 + %xmm15, %rax, %rcx, 8); 836 + 837 + fls16(%rax, %xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 838 + %rcx, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 839 + %xmm15, 840 + ((key_table + (8) * 8) + 8)(CTX), 841 + ((key_table + (8) * 8) + 12)(CTX), 842 + ((key_table + (8) * 8) + 0)(CTX), 843 + ((key_table + (8) * 8) + 4)(CTX)); 844 + 845 + dec_rounds16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 846 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 847 + %xmm15, %rax, %rcx, 0); 848 + 849 + /* load CD for output */ 850 + vmovdqu 0 * 16(%rcx), %xmm8; 851 + vmovdqu 1 * 16(%rcx), %xmm9; 852 + vmovdqu 2 * 16(%rcx), %xmm10; 853 + vmovdqu 3 * 16(%rcx), %xmm11; 854 + vmovdqu 4 * 16(%rcx), %xmm12; 855 + vmovdqu 5 * 16(%rcx), %xmm13; 856 + vmovdqu 6 * 16(%rcx), %xmm14; 857 + vmovdqu 7 * 16(%rcx), %xmm15; 858 + 859 + outunpack16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 860 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 861 + %xmm15, (key_table)(CTX), (%rax), 1 * 16(%rax)); 862 + 863 + ret; 864 + 865 + .align 8 866 + .Ldec_max32: 867 + dec_rounds16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 868 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 869 + %xmm15, %rax, %rcx, 24); 870 + 871 + fls16(%rax, %xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 872 + %rcx, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 873 + %xmm15, 874 + ((key_table + (24) * 8) + 8)(CTX), 875 + ((key_table + (24) * 8) + 12)(CTX), 876 + ((key_table + (24) * 8) + 0)(CTX), 877 + ((key_table + (24) * 8) + 4)(CTX)); 878 + 879 + jmp .Ldec_max24; 880 + 881 + .align 8 882 + .global camellia_ecb_enc_16way 883 + .type camellia_ecb_enc_16way,@function; 884 + 885 + camellia_ecb_enc_16way: 886 + /* input: 887 + * %rdi: ctx, CTX 888 + * %rsi: dst (16 blocks) 889 + * %rdx: src (16 blocks) 890 + */ 891 + 892 + inpack16_pre(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 893 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 894 + %xmm15, %rdx, (key_table)(CTX)); 895 + 896 + /* now dst can be used as temporary buffer (even in src == dst case) */ 897 + movq %rsi, %rax; 898 + 899 + call __camellia_enc_blk16; 900 + 901 + write_output(%xmm7, %xmm6, %xmm5, %xmm4, %xmm3, %xmm2, %xmm1, %xmm0, 902 + %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9, 903 + %xmm8, %rsi); 904 + 905 + ret; 906 + 907 + .align 8 908 + .global camellia_ecb_dec_16way 909 + .type camellia_ecb_dec_16way,@function; 910 + 911 + camellia_ecb_dec_16way: 912 + /* input: 913 + * %rdi: ctx, CTX 914 + * %rsi: dst (16 blocks) 915 + * %rdx: src (16 blocks) 916 + */ 917 + 918 + cmpl $16, key_length(CTX); 919 + movl $32, %r8d; 920 + movl $24, %eax; 921 + cmovel %eax, %r8d; /* max */ 922 + 923 + inpack16_pre(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 924 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 925 + %xmm15, %rdx, (key_table)(CTX, %r8, 8)); 926 + 927 + /* now dst can be used as temporary buffer (even in src == dst case) */ 928 + movq %rsi, %rax; 929 + 930 + call __camellia_dec_blk16; 931 + 932 + write_output(%xmm7, %xmm6, %xmm5, %xmm4, %xmm3, %xmm2, %xmm1, %xmm0, 933 + %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9, 934 + %xmm8, %rsi); 935 + 936 + ret; 937 + 938 + .align 8 939 + .global camellia_cbc_dec_16way 940 + .type camellia_cbc_dec_16way,@function; 941 + 942 + camellia_cbc_dec_16way: 943 + /* input: 944 + * %rdi: ctx, CTX 945 + * %rsi: dst (16 blocks) 946 + * %rdx: src (16 blocks) 947 + */ 948 + 949 + cmpl $16, key_length(CTX); 950 + movl $32, %r8d; 951 + movl $24, %eax; 952 + cmovel %eax, %r8d; /* max */ 953 + 954 + inpack16_pre(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, 955 + %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, 956 + %xmm15, %rdx, (key_table)(CTX, %r8, 8)); 957 + 958 + /* 959 + * dst might still be in-use (in case dst == src), so use stack for 960 + * temporary storage. 961 + */ 962 + subq $(16 * 16), %rsp; 963 + movq %rsp, %rax; 964 + 965 + call __camellia_dec_blk16; 966 + 967 + addq $(16 * 16), %rsp; 968 + 969 + vpxor (0 * 16)(%rdx), %xmm6, %xmm6; 970 + vpxor (1 * 16)(%rdx), %xmm5, %xmm5; 971 + vpxor (2 * 16)(%rdx), %xmm4, %xmm4; 972 + vpxor (3 * 16)(%rdx), %xmm3, %xmm3; 973 + vpxor (4 * 16)(%rdx), %xmm2, %xmm2; 974 + vpxor (5 * 16)(%rdx), %xmm1, %xmm1; 975 + vpxor (6 * 16)(%rdx), %xmm0, %xmm0; 976 + vpxor (7 * 16)(%rdx), %xmm15, %xmm15; 977 + vpxor (8 * 16)(%rdx), %xmm14, %xmm14; 978 + vpxor (9 * 16)(%rdx), %xmm13, %xmm13; 979 + vpxor (10 * 16)(%rdx), %xmm12, %xmm12; 980 + vpxor (11 * 16)(%rdx), %xmm11, %xmm11; 981 + vpxor (12 * 16)(%rdx), %xmm10, %xmm10; 982 + vpxor (13 * 16)(%rdx), %xmm9, %xmm9; 983 + vpxor (14 * 16)(%rdx), %xmm8, %xmm8; 984 + write_output(%xmm7, %xmm6, %xmm5, %xmm4, %xmm3, %xmm2, %xmm1, %xmm0, 985 + %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9, 986 + %xmm8, %rsi); 987 + 988 + ret; 989 + 990 + #define inc_le128(x, minus_one, tmp) \ 991 + vpcmpeqq minus_one, x, tmp; \ 992 + vpsubq minus_one, x, x; \ 993 + vpslldq $8, tmp, tmp; \ 994 + vpsubq tmp, x, x; 995 + 996 + .align 8 997 + .global camellia_ctr_16way 998 + .type camellia_ctr_16way,@function; 999 + 1000 + camellia_ctr_16way: 1001 + /* input: 1002 + * %rdi: ctx, CTX 1003 + * %rsi: dst (16 blocks) 1004 + * %rdx: src (16 blocks) 1005 + * %rcx: iv (little endian, 128bit) 1006 + */ 1007 + 1008 + subq $(16 * 16), %rsp; 1009 + movq %rsp, %rax; 1010 + 1011 + vmovdqa .Lbswap128_mask, %xmm14; 1012 + 1013 + /* load IV and byteswap */ 1014 + vmovdqu (%rcx), %xmm0; 1015 + vpshufb %xmm14, %xmm0, %xmm15; 1016 + vmovdqu %xmm15, 15 * 16(%rax); 1017 + 1018 + vpcmpeqd %xmm15, %xmm15, %xmm15; 1019 + vpsrldq $8, %xmm15, %xmm15; /* low: -1, high: 0 */ 1020 + 1021 + /* construct IVs */ 1022 + inc_le128(%xmm0, %xmm15, %xmm13); 1023 + vpshufb %xmm14, %xmm0, %xmm13; 1024 + vmovdqu %xmm13, 14 * 16(%rax); 1025 + inc_le128(%xmm0, %xmm15, %xmm13); 1026 + vpshufb %xmm14, %xmm0, %xmm13; 1027 + vmovdqu %xmm13, 13 * 16(%rax); 1028 + inc_le128(%xmm0, %xmm15, %xmm13); 1029 + vpshufb %xmm14, %xmm0, %xmm12; 1030 + inc_le128(%xmm0, %xmm15, %xmm13); 1031 + vpshufb %xmm14, %xmm0, %xmm11; 1032 + inc_le128(%xmm0, %xmm15, %xmm13); 1033 + vpshufb %xmm14, %xmm0, %xmm10; 1034 + inc_le128(%xmm0, %xmm15, %xmm13); 1035 + vpshufb %xmm14, %xmm0, %xmm9; 1036 + inc_le128(%xmm0, %xmm15, %xmm13); 1037 + vpshufb %xmm14, %xmm0, %xmm8; 1038 + inc_le128(%xmm0, %xmm15, %xmm13); 1039 + vpshufb %xmm14, %xmm0, %xmm7; 1040 + inc_le128(%xmm0, %xmm15, %xmm13); 1041 + vpshufb %xmm14, %xmm0, %xmm6; 1042 + inc_le128(%xmm0, %xmm15, %xmm13); 1043 + vpshufb %xmm14, %xmm0, %xmm5; 1044 + inc_le128(%xmm0, %xmm15, %xmm13); 1045 + vpshufb %xmm14, %xmm0, %xmm4; 1046 + inc_le128(%xmm0, %xmm15, %xmm13); 1047 + vpshufb %xmm14, %xmm0, %xmm3; 1048 + inc_le128(%xmm0, %xmm15, %xmm13); 1049 + vpshufb %xmm14, %xmm0, %xmm2; 1050 + inc_le128(%xmm0, %xmm15, %xmm13); 1051 + vpshufb %xmm14, %xmm0, %xmm1; 1052 + inc_le128(%xmm0, %xmm15, %xmm13); 1053 + vmovdqa %xmm0, %xmm13; 1054 + vpshufb %xmm14, %xmm0, %xmm0; 1055 + inc_le128(%xmm13, %xmm15, %xmm14); 1056 + vmovdqu %xmm13, (%rcx); 1057 + 1058 + /* inpack16_pre: */ 1059 + vmovq (key_table)(CTX), %xmm15; 1060 + vpshufb .Lpack_bswap, %xmm15, %xmm15; 1061 + vpxor %xmm0, %xmm15, %xmm0; 1062 + vpxor %xmm1, %xmm15, %xmm1; 1063 + vpxor %xmm2, %xmm15, %xmm2; 1064 + vpxor %xmm3, %xmm15, %xmm3; 1065 + vpxor %xmm4, %xmm15, %xmm4; 1066 + vpxor %xmm5, %xmm15, %xmm5; 1067 + vpxor %xmm6, %xmm15, %xmm6; 1068 + vpxor %xmm7, %xmm15, %xmm7; 1069 + vpxor %xmm8, %xmm15, %xmm8; 1070 + vpxor %xmm9, %xmm15, %xmm9; 1071 + vpxor %xmm10, %xmm15, %xmm10; 1072 + vpxor %xmm11, %xmm15, %xmm11; 1073 + vpxor %xmm12, %xmm15, %xmm12; 1074 + vpxor 13 * 16(%rax), %xmm15, %xmm13; 1075 + vpxor 14 * 16(%rax), %xmm15, %xmm14; 1076 + vpxor 15 * 16(%rax), %xmm15, %xmm15; 1077 + 1078 + call __camellia_enc_blk16; 1079 + 1080 + addq $(16 * 16), %rsp; 1081 + 1082 + vpxor 0 * 16(%rdx), %xmm7, %xmm7; 1083 + vpxor 1 * 16(%rdx), %xmm6, %xmm6; 1084 + vpxor 2 * 16(%rdx), %xmm5, %xmm5; 1085 + vpxor 3 * 16(%rdx), %xmm4, %xmm4; 1086 + vpxor 4 * 16(%rdx), %xmm3, %xmm3; 1087 + vpxor 5 * 16(%rdx), %xmm2, %xmm2; 1088 + vpxor 6 * 16(%rdx), %xmm1, %xmm1; 1089 + vpxor 7 * 16(%rdx), %xmm0, %xmm0; 1090 + vpxor 8 * 16(%rdx), %xmm15, %xmm15; 1091 + vpxor 9 * 16(%rdx), %xmm14, %xmm14; 1092 + vpxor 10 * 16(%rdx), %xmm13, %xmm13; 1093 + vpxor 11 * 16(%rdx), %xmm12, %xmm12; 1094 + vpxor 12 * 16(%rdx), %xmm11, %xmm11; 1095 + vpxor 13 * 16(%rdx), %xmm10, %xmm10; 1096 + vpxor 14 * 16(%rdx), %xmm9, %xmm9; 1097 + vpxor 15 * 16(%rdx), %xmm8, %xmm8; 1098 + write_output(%xmm7, %xmm6, %xmm5, %xmm4, %xmm3, %xmm2, %xmm1, %xmm0, 1099 + %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9, 1100 + %xmm8, %rsi); 1101 + 1102 + ret;
+558
arch/x86/crypto/camellia_aesni_avx_glue.c
··· 1 + /* 2 + * Glue Code for x86_64/AVX/AES-NI assembler optimized version of Camellia 3 + * 4 + * Copyright © 2012 Jussi Kivilinna <jussi.kivilinna@mbnet.fi> 5 + * 6 + * This program is free software; you can redistribute it and/or modify 7 + * it under the terms of the GNU General Public License as published by 8 + * the Free Software Foundation; either version 2 of the License, or 9 + * (at your option) any later version. 10 + * 11 + */ 12 + 13 + #include <linux/module.h> 14 + #include <linux/types.h> 15 + #include <linux/crypto.h> 16 + #include <linux/err.h> 17 + #include <crypto/algapi.h> 18 + #include <crypto/ctr.h> 19 + #include <crypto/lrw.h> 20 + #include <crypto/xts.h> 21 + #include <asm/xcr.h> 22 + #include <asm/xsave.h> 23 + #include <asm/crypto/camellia.h> 24 + #include <asm/crypto/ablk_helper.h> 25 + #include <asm/crypto/glue_helper.h> 26 + 27 + #define CAMELLIA_AESNI_PARALLEL_BLOCKS 16 28 + 29 + /* 16-way AES-NI parallel cipher functions */ 30 + asmlinkage void camellia_ecb_enc_16way(struct camellia_ctx *ctx, u8 *dst, 31 + const u8 *src); 32 + asmlinkage void camellia_ecb_dec_16way(struct camellia_ctx *ctx, u8 *dst, 33 + const u8 *src); 34 + 35 + asmlinkage void camellia_cbc_dec_16way(struct camellia_ctx *ctx, u8 *dst, 36 + const u8 *src); 37 + asmlinkage void camellia_ctr_16way(struct camellia_ctx *ctx, u8 *dst, 38 + const u8 *src, le128 *iv); 39 + 40 + static const struct common_glue_ctx camellia_enc = { 41 + .num_funcs = 3, 42 + .fpu_blocks_limit = CAMELLIA_AESNI_PARALLEL_BLOCKS, 43 + 44 + .funcs = { { 45 + .num_blocks = CAMELLIA_AESNI_PARALLEL_BLOCKS, 46 + .fn_u = { .ecb = GLUE_FUNC_CAST(camellia_ecb_enc_16way) } 47 + }, { 48 + .num_blocks = 2, 49 + .fn_u = { .ecb = GLUE_FUNC_CAST(camellia_enc_blk_2way) } 50 + }, { 51 + .num_blocks = 1, 52 + .fn_u = { .ecb = GLUE_FUNC_CAST(camellia_enc_blk) } 53 + } } 54 + }; 55 + 56 + static const struct common_glue_ctx camellia_ctr = { 57 + .num_funcs = 3, 58 + .fpu_blocks_limit = CAMELLIA_AESNI_PARALLEL_BLOCKS, 59 + 60 + .funcs = { { 61 + .num_blocks = CAMELLIA_AESNI_PARALLEL_BLOCKS, 62 + .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(camellia_ctr_16way) } 63 + }, { 64 + .num_blocks = 2, 65 + .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(camellia_crypt_ctr_2way) } 66 + }, { 67 + .num_blocks = 1, 68 + .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(camellia_crypt_ctr) } 69 + } } 70 + }; 71 + 72 + static const struct common_glue_ctx camellia_dec = { 73 + .num_funcs = 3, 74 + .fpu_blocks_limit = CAMELLIA_AESNI_PARALLEL_BLOCKS, 75 + 76 + .funcs = { { 77 + .num_blocks = CAMELLIA_AESNI_PARALLEL_BLOCKS, 78 + .fn_u = { .ecb = GLUE_FUNC_CAST(camellia_ecb_dec_16way) } 79 + }, { 80 + .num_blocks = 2, 81 + .fn_u = { .ecb = GLUE_FUNC_CAST(camellia_dec_blk_2way) } 82 + }, { 83 + .num_blocks = 1, 84 + .fn_u = { .ecb = GLUE_FUNC_CAST(camellia_dec_blk) } 85 + } } 86 + }; 87 + 88 + static const struct common_glue_ctx camellia_dec_cbc = { 89 + .num_funcs = 3, 90 + .fpu_blocks_limit = CAMELLIA_AESNI_PARALLEL_BLOCKS, 91 + 92 + .funcs = { { 93 + .num_blocks = CAMELLIA_AESNI_PARALLEL_BLOCKS, 94 + .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(camellia_cbc_dec_16way) } 95 + }, { 96 + .num_blocks = 2, 97 + .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(camellia_decrypt_cbc_2way) } 98 + }, { 99 + .num_blocks = 1, 100 + .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(camellia_dec_blk) } 101 + } } 102 + }; 103 + 104 + static int ecb_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 105 + struct scatterlist *src, unsigned int nbytes) 106 + { 107 + return glue_ecb_crypt_128bit(&camellia_enc, desc, dst, src, nbytes); 108 + } 109 + 110 + static int ecb_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 111 + struct scatterlist *src, unsigned int nbytes) 112 + { 113 + return glue_ecb_crypt_128bit(&camellia_dec, desc, dst, src, nbytes); 114 + } 115 + 116 + static int cbc_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 117 + struct scatterlist *src, unsigned int nbytes) 118 + { 119 + return glue_cbc_encrypt_128bit(GLUE_FUNC_CAST(camellia_enc_blk), desc, 120 + dst, src, nbytes); 121 + } 122 + 123 + static int cbc_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 124 + struct scatterlist *src, unsigned int nbytes) 125 + { 126 + return glue_cbc_decrypt_128bit(&camellia_dec_cbc, desc, dst, src, 127 + nbytes); 128 + } 129 + 130 + static int ctr_crypt(struct blkcipher_desc *desc, struct scatterlist *dst, 131 + struct scatterlist *src, unsigned int nbytes) 132 + { 133 + return glue_ctr_crypt_128bit(&camellia_ctr, desc, dst, src, nbytes); 134 + } 135 + 136 + static inline bool camellia_fpu_begin(bool fpu_enabled, unsigned int nbytes) 137 + { 138 + return glue_fpu_begin(CAMELLIA_BLOCK_SIZE, 139 + CAMELLIA_AESNI_PARALLEL_BLOCKS, NULL, fpu_enabled, 140 + nbytes); 141 + } 142 + 143 + static inline void camellia_fpu_end(bool fpu_enabled) 144 + { 145 + glue_fpu_end(fpu_enabled); 146 + } 147 + 148 + static int camellia_setkey(struct crypto_tfm *tfm, const u8 *in_key, 149 + unsigned int key_len) 150 + { 151 + return __camellia_setkey(crypto_tfm_ctx(tfm), in_key, key_len, 152 + &tfm->crt_flags); 153 + } 154 + 155 + struct crypt_priv { 156 + struct camellia_ctx *ctx; 157 + bool fpu_enabled; 158 + }; 159 + 160 + static void encrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes) 161 + { 162 + const unsigned int bsize = CAMELLIA_BLOCK_SIZE; 163 + struct crypt_priv *ctx = priv; 164 + int i; 165 + 166 + ctx->fpu_enabled = camellia_fpu_begin(ctx->fpu_enabled, nbytes); 167 + 168 + if (nbytes >= CAMELLIA_AESNI_PARALLEL_BLOCKS * bsize) { 169 + camellia_ecb_enc_16way(ctx->ctx, srcdst, srcdst); 170 + srcdst += bsize * CAMELLIA_AESNI_PARALLEL_BLOCKS; 171 + nbytes -= bsize * CAMELLIA_AESNI_PARALLEL_BLOCKS; 172 + } 173 + 174 + while (nbytes >= CAMELLIA_PARALLEL_BLOCKS * bsize) { 175 + camellia_enc_blk_2way(ctx->ctx, srcdst, srcdst); 176 + srcdst += bsize * CAMELLIA_PARALLEL_BLOCKS; 177 + nbytes -= bsize * CAMELLIA_PARALLEL_BLOCKS; 178 + } 179 + 180 + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) 181 + camellia_enc_blk(ctx->ctx, srcdst, srcdst); 182 + } 183 + 184 + static void decrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes) 185 + { 186 + const unsigned int bsize = CAMELLIA_BLOCK_SIZE; 187 + struct crypt_priv *ctx = priv; 188 + int i; 189 + 190 + ctx->fpu_enabled = camellia_fpu_begin(ctx->fpu_enabled, nbytes); 191 + 192 + if (nbytes >= CAMELLIA_AESNI_PARALLEL_BLOCKS * bsize) { 193 + camellia_ecb_dec_16way(ctx->ctx, srcdst, srcdst); 194 + srcdst += bsize * CAMELLIA_AESNI_PARALLEL_BLOCKS; 195 + nbytes -= bsize * CAMELLIA_AESNI_PARALLEL_BLOCKS; 196 + } 197 + 198 + while (nbytes >= CAMELLIA_PARALLEL_BLOCKS * bsize) { 199 + camellia_dec_blk_2way(ctx->ctx, srcdst, srcdst); 200 + srcdst += bsize * CAMELLIA_PARALLEL_BLOCKS; 201 + nbytes -= bsize * CAMELLIA_PARALLEL_BLOCKS; 202 + } 203 + 204 + for (i = 0; i < nbytes / bsize; i++, srcdst += bsize) 205 + camellia_dec_blk(ctx->ctx, srcdst, srcdst); 206 + } 207 + 208 + static int lrw_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 209 + struct scatterlist *src, unsigned int nbytes) 210 + { 211 + struct camellia_lrw_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); 212 + be128 buf[CAMELLIA_AESNI_PARALLEL_BLOCKS]; 213 + struct crypt_priv crypt_ctx = { 214 + .ctx = &ctx->camellia_ctx, 215 + .fpu_enabled = false, 216 + }; 217 + struct lrw_crypt_req req = { 218 + .tbuf = buf, 219 + .tbuflen = sizeof(buf), 220 + 221 + .table_ctx = &ctx->lrw_table, 222 + .crypt_ctx = &crypt_ctx, 223 + .crypt_fn = encrypt_callback, 224 + }; 225 + int ret; 226 + 227 + desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; 228 + ret = lrw_crypt(desc, dst, src, nbytes, &req); 229 + camellia_fpu_end(crypt_ctx.fpu_enabled); 230 + 231 + return ret; 232 + } 233 + 234 + static int lrw_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 235 + struct scatterlist *src, unsigned int nbytes) 236 + { 237 + struct camellia_lrw_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); 238 + be128 buf[CAMELLIA_AESNI_PARALLEL_BLOCKS]; 239 + struct crypt_priv crypt_ctx = { 240 + .ctx = &ctx->camellia_ctx, 241 + .fpu_enabled = false, 242 + }; 243 + struct lrw_crypt_req req = { 244 + .tbuf = buf, 245 + .tbuflen = sizeof(buf), 246 + 247 + .table_ctx = &ctx->lrw_table, 248 + .crypt_ctx = &crypt_ctx, 249 + .crypt_fn = decrypt_callback, 250 + }; 251 + int ret; 252 + 253 + desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; 254 + ret = lrw_crypt(desc, dst, src, nbytes, &req); 255 + camellia_fpu_end(crypt_ctx.fpu_enabled); 256 + 257 + return ret; 258 + } 259 + 260 + static int xts_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 261 + struct scatterlist *src, unsigned int nbytes) 262 + { 263 + struct camellia_xts_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); 264 + be128 buf[CAMELLIA_AESNI_PARALLEL_BLOCKS]; 265 + struct crypt_priv crypt_ctx = { 266 + .ctx = &ctx->crypt_ctx, 267 + .fpu_enabled = false, 268 + }; 269 + struct xts_crypt_req req = { 270 + .tbuf = buf, 271 + .tbuflen = sizeof(buf), 272 + 273 + .tweak_ctx = &ctx->tweak_ctx, 274 + .tweak_fn = XTS_TWEAK_CAST(camellia_enc_blk), 275 + .crypt_ctx = &crypt_ctx, 276 + .crypt_fn = encrypt_callback, 277 + }; 278 + int ret; 279 + 280 + desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; 281 + ret = xts_crypt(desc, dst, src, nbytes, &req); 282 + camellia_fpu_end(crypt_ctx.fpu_enabled); 283 + 284 + return ret; 285 + } 286 + 287 + static int xts_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 288 + struct scatterlist *src, unsigned int nbytes) 289 + { 290 + struct camellia_xts_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); 291 + be128 buf[CAMELLIA_AESNI_PARALLEL_BLOCKS]; 292 + struct crypt_priv crypt_ctx = { 293 + .ctx = &ctx->crypt_ctx, 294 + .fpu_enabled = false, 295 + }; 296 + struct xts_crypt_req req = { 297 + .tbuf = buf, 298 + .tbuflen = sizeof(buf), 299 + 300 + .tweak_ctx = &ctx->tweak_ctx, 301 + .tweak_fn = XTS_TWEAK_CAST(camellia_enc_blk), 302 + .crypt_ctx = &crypt_ctx, 303 + .crypt_fn = decrypt_callback, 304 + }; 305 + int ret; 306 + 307 + desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; 308 + ret = xts_crypt(desc, dst, src, nbytes, &req); 309 + camellia_fpu_end(crypt_ctx.fpu_enabled); 310 + 311 + return ret; 312 + } 313 + 314 + static struct crypto_alg cmll_algs[10] = { { 315 + .cra_name = "__ecb-camellia-aesni", 316 + .cra_driver_name = "__driver-ecb-camellia-aesni", 317 + .cra_priority = 0, 318 + .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, 319 + .cra_blocksize = CAMELLIA_BLOCK_SIZE, 320 + .cra_ctxsize = sizeof(struct camellia_ctx), 321 + .cra_alignmask = 0, 322 + .cra_type = &crypto_blkcipher_type, 323 + .cra_module = THIS_MODULE, 324 + .cra_u = { 325 + .blkcipher = { 326 + .min_keysize = CAMELLIA_MIN_KEY_SIZE, 327 + .max_keysize = CAMELLIA_MAX_KEY_SIZE, 328 + .setkey = camellia_setkey, 329 + .encrypt = ecb_encrypt, 330 + .decrypt = ecb_decrypt, 331 + }, 332 + }, 333 + }, { 334 + .cra_name = "__cbc-camellia-aesni", 335 + .cra_driver_name = "__driver-cbc-camellia-aesni", 336 + .cra_priority = 0, 337 + .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, 338 + .cra_blocksize = CAMELLIA_BLOCK_SIZE, 339 + .cra_ctxsize = sizeof(struct camellia_ctx), 340 + .cra_alignmask = 0, 341 + .cra_type = &crypto_blkcipher_type, 342 + .cra_module = THIS_MODULE, 343 + .cra_u = { 344 + .blkcipher = { 345 + .min_keysize = CAMELLIA_MIN_KEY_SIZE, 346 + .max_keysize = CAMELLIA_MAX_KEY_SIZE, 347 + .setkey = camellia_setkey, 348 + .encrypt = cbc_encrypt, 349 + .decrypt = cbc_decrypt, 350 + }, 351 + }, 352 + }, { 353 + .cra_name = "__ctr-camellia-aesni", 354 + .cra_driver_name = "__driver-ctr-camellia-aesni", 355 + .cra_priority = 0, 356 + .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, 357 + .cra_blocksize = 1, 358 + .cra_ctxsize = sizeof(struct camellia_ctx), 359 + .cra_alignmask = 0, 360 + .cra_type = &crypto_blkcipher_type, 361 + .cra_module = THIS_MODULE, 362 + .cra_u = { 363 + .blkcipher = { 364 + .min_keysize = CAMELLIA_MIN_KEY_SIZE, 365 + .max_keysize = CAMELLIA_MAX_KEY_SIZE, 366 + .ivsize = CAMELLIA_BLOCK_SIZE, 367 + .setkey = camellia_setkey, 368 + .encrypt = ctr_crypt, 369 + .decrypt = ctr_crypt, 370 + }, 371 + }, 372 + }, { 373 + .cra_name = "__lrw-camellia-aesni", 374 + .cra_driver_name = "__driver-lrw-camellia-aesni", 375 + .cra_priority = 0, 376 + .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, 377 + .cra_blocksize = CAMELLIA_BLOCK_SIZE, 378 + .cra_ctxsize = sizeof(struct camellia_lrw_ctx), 379 + .cra_alignmask = 0, 380 + .cra_type = &crypto_blkcipher_type, 381 + .cra_module = THIS_MODULE, 382 + .cra_exit = lrw_camellia_exit_tfm, 383 + .cra_u = { 384 + .blkcipher = { 385 + .min_keysize = CAMELLIA_MIN_KEY_SIZE + 386 + CAMELLIA_BLOCK_SIZE, 387 + .max_keysize = CAMELLIA_MAX_KEY_SIZE + 388 + CAMELLIA_BLOCK_SIZE, 389 + .ivsize = CAMELLIA_BLOCK_SIZE, 390 + .setkey = lrw_camellia_setkey, 391 + .encrypt = lrw_encrypt, 392 + .decrypt = lrw_decrypt, 393 + }, 394 + }, 395 + }, { 396 + .cra_name = "__xts-camellia-aesni", 397 + .cra_driver_name = "__driver-xts-camellia-aesni", 398 + .cra_priority = 0, 399 + .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, 400 + .cra_blocksize = CAMELLIA_BLOCK_SIZE, 401 + .cra_ctxsize = sizeof(struct camellia_xts_ctx), 402 + .cra_alignmask = 0, 403 + .cra_type = &crypto_blkcipher_type, 404 + .cra_module = THIS_MODULE, 405 + .cra_u = { 406 + .blkcipher = { 407 + .min_keysize = CAMELLIA_MIN_KEY_SIZE * 2, 408 + .max_keysize = CAMELLIA_MAX_KEY_SIZE * 2, 409 + .ivsize = CAMELLIA_BLOCK_SIZE, 410 + .setkey = xts_camellia_setkey, 411 + .encrypt = xts_encrypt, 412 + .decrypt = xts_decrypt, 413 + }, 414 + }, 415 + }, { 416 + .cra_name = "ecb(camellia)", 417 + .cra_driver_name = "ecb-camellia-aesni", 418 + .cra_priority = 400, 419 + .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, 420 + .cra_blocksize = CAMELLIA_BLOCK_SIZE, 421 + .cra_ctxsize = sizeof(struct async_helper_ctx), 422 + .cra_alignmask = 0, 423 + .cra_type = &crypto_ablkcipher_type, 424 + .cra_module = THIS_MODULE, 425 + .cra_init = ablk_init, 426 + .cra_exit = ablk_exit, 427 + .cra_u = { 428 + .ablkcipher = { 429 + .min_keysize = CAMELLIA_MIN_KEY_SIZE, 430 + .max_keysize = CAMELLIA_MAX_KEY_SIZE, 431 + .setkey = ablk_set_key, 432 + .encrypt = ablk_encrypt, 433 + .decrypt = ablk_decrypt, 434 + }, 435 + }, 436 + }, { 437 + .cra_name = "cbc(camellia)", 438 + .cra_driver_name = "cbc-camellia-aesni", 439 + .cra_priority = 400, 440 + .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, 441 + .cra_blocksize = CAMELLIA_BLOCK_SIZE, 442 + .cra_ctxsize = sizeof(struct async_helper_ctx), 443 + .cra_alignmask = 0, 444 + .cra_type = &crypto_ablkcipher_type, 445 + .cra_module = THIS_MODULE, 446 + .cra_init = ablk_init, 447 + .cra_exit = ablk_exit, 448 + .cra_u = { 449 + .ablkcipher = { 450 + .min_keysize = CAMELLIA_MIN_KEY_SIZE, 451 + .max_keysize = CAMELLIA_MAX_KEY_SIZE, 452 + .ivsize = CAMELLIA_BLOCK_SIZE, 453 + .setkey = ablk_set_key, 454 + .encrypt = __ablk_encrypt, 455 + .decrypt = ablk_decrypt, 456 + }, 457 + }, 458 + }, { 459 + .cra_name = "ctr(camellia)", 460 + .cra_driver_name = "ctr-camellia-aesni", 461 + .cra_priority = 400, 462 + .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, 463 + .cra_blocksize = 1, 464 + .cra_ctxsize = sizeof(struct async_helper_ctx), 465 + .cra_alignmask = 0, 466 + .cra_type = &crypto_ablkcipher_type, 467 + .cra_module = THIS_MODULE, 468 + .cra_init = ablk_init, 469 + .cra_exit = ablk_exit, 470 + .cra_u = { 471 + .ablkcipher = { 472 + .min_keysize = CAMELLIA_MIN_KEY_SIZE, 473 + .max_keysize = CAMELLIA_MAX_KEY_SIZE, 474 + .ivsize = CAMELLIA_BLOCK_SIZE, 475 + .setkey = ablk_set_key, 476 + .encrypt = ablk_encrypt, 477 + .decrypt = ablk_encrypt, 478 + .geniv = "chainiv", 479 + }, 480 + }, 481 + }, { 482 + .cra_name = "lrw(camellia)", 483 + .cra_driver_name = "lrw-camellia-aesni", 484 + .cra_priority = 400, 485 + .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, 486 + .cra_blocksize = CAMELLIA_BLOCK_SIZE, 487 + .cra_ctxsize = sizeof(struct async_helper_ctx), 488 + .cra_alignmask = 0, 489 + .cra_type = &crypto_ablkcipher_type, 490 + .cra_module = THIS_MODULE, 491 + .cra_init = ablk_init, 492 + .cra_exit = ablk_exit, 493 + .cra_u = { 494 + .ablkcipher = { 495 + .min_keysize = CAMELLIA_MIN_KEY_SIZE + 496 + CAMELLIA_BLOCK_SIZE, 497 + .max_keysize = CAMELLIA_MAX_KEY_SIZE + 498 + CAMELLIA_BLOCK_SIZE, 499 + .ivsize = CAMELLIA_BLOCK_SIZE, 500 + .setkey = ablk_set_key, 501 + .encrypt = ablk_encrypt, 502 + .decrypt = ablk_decrypt, 503 + }, 504 + }, 505 + }, { 506 + .cra_name = "xts(camellia)", 507 + .cra_driver_name = "xts-camellia-aesni", 508 + .cra_priority = 400, 509 + .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, 510 + .cra_blocksize = CAMELLIA_BLOCK_SIZE, 511 + .cra_ctxsize = sizeof(struct async_helper_ctx), 512 + .cra_alignmask = 0, 513 + .cra_type = &crypto_ablkcipher_type, 514 + .cra_module = THIS_MODULE, 515 + .cra_init = ablk_init, 516 + .cra_exit = ablk_exit, 517 + .cra_u = { 518 + .ablkcipher = { 519 + .min_keysize = CAMELLIA_MIN_KEY_SIZE * 2, 520 + .max_keysize = CAMELLIA_MAX_KEY_SIZE * 2, 521 + .ivsize = CAMELLIA_BLOCK_SIZE, 522 + .setkey = ablk_set_key, 523 + .encrypt = ablk_encrypt, 524 + .decrypt = ablk_decrypt, 525 + }, 526 + }, 527 + } }; 528 + 529 + static int __init camellia_aesni_init(void) 530 + { 531 + u64 xcr0; 532 + 533 + if (!cpu_has_avx || !cpu_has_aes || !cpu_has_osxsave) { 534 + pr_info("AVX or AES-NI instructions are not detected.\n"); 535 + return -ENODEV; 536 + } 537 + 538 + xcr0 = xgetbv(XCR_XFEATURE_ENABLED_MASK); 539 + if ((xcr0 & (XSTATE_SSE | XSTATE_YMM)) != (XSTATE_SSE | XSTATE_YMM)) { 540 + pr_info("AVX detected but unusable.\n"); 541 + return -ENODEV; 542 + } 543 + 544 + return crypto_register_algs(cmll_algs, ARRAY_SIZE(cmll_algs)); 545 + } 546 + 547 + static void __exit camellia_aesni_fini(void) 548 + { 549 + crypto_unregister_algs(cmll_algs, ARRAY_SIZE(cmll_algs)); 550 + } 551 + 552 + module_init(camellia_aesni_init); 553 + module_exit(camellia_aesni_fini); 554 + 555 + MODULE_LICENSE("GPL"); 556 + MODULE_DESCRIPTION("Camellia Cipher Algorithm, AES-NI/AVX optimized"); 557 + MODULE_ALIAS("camellia"); 558 + MODULE_ALIAS("camellia-asm");
+29 -63
arch/x86/crypto/camellia_glue.c
··· 32 32 #include <crypto/algapi.h> 33 33 #include <crypto/lrw.h> 34 34 #include <crypto/xts.h> 35 + #include <asm/crypto/camellia.h> 35 36 #include <asm/crypto/glue_helper.h> 36 - 37 - #define CAMELLIA_MIN_KEY_SIZE 16 38 - #define CAMELLIA_MAX_KEY_SIZE 32 39 - #define CAMELLIA_BLOCK_SIZE 16 40 - #define CAMELLIA_TABLE_BYTE_LEN 272 41 - 42 - struct camellia_ctx { 43 - u64 key_table[CAMELLIA_TABLE_BYTE_LEN / sizeof(u64)]; 44 - u32 key_length; 45 - }; 46 37 47 38 /* regular block cipher functions */ 48 39 asmlinkage void __camellia_enc_blk(struct camellia_ctx *ctx, u8 *dst, 49 40 const u8 *src, bool xor); 41 + EXPORT_SYMBOL_GPL(__camellia_enc_blk); 50 42 asmlinkage void camellia_dec_blk(struct camellia_ctx *ctx, u8 *dst, 51 43 const u8 *src); 44 + EXPORT_SYMBOL_GPL(camellia_dec_blk); 52 45 53 46 /* 2-way parallel cipher functions */ 54 47 asmlinkage void __camellia_enc_blk_2way(struct camellia_ctx *ctx, u8 *dst, 55 48 const u8 *src, bool xor); 49 + EXPORT_SYMBOL_GPL(__camellia_enc_blk_2way); 56 50 asmlinkage void camellia_dec_blk_2way(struct camellia_ctx *ctx, u8 *dst, 57 51 const u8 *src); 58 - 59 - static inline void camellia_enc_blk(struct camellia_ctx *ctx, u8 *dst, 60 - const u8 *src) 61 - { 62 - __camellia_enc_blk(ctx, dst, src, false); 63 - } 64 - 65 - static inline void camellia_enc_blk_xor(struct camellia_ctx *ctx, u8 *dst, 66 - const u8 *src) 67 - { 68 - __camellia_enc_blk(ctx, dst, src, true); 69 - } 70 - 71 - static inline void camellia_enc_blk_2way(struct camellia_ctx *ctx, u8 *dst, 72 - const u8 *src) 73 - { 74 - __camellia_enc_blk_2way(ctx, dst, src, false); 75 - } 76 - 77 - static inline void camellia_enc_blk_xor_2way(struct camellia_ctx *ctx, u8 *dst, 78 - const u8 *src) 79 - { 80 - __camellia_enc_blk_2way(ctx, dst, src, true); 81 - } 52 + EXPORT_SYMBOL_GPL(camellia_dec_blk_2way); 82 53 83 54 static void camellia_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) 84 55 { ··· 1246 1275 camellia_setup256(kk, subkey); 1247 1276 } 1248 1277 1249 - static int __camellia_setkey(struct camellia_ctx *cctx, 1250 - const unsigned char *key, 1251 - unsigned int key_len, u32 *flags) 1278 + int __camellia_setkey(struct camellia_ctx *cctx, const unsigned char *key, 1279 + unsigned int key_len, u32 *flags) 1252 1280 { 1253 1281 if (key_len != 16 && key_len != 24 && key_len != 32) { 1254 1282 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN; ··· 1270 1300 1271 1301 return 0; 1272 1302 } 1303 + EXPORT_SYMBOL_GPL(__camellia_setkey); 1273 1304 1274 1305 static int camellia_setkey(struct crypto_tfm *tfm, const u8 *in_key, 1275 1306 unsigned int key_len) ··· 1279 1308 &tfm->crt_flags); 1280 1309 } 1281 1310 1282 - static void camellia_decrypt_cbc_2way(void *ctx, u128 *dst, const u128 *src) 1311 + void camellia_decrypt_cbc_2way(void *ctx, u128 *dst, const u128 *src) 1283 1312 { 1284 1313 u128 iv = *src; 1285 1314 ··· 1287 1316 1288 1317 u128_xor(&dst[1], &dst[1], &iv); 1289 1318 } 1319 + EXPORT_SYMBOL_GPL(camellia_decrypt_cbc_2way); 1290 1320 1291 - static void camellia_crypt_ctr(void *ctx, u128 *dst, const u128 *src, u128 *iv) 1321 + void camellia_crypt_ctr(void *ctx, u128 *dst, const u128 *src, le128 *iv) 1292 1322 { 1293 1323 be128 ctrblk; 1294 1324 1295 1325 if (dst != src) 1296 1326 *dst = *src; 1297 1327 1298 - u128_to_be128(&ctrblk, iv); 1299 - u128_inc(iv); 1328 + le128_to_be128(&ctrblk, iv); 1329 + le128_inc(iv); 1300 1330 1301 1331 camellia_enc_blk_xor(ctx, (u8 *)dst, (u8 *)&ctrblk); 1302 1332 } 1333 + EXPORT_SYMBOL_GPL(camellia_crypt_ctr); 1303 1334 1304 - static void camellia_crypt_ctr_2way(void *ctx, u128 *dst, const u128 *src, 1305 - u128 *iv) 1335 + void camellia_crypt_ctr_2way(void *ctx, u128 *dst, const u128 *src, le128 *iv) 1306 1336 { 1307 1337 be128 ctrblks[2]; 1308 1338 ··· 1312 1340 dst[1] = src[1]; 1313 1341 } 1314 1342 1315 - u128_to_be128(&ctrblks[0], iv); 1316 - u128_inc(iv); 1317 - u128_to_be128(&ctrblks[1], iv); 1318 - u128_inc(iv); 1343 + le128_to_be128(&ctrblks[0], iv); 1344 + le128_inc(iv); 1345 + le128_to_be128(&ctrblks[1], iv); 1346 + le128_inc(iv); 1319 1347 1320 1348 camellia_enc_blk_xor_2way(ctx, (u8 *)dst, (u8 *)ctrblks); 1321 1349 } 1350 + EXPORT_SYMBOL_GPL(camellia_crypt_ctr_2way); 1322 1351 1323 1352 static const struct common_glue_ctx camellia_enc = { 1324 1353 .num_funcs = 2, ··· 1437 1464 camellia_dec_blk(ctx, srcdst, srcdst); 1438 1465 } 1439 1466 1440 - struct camellia_lrw_ctx { 1441 - struct lrw_table_ctx lrw_table; 1442 - struct camellia_ctx camellia_ctx; 1443 - }; 1444 - 1445 - static int lrw_camellia_setkey(struct crypto_tfm *tfm, const u8 *key, 1446 - unsigned int keylen) 1467 + int lrw_camellia_setkey(struct crypto_tfm *tfm, const u8 *key, 1468 + unsigned int keylen) 1447 1469 { 1448 1470 struct camellia_lrw_ctx *ctx = crypto_tfm_ctx(tfm); 1449 1471 int err; ··· 1452 1484 return lrw_init_table(&ctx->lrw_table, 1453 1485 key + keylen - CAMELLIA_BLOCK_SIZE); 1454 1486 } 1487 + EXPORT_SYMBOL_GPL(lrw_camellia_setkey); 1455 1488 1456 1489 static int lrw_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 1457 1490 struct scatterlist *src, unsigned int nbytes) ··· 1488 1519 return lrw_crypt(desc, dst, src, nbytes, &req); 1489 1520 } 1490 1521 1491 - static void lrw_exit_tfm(struct crypto_tfm *tfm) 1522 + void lrw_camellia_exit_tfm(struct crypto_tfm *tfm) 1492 1523 { 1493 1524 struct camellia_lrw_ctx *ctx = crypto_tfm_ctx(tfm); 1494 1525 1495 1526 lrw_free_table(&ctx->lrw_table); 1496 1527 } 1528 + EXPORT_SYMBOL_GPL(lrw_camellia_exit_tfm); 1497 1529 1498 - struct camellia_xts_ctx { 1499 - struct camellia_ctx tweak_ctx; 1500 - struct camellia_ctx crypt_ctx; 1501 - }; 1502 - 1503 - static int xts_camellia_setkey(struct crypto_tfm *tfm, const u8 *key, 1504 - unsigned int keylen) 1530 + int xts_camellia_setkey(struct crypto_tfm *tfm, const u8 *key, 1531 + unsigned int keylen) 1505 1532 { 1506 1533 struct camellia_xts_ctx *ctx = crypto_tfm_ctx(tfm); 1507 1534 u32 *flags = &tfm->crt_flags; ··· 1520 1555 return __camellia_setkey(&ctx->tweak_ctx, key + keylen / 2, keylen / 2, 1521 1556 flags); 1522 1557 } 1558 + EXPORT_SYMBOL_GPL(xts_camellia_setkey); 1523 1559 1524 1560 static int xts_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, 1525 1561 struct scatterlist *src, unsigned int nbytes) ··· 1645 1679 .cra_alignmask = 0, 1646 1680 .cra_type = &crypto_blkcipher_type, 1647 1681 .cra_module = THIS_MODULE, 1648 - .cra_exit = lrw_exit_tfm, 1682 + .cra_exit = lrw_camellia_exit_tfm, 1649 1683 .cra_u = { 1650 1684 .blkcipher = { 1651 1685 .min_keysize = CAMELLIA_MIN_KEY_SIZE +
+265 -83
arch/x86/crypto/cast5-avx-x86_64-asm_64.S
··· 25 25 26 26 .file "cast5-avx-x86_64-asm_64.S" 27 27 28 - .extern cast5_s1 29 - .extern cast5_s2 30 - .extern cast5_s3 31 - .extern cast5_s4 28 + .extern cast_s1 29 + .extern cast_s2 30 + .extern cast_s3 31 + .extern cast_s4 32 32 33 33 /* structure of crypto context */ 34 34 #define km 0 ··· 36 36 #define rr ((16*4)+16) 37 37 38 38 /* s-boxes */ 39 - #define s1 cast5_s1 40 - #define s2 cast5_s2 41 - #define s3 cast5_s3 42 - #define s4 cast5_s4 39 + #define s1 cast_s1 40 + #define s2 cast_s2 41 + #define s3 cast_s3 42 + #define s4 cast_s4 43 43 44 44 /********************************************************************** 45 45 16-way AVX cast5 ··· 180 180 vpunpcklqdq t1, t0, x0; \ 181 181 vpunpckhqdq t1, t0, x1; 182 182 183 - #define inpack_blocks(in, x0, x1, t0, t1, rmask) \ 184 - vmovdqu (0*4*4)(in), x0; \ 185 - vmovdqu (1*4*4)(in), x1; \ 183 + #define inpack_blocks(x0, x1, t0, t1, rmask) \ 186 184 vpshufb rmask, x0, x0; \ 187 185 vpshufb rmask, x1, x1; \ 188 186 \ 189 187 transpose_2x4(x0, x1, t0, t1) 190 188 191 - #define outunpack_blocks(out, x0, x1, t0, t1, rmask) \ 189 + #define outunpack_blocks(x0, x1, t0, t1, rmask) \ 192 190 transpose_2x4(x0, x1, t0, t1) \ 193 191 \ 194 192 vpshufb rmask, x0, x0; \ 195 - vpshufb rmask, x1, x1; \ 196 - vmovdqu x0, (0*4*4)(out); \ 197 - vmovdqu x1, (1*4*4)(out); 198 - 199 - #define outunpack_xor_blocks(out, x0, x1, t0, t1, rmask) \ 200 - transpose_2x4(x0, x1, t0, t1) \ 201 - \ 202 - vpshufb rmask, x0, x0; \ 203 - vpshufb rmask, x1, x1; \ 204 - vpxor (0*4*4)(out), x0, x0; \ 205 - vmovdqu x0, (0*4*4)(out); \ 206 - vpxor (1*4*4)(out), x1, x1; \ 207 - vmovdqu x1, (1*4*4)(out); 193 + vpshufb rmask, x1, x1; 208 194 209 195 .data 210 196 ··· 199 213 .byte 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 200 214 .Lbswap128_mask: 201 215 .byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 216 + .Lbswap_iv_mask: 217 + .byte 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0 202 218 .L16_mask: 203 219 .byte 16, 16, 16, 16 204 220 .L32_mask: ··· 211 223 .text 212 224 213 225 .align 16 214 - .global __cast5_enc_blk_16way 215 - .type __cast5_enc_blk_16way,@function; 226 + .type __cast5_enc_blk16,@function; 216 227 217 - __cast5_enc_blk_16way: 228 + __cast5_enc_blk16: 218 229 /* input: 219 230 * %rdi: ctx, CTX 220 - * %rsi: dst 221 - * %rdx: src 222 - * %rcx: bool, if true: xor output 231 + * RL1: blocks 1 and 2 232 + * RR1: blocks 3 and 4 233 + * RL2: blocks 5 and 6 234 + * RR2: blocks 7 and 8 235 + * RL3: blocks 9 and 10 236 + * RR3: blocks 11 and 12 237 + * RL4: blocks 13 and 14 238 + * RR4: blocks 15 and 16 239 + * output: 240 + * RL1: encrypted blocks 1 and 2 241 + * RR1: encrypted blocks 3 and 4 242 + * RL2: encrypted blocks 5 and 6 243 + * RR2: encrypted blocks 7 and 8 244 + * RL3: encrypted blocks 9 and 10 245 + * RR3: encrypted blocks 11 and 12 246 + * RL4: encrypted blocks 13 and 14 247 + * RR4: encrypted blocks 15 and 16 223 248 */ 224 249 225 250 pushq %rbp; 226 251 pushq %rbx; 227 - pushq %rcx; 228 252 229 253 vmovdqa .Lbswap_mask, RKM; 230 254 vmovd .Lfirst_mask, R1ST; 231 255 vmovd .L32_mask, R32; 232 256 enc_preload_rkr(); 233 257 234 - leaq 1*(2*4*4)(%rdx), %rax; 235 - inpack_blocks(%rdx, RL1, RR1, RTMP, RX, RKM); 236 - inpack_blocks(%rax, RL2, RR2, RTMP, RX, RKM); 237 - leaq 2*(2*4*4)(%rdx), %rax; 238 - inpack_blocks(%rax, RL3, RR3, RTMP, RX, RKM); 239 - leaq 3*(2*4*4)(%rdx), %rax; 240 - inpack_blocks(%rax, RL4, RR4, RTMP, RX, RKM); 241 - 242 - movq %rsi, %r11; 258 + inpack_blocks(RL1, RR1, RTMP, RX, RKM); 259 + inpack_blocks(RL2, RR2, RTMP, RX, RKM); 260 + inpack_blocks(RL3, RR3, RTMP, RX, RKM); 261 + inpack_blocks(RL4, RR4, RTMP, RX, RKM); 243 262 244 263 round(RL, RR, 0, 1); 245 264 round(RR, RL, 1, 2); ··· 271 276 round(RR, RL, 15, 1); 272 277 273 278 __skip_enc: 274 - popq %rcx; 275 279 popq %rbx; 276 280 popq %rbp; 277 281 278 282 vmovdqa .Lbswap_mask, RKM; 279 - leaq 1*(2*4*4)(%r11), %rax; 280 283 281 - testb %cl, %cl; 282 - jnz __enc_xor16; 283 - 284 - outunpack_blocks(%r11, RR1, RL1, RTMP, RX, RKM); 285 - outunpack_blocks(%rax, RR2, RL2, RTMP, RX, RKM); 286 - leaq 2*(2*4*4)(%r11), %rax; 287 - outunpack_blocks(%rax, RR3, RL3, RTMP, RX, RKM); 288 - leaq 3*(2*4*4)(%r11), %rax; 289 - outunpack_blocks(%rax, RR4, RL4, RTMP, RX, RKM); 290 - 291 - ret; 292 - 293 - __enc_xor16: 294 - outunpack_xor_blocks(%r11, RR1, RL1, RTMP, RX, RKM); 295 - outunpack_xor_blocks(%rax, RR2, RL2, RTMP, RX, RKM); 296 - leaq 2*(2*4*4)(%r11), %rax; 297 - outunpack_xor_blocks(%rax, RR3, RL3, RTMP, RX, RKM); 298 - leaq 3*(2*4*4)(%r11), %rax; 299 - outunpack_xor_blocks(%rax, RR4, RL4, RTMP, RX, RKM); 284 + outunpack_blocks(RR1, RL1, RTMP, RX, RKM); 285 + outunpack_blocks(RR2, RL2, RTMP, RX, RKM); 286 + outunpack_blocks(RR3, RL3, RTMP, RX, RKM); 287 + outunpack_blocks(RR4, RL4, RTMP, RX, RKM); 300 288 301 289 ret; 302 290 303 291 .align 16 304 - .global cast5_dec_blk_16way 305 - .type cast5_dec_blk_16way,@function; 292 + .type __cast5_dec_blk16,@function; 306 293 307 - cast5_dec_blk_16way: 294 + __cast5_dec_blk16: 308 295 /* input: 309 296 * %rdi: ctx, CTX 310 - * %rsi: dst 311 - * %rdx: src 297 + * RL1: encrypted blocks 1 and 2 298 + * RR1: encrypted blocks 3 and 4 299 + * RL2: encrypted blocks 5 and 6 300 + * RR2: encrypted blocks 7 and 8 301 + * RL3: encrypted blocks 9 and 10 302 + * RR3: encrypted blocks 11 and 12 303 + * RL4: encrypted blocks 13 and 14 304 + * RR4: encrypted blocks 15 and 16 305 + * output: 306 + * RL1: decrypted blocks 1 and 2 307 + * RR1: decrypted blocks 3 and 4 308 + * RL2: decrypted blocks 5 and 6 309 + * RR2: decrypted blocks 7 and 8 310 + * RL3: decrypted blocks 9 and 10 311 + * RR3: decrypted blocks 11 and 12 312 + * RL4: decrypted blocks 13 and 14 313 + * RR4: decrypted blocks 15 and 16 312 314 */ 313 315 314 316 pushq %rbp; ··· 316 324 vmovd .L32_mask, R32; 317 325 dec_preload_rkr(); 318 326 319 - leaq 1*(2*4*4)(%rdx), %rax; 320 - inpack_blocks(%rdx, RL1, RR1, RTMP, RX, RKM); 321 - inpack_blocks(%rax, RL2, RR2, RTMP, RX, RKM); 322 - leaq 2*(2*4*4)(%rdx), %rax; 323 - inpack_blocks(%rax, RL3, RR3, RTMP, RX, RKM); 324 - leaq 3*(2*4*4)(%rdx), %rax; 325 - inpack_blocks(%rax, RL4, RR4, RTMP, RX, RKM); 326 - 327 - movq %rsi, %r11; 327 + inpack_blocks(RL1, RR1, RTMP, RX, RKM); 328 + inpack_blocks(RL2, RR2, RTMP, RX, RKM); 329 + inpack_blocks(RL3, RR3, RTMP, RX, RKM); 330 + inpack_blocks(RL4, RR4, RTMP, RX, RKM); 328 331 329 332 movzbl rr(CTX), %eax; 330 333 testl %eax, %eax; ··· 348 361 popq %rbx; 349 362 popq %rbp; 350 363 351 - leaq 1*(2*4*4)(%r11), %rax; 352 - outunpack_blocks(%r11, RR1, RL1, RTMP, RX, RKM); 353 - outunpack_blocks(%rax, RR2, RL2, RTMP, RX, RKM); 354 - leaq 2*(2*4*4)(%r11), %rax; 355 - outunpack_blocks(%rax, RR3, RL3, RTMP, RX, RKM); 356 - leaq 3*(2*4*4)(%r11), %rax; 357 - outunpack_blocks(%rax, RR4, RL4, RTMP, RX, RKM); 364 + outunpack_blocks(RR1, RL1, RTMP, RX, RKM); 365 + outunpack_blocks(RR2, RL2, RTMP, RX, RKM); 366 + outunpack_blocks(RR3, RL3, RTMP, RX, RKM); 367 + outunpack_blocks(RR4, RL4, RTMP, RX, RKM); 358 368 359 369 ret; 360 370 361 371 __skip_dec: 362 372 vpsrldq $4, RKR, RKR; 363 373 jmp __dec_tail; 374 + 375 + .align 16 376 + .global cast5_ecb_enc_16way 377 + .type cast5_ecb_enc_16way,@function; 378 + 379 + cast5_ecb_enc_16way: 380 + /* input: 381 + * %rdi: ctx, CTX 382 + * %rsi: dst 383 + * %rdx: src 384 + */ 385 + 386 + movq %rsi, %r11; 387 + 388 + vmovdqu (0*4*4)(%rdx), RL1; 389 + vmovdqu (1*4*4)(%rdx), RR1; 390 + vmovdqu (2*4*4)(%rdx), RL2; 391 + vmovdqu (3*4*4)(%rdx), RR2; 392 + vmovdqu (4*4*4)(%rdx), RL3; 393 + vmovdqu (5*4*4)(%rdx), RR3; 394 + vmovdqu (6*4*4)(%rdx), RL4; 395 + vmovdqu (7*4*4)(%rdx), RR4; 396 + 397 + call __cast5_enc_blk16; 398 + 399 + vmovdqu RR1, (0*4*4)(%r11); 400 + vmovdqu RL1, (1*4*4)(%r11); 401 + vmovdqu RR2, (2*4*4)(%r11); 402 + vmovdqu RL2, (3*4*4)(%r11); 403 + vmovdqu RR3, (4*4*4)(%r11); 404 + vmovdqu RL3, (5*4*4)(%r11); 405 + vmovdqu RR4, (6*4*4)(%r11); 406 + vmovdqu RL4, (7*4*4)(%r11); 407 + 408 + ret; 409 + 410 + .align 16 411 + .global cast5_ecb_dec_16way 412 + .type cast5_ecb_dec_16way,@function; 413 + 414 + cast5_ecb_dec_16way: 415 + /* input: 416 + * %rdi: ctx, CTX 417 + * %rsi: dst 418 + * %rdx: src 419 + */ 420 + 421 + movq %rsi, %r11; 422 + 423 + vmovdqu (0*4*4)(%rdx), RL1; 424 + vmovdqu (1*4*4)(%rdx), RR1; 425 + vmovdqu (2*4*4)(%rdx), RL2; 426 + vmovdqu (3*4*4)(%rdx), RR2; 427 + vmovdqu (4*4*4)(%rdx), RL3; 428 + vmovdqu (5*4*4)(%rdx), RR3; 429 + vmovdqu (6*4*4)(%rdx), RL4; 430 + vmovdqu (7*4*4)(%rdx), RR4; 431 + 432 + call __cast5_dec_blk16; 433 + 434 + vmovdqu RR1, (0*4*4)(%r11); 435 + vmovdqu RL1, (1*4*4)(%r11); 436 + vmovdqu RR2, (2*4*4)(%r11); 437 + vmovdqu RL2, (3*4*4)(%r11); 438 + vmovdqu RR3, (4*4*4)(%r11); 439 + vmovdqu RL3, (5*4*4)(%r11); 440 + vmovdqu RR4, (6*4*4)(%r11); 441 + vmovdqu RL4, (7*4*4)(%r11); 442 + 443 + ret; 444 + 445 + .align 16 446 + .global cast5_cbc_dec_16way 447 + .type cast5_cbc_dec_16way,@function; 448 + 449 + cast5_cbc_dec_16way: 450 + /* input: 451 + * %rdi: ctx, CTX 452 + * %rsi: dst 453 + * %rdx: src 454 + */ 455 + 456 + pushq %r12; 457 + 458 + movq %rsi, %r11; 459 + movq %rdx, %r12; 460 + 461 + vmovdqu (0*16)(%rdx), RL1; 462 + vmovdqu (1*16)(%rdx), RR1; 463 + vmovdqu (2*16)(%rdx), RL2; 464 + vmovdqu (3*16)(%rdx), RR2; 465 + vmovdqu (4*16)(%rdx), RL3; 466 + vmovdqu (5*16)(%rdx), RR3; 467 + vmovdqu (6*16)(%rdx), RL4; 468 + vmovdqu (7*16)(%rdx), RR4; 469 + 470 + call __cast5_dec_blk16; 471 + 472 + /* xor with src */ 473 + vmovq (%r12), RX; 474 + vpshufd $0x4f, RX, RX; 475 + vpxor RX, RR1, RR1; 476 + vpxor 0*16+8(%r12), RL1, RL1; 477 + vpxor 1*16+8(%r12), RR2, RR2; 478 + vpxor 2*16+8(%r12), RL2, RL2; 479 + vpxor 3*16+8(%r12), RR3, RR3; 480 + vpxor 4*16+8(%r12), RL3, RL3; 481 + vpxor 5*16+8(%r12), RR4, RR4; 482 + vpxor 6*16+8(%r12), RL4, RL4; 483 + 484 + vmovdqu RR1, (0*16)(%r11); 485 + vmovdqu RL1, (1*16)(%r11); 486 + vmovdqu RR2, (2*16)(%r11); 487 + vmovdqu RL2, (3*16)(%r11); 488 + vmovdqu RR3, (4*16)(%r11); 489 + vmovdqu RL3, (5*16)(%r11); 490 + vmovdqu RR4, (6*16)(%r11); 491 + vmovdqu RL4, (7*16)(%r11); 492 + 493 + popq %r12; 494 + 495 + ret; 496 + 497 + .align 16 498 + .global cast5_ctr_16way 499 + .type cast5_ctr_16way,@function; 500 + 501 + cast5_ctr_16way: 502 + /* input: 503 + * %rdi: ctx, CTX 504 + * %rsi: dst 505 + * %rdx: src 506 + * %rcx: iv (big endian, 64bit) 507 + */ 508 + 509 + pushq %r12; 510 + 511 + movq %rsi, %r11; 512 + movq %rdx, %r12; 513 + 514 + vpcmpeqd RTMP, RTMP, RTMP; 515 + vpsrldq $8, RTMP, RTMP; /* low: -1, high: 0 */ 516 + 517 + vpcmpeqd RKR, RKR, RKR; 518 + vpaddq RKR, RKR, RKR; /* low: -2, high: -2 */ 519 + vmovdqa .Lbswap_iv_mask, R1ST; 520 + vmovdqa .Lbswap128_mask, RKM; 521 + 522 + /* load IV and byteswap */ 523 + vmovq (%rcx), RX; 524 + vpshufb R1ST, RX, RX; 525 + 526 + /* construct IVs */ 527 + vpsubq RTMP, RX, RX; /* le: IV1, IV0 */ 528 + vpshufb RKM, RX, RL1; /* be: IV0, IV1 */ 529 + vpsubq RKR, RX, RX; 530 + vpshufb RKM, RX, RR1; /* be: IV2, IV3 */ 531 + vpsubq RKR, RX, RX; 532 + vpshufb RKM, RX, RL2; /* be: IV4, IV5 */ 533 + vpsubq RKR, RX, RX; 534 + vpshufb RKM, RX, RR2; /* be: IV6, IV7 */ 535 + vpsubq RKR, RX, RX; 536 + vpshufb RKM, RX, RL3; /* be: IV8, IV9 */ 537 + vpsubq RKR, RX, RX; 538 + vpshufb RKM, RX, RR3; /* be: IV10, IV11 */ 539 + vpsubq RKR, RX, RX; 540 + vpshufb RKM, RX, RL4; /* be: IV12, IV13 */ 541 + vpsubq RKR, RX, RX; 542 + vpshufb RKM, RX, RR4; /* be: IV14, IV15 */ 543 + 544 + /* store last IV */ 545 + vpsubq RTMP, RX, RX; /* le: IV16, IV14 */ 546 + vpshufb R1ST, RX, RX; /* be: IV16, IV16 */ 547 + vmovq RX, (%rcx); 548 + 549 + call __cast5_enc_blk16; 550 + 551 + /* dst = src ^ iv */ 552 + vpxor (0*16)(%r12), RR1, RR1; 553 + vpxor (1*16)(%r12), RL1, RL1; 554 + vpxor (2*16)(%r12), RR2, RR2; 555 + vpxor (3*16)(%r12), RL2, RL2; 556 + vpxor (4*16)(%r12), RR3, RR3; 557 + vpxor (5*16)(%r12), RL3, RL3; 558 + vpxor (6*16)(%r12), RR4, RR4; 559 + vpxor (7*16)(%r12), RL4, RL4; 560 + vmovdqu RR1, (0*16)(%r11); 561 + vmovdqu RL1, (1*16)(%r11); 562 + vmovdqu RR2, (2*16)(%r11); 563 + vmovdqu RL2, (3*16)(%r11); 564 + vmovdqu RR3, (4*16)(%r11); 565 + vmovdqu RL3, (5*16)(%r11); 566 + vmovdqu RR4, (6*16)(%r11); 567 + vmovdqu RL4, (7*16)(%r11); 568 + 569 + popq %r12; 570 + 571 + ret;
+23 -56
arch/x86/crypto/cast5_avx_glue.c
··· 37 37 38 38 #define CAST5_PARALLEL_BLOCKS 16 39 39 40 - asmlinkage void __cast5_enc_blk_16way(struct cast5_ctx *ctx, u8 *dst, 41 - const u8 *src, bool xor); 42 - asmlinkage void cast5_dec_blk_16way(struct cast5_ctx *ctx, u8 *dst, 40 + asmlinkage void cast5_ecb_enc_16way(struct cast5_ctx *ctx, u8 *dst, 43 41 const u8 *src); 44 - 45 - static inline void cast5_enc_blk_xway(struct cast5_ctx *ctx, u8 *dst, 46 - const u8 *src) 47 - { 48 - __cast5_enc_blk_16way(ctx, dst, src, false); 49 - } 50 - 51 - static inline void cast5_enc_blk_xway_xor(struct cast5_ctx *ctx, u8 *dst, 52 - const u8 *src) 53 - { 54 - __cast5_enc_blk_16way(ctx, dst, src, true); 55 - } 56 - 57 - static inline void cast5_dec_blk_xway(struct cast5_ctx *ctx, u8 *dst, 58 - const u8 *src) 59 - { 60 - cast5_dec_blk_16way(ctx, dst, src); 61 - } 62 - 42 + asmlinkage void cast5_ecb_dec_16way(struct cast5_ctx *ctx, u8 *dst, 43 + const u8 *src); 44 + asmlinkage void cast5_cbc_dec_16way(struct cast5_ctx *ctx, u8 *dst, 45 + const u8 *src); 46 + asmlinkage void cast5_ctr_16way(struct cast5_ctx *ctx, u8 *dst, const u8 *src, 47 + __be64 *iv); 63 48 64 49 static inline bool cast5_fpu_begin(bool fpu_enabled, unsigned int nbytes) 65 50 { ··· 64 79 struct cast5_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); 65 80 const unsigned int bsize = CAST5_BLOCK_SIZE; 66 81 unsigned int nbytes; 82 + void (*fn)(struct cast5_ctx *ctx, u8 *dst, const u8 *src); 67 83 int err; 84 + 85 + fn = (enc) ? cast5_ecb_enc_16way : cast5_ecb_dec_16way; 68 86 69 87 err = blkcipher_walk_virt(desc, walk); 70 88 desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; ··· 81 93 /* Process multi-block batch */ 82 94 if (nbytes >= bsize * CAST5_PARALLEL_BLOCKS) { 83 95 do { 84 - if (enc) 85 - cast5_enc_blk_xway(ctx, wdst, wsrc); 86 - else 87 - cast5_dec_blk_xway(ctx, wdst, wsrc); 96 + fn(ctx, wdst, wsrc); 88 97 89 98 wsrc += bsize * CAST5_PARALLEL_BLOCKS; 90 99 wdst += bsize * CAST5_PARALLEL_BLOCKS; ··· 92 107 goto done; 93 108 } 94 109 110 + fn = (enc) ? __cast5_encrypt : __cast5_decrypt; 111 + 95 112 /* Handle leftovers */ 96 113 do { 97 - if (enc) 98 - __cast5_encrypt(ctx, wdst, wsrc); 99 - else 100 - __cast5_decrypt(ctx, wdst, wsrc); 114 + fn(ctx, wdst, wsrc); 101 115 102 116 wsrc += bsize; 103 117 wdst += bsize; ··· 178 194 unsigned int nbytes = walk->nbytes; 179 195 u64 *src = (u64 *)walk->src.virt.addr; 180 196 u64 *dst = (u64 *)walk->dst.virt.addr; 181 - u64 ivs[CAST5_PARALLEL_BLOCKS - 1]; 182 197 u64 last_iv; 183 - int i; 184 198 185 199 /* Start of the last block. */ 186 200 src += nbytes / bsize - 1; ··· 193 211 src -= CAST5_PARALLEL_BLOCKS - 1; 194 212 dst -= CAST5_PARALLEL_BLOCKS - 1; 195 213 196 - for (i = 0; i < CAST5_PARALLEL_BLOCKS - 1; i++) 197 - ivs[i] = src[i]; 198 - 199 - cast5_dec_blk_xway(ctx, (u8 *)dst, (u8 *)src); 200 - 201 - for (i = 0; i < CAST5_PARALLEL_BLOCKS - 1; i++) 202 - *(dst + (i + 1)) ^= *(ivs + i); 214 + cast5_cbc_dec_16way(ctx, (u8 *)dst, (u8 *)src); 203 215 204 216 nbytes -= bsize; 205 217 if (nbytes < bsize) ··· 274 298 unsigned int nbytes = walk->nbytes; 275 299 u64 *src = (u64 *)walk->src.virt.addr; 276 300 u64 *dst = (u64 *)walk->dst.virt.addr; 277 - u64 ctrblk = be64_to_cpu(*(__be64 *)walk->iv); 278 - __be64 ctrblocks[CAST5_PARALLEL_BLOCKS]; 279 - int i; 280 301 281 302 /* Process multi-block batch */ 282 303 if (nbytes >= bsize * CAST5_PARALLEL_BLOCKS) { 283 304 do { 284 - /* create ctrblks for parallel encrypt */ 285 - for (i = 0; i < CAST5_PARALLEL_BLOCKS; i++) { 286 - if (dst != src) 287 - dst[i] = src[i]; 288 - 289 - ctrblocks[i] = cpu_to_be64(ctrblk++); 290 - } 291 - 292 - cast5_enc_blk_xway_xor(ctx, (u8 *)dst, 293 - (u8 *)ctrblocks); 305 + cast5_ctr_16way(ctx, (u8 *)dst, (u8 *)src, 306 + (__be64 *)walk->iv); 294 307 295 308 src += CAST5_PARALLEL_BLOCKS; 296 309 dst += CAST5_PARALLEL_BLOCKS; ··· 292 327 293 328 /* Handle leftovers */ 294 329 do { 330 + u64 ctrblk; 331 + 295 332 if (dst != src) 296 333 *dst = *src; 297 334 298 - ctrblocks[0] = cpu_to_be64(ctrblk++); 335 + ctrblk = *(u64 *)walk->iv; 336 + be64_add_cpu((__be64 *)walk->iv, 1); 299 337 300 - __cast5_encrypt(ctx, (u8 *)ctrblocks, (u8 *)ctrblocks); 301 - *dst ^= ctrblocks[0]; 338 + __cast5_encrypt(ctx, (u8 *)&ctrblk, (u8 *)&ctrblk); 339 + *dst ^= ctrblk; 302 340 303 341 src += 1; 304 342 dst += 1; ··· 309 341 } while (nbytes >= bsize); 310 342 311 343 done: 312 - *(__be64 *)walk->iv = cpu_to_be64(ctrblk); 313 344 return nbytes; 314 345 } 315 346
+131 -75
arch/x86/crypto/cast6-avx-x86_64-asm_64.S
··· 23 23 * 24 24 */ 25 25 26 + #include "glue_helper-asm-avx.S" 27 + 26 28 .file "cast6-avx-x86_64-asm_64.S" 27 29 28 - .extern cast6_s1 29 - .extern cast6_s2 30 - .extern cast6_s3 31 - .extern cast6_s4 30 + .extern cast_s1 31 + .extern cast_s2 32 + .extern cast_s3 33 + .extern cast_s4 32 34 33 35 /* structure of crypto context */ 34 36 #define km 0 35 37 #define kr (12*4*4) 36 38 37 39 /* s-boxes */ 38 - #define s1 cast6_s1 39 - #define s2 cast6_s2 40 - #define s3 cast6_s3 41 - #define s4 cast6_s4 40 + #define s1 cast_s1 41 + #define s2 cast_s2 42 + #define s3 cast_s3 43 + #define s4 cast_s4 42 44 43 45 /********************************************************************** 44 46 8-way AVX cast6 ··· 207 205 vpunpcklqdq x3, t2, x2; \ 208 206 vpunpckhqdq x3, t2, x3; 209 207 210 - #define inpack_blocks(in, x0, x1, x2, x3, t0, t1, t2, rmask) \ 211 - vmovdqu (0*4*4)(in), x0; \ 212 - vmovdqu (1*4*4)(in), x1; \ 213 - vmovdqu (2*4*4)(in), x2; \ 214 - vmovdqu (3*4*4)(in), x3; \ 208 + #define inpack_blocks(x0, x1, x2, x3, t0, t1, t2, rmask) \ 215 209 vpshufb rmask, x0, x0; \ 216 210 vpshufb rmask, x1, x1; \ 217 211 vpshufb rmask, x2, x2; \ ··· 215 217 \ 216 218 transpose_4x4(x0, x1, x2, x3, t0, t1, t2) 217 219 218 - #define outunpack_blocks(out, x0, x1, x2, x3, t0, t1, t2, rmask) \ 220 + #define outunpack_blocks(x0, x1, x2, x3, t0, t1, t2, rmask) \ 219 221 transpose_4x4(x0, x1, x2, x3, t0, t1, t2) \ 220 222 \ 221 223 vpshufb rmask, x0, x0; \ 222 224 vpshufb rmask, x1, x1; \ 223 225 vpshufb rmask, x2, x2; \ 224 - vpshufb rmask, x3, x3; \ 225 - vmovdqu x0, (0*4*4)(out); \ 226 - vmovdqu x1, (1*4*4)(out); \ 227 - vmovdqu x2, (2*4*4)(out); \ 228 - vmovdqu x3, (3*4*4)(out); 229 - 230 - #define outunpack_xor_blocks(out, x0, x1, x2, x3, t0, t1, t2, rmask) \ 231 - transpose_4x4(x0, x1, x2, x3, t0, t1, t2) \ 232 - \ 233 - vpshufb rmask, x0, x0; \ 234 - vpshufb rmask, x1, x1; \ 235 - vpshufb rmask, x2, x2; \ 236 - vpshufb rmask, x3, x3; \ 237 - vpxor (0*4*4)(out), x0, x0; \ 238 - vmovdqu x0, (0*4*4)(out); \ 239 - vpxor (1*4*4)(out), x1, x1; \ 240 - vmovdqu x1, (1*4*4)(out); \ 241 - vpxor (2*4*4)(out), x2, x2; \ 242 - vmovdqu x2, (2*4*4)(out); \ 243 - vpxor (3*4*4)(out), x3, x3; \ 244 - vmovdqu x3, (3*4*4)(out); 226 + vpshufb rmask, x3, x3; 245 227 246 228 .data 247 229 248 230 .align 16 249 231 .Lbswap_mask: 250 232 .byte 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 233 + .Lbswap128_mask: 234 + .byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 251 235 .Lrkr_enc_Q_Q_QBAR_QBAR: 252 236 .byte 0, 1, 2, 3, 4, 5, 6, 7, 11, 10, 9, 8, 15, 14, 13, 12 253 237 .Lrkr_enc_QBAR_QBAR_QBAR_QBAR: ··· 249 269 250 270 .text 251 271 252 - .align 16 253 - .global __cast6_enc_blk_8way 254 - .type __cast6_enc_blk_8way,@function; 272 + .align 8 273 + .type __cast6_enc_blk8,@function; 255 274 256 - __cast6_enc_blk_8way: 275 + __cast6_enc_blk8: 257 276 /* input: 258 277 * %rdi: ctx, CTX 259 - * %rsi: dst 260 - * %rdx: src 261 - * %rcx: bool, if true: xor output 278 + * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: blocks 279 + * output: 280 + * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: encrypted blocks 262 281 */ 263 282 264 283 pushq %rbp; 265 284 pushq %rbx; 266 - pushq %rcx; 267 285 268 286 vmovdqa .Lbswap_mask, RKM; 269 287 vmovd .Lfirst_mask, R1ST; 270 288 vmovd .L32_mask, R32; 271 289 272 - leaq (4*4*4)(%rdx), %rax; 273 - inpack_blocks(%rdx, RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); 274 - inpack_blocks(%rax, RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); 275 - 276 - movq %rsi, %r11; 290 + inpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); 291 + inpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); 277 292 278 293 preload_rkr(0, dummy, none); 279 294 Q(0); ··· 286 311 QBAR(10); 287 312 QBAR(11); 288 313 289 - popq %rcx; 290 314 popq %rbx; 291 315 popq %rbp; 292 316 293 317 vmovdqa .Lbswap_mask, RKM; 294 - leaq (4*4*4)(%r11), %rax; 295 318 296 - testb %cl, %cl; 297 - jnz __enc_xor8; 298 - 299 - outunpack_blocks(%r11, RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); 300 - outunpack_blocks(%rax, RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); 319 + outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); 320 + outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); 301 321 302 322 ret; 303 323 304 - __enc_xor8: 305 - outunpack_xor_blocks(%r11, RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); 306 - outunpack_xor_blocks(%rax, RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); 324 + .align 8 325 + .type __cast6_dec_blk8,@function; 307 326 308 - ret; 309 - 310 - .align 16 311 - .global cast6_dec_blk_8way 312 - .type cast6_dec_blk_8way,@function; 313 - 314 - cast6_dec_blk_8way: 327 + __cast6_dec_blk8: 315 328 /* input: 316 329 * %rdi: ctx, CTX 317 - * %rsi: dst 318 - * %rdx: src 330 + * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: encrypted blocks 331 + * output: 332 + * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: decrypted blocks 319 333 */ 320 334 321 335 pushq %rbp; ··· 314 350 vmovd .Lfirst_mask, R1ST; 315 351 vmovd .L32_mask, R32; 316 352 317 - leaq (4*4*4)(%rdx), %rax; 318 - inpack_blocks(%rdx, RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); 319 - inpack_blocks(%rax, RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); 320 - 321 - movq %rsi, %r11; 353 + inpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); 354 + inpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); 322 355 323 356 preload_rkr(2, shuffle, .Lrkr_dec_Q_Q_Q_Q); 324 357 Q(11); ··· 337 376 popq %rbp; 338 377 339 378 vmovdqa .Lbswap_mask, RKM; 340 - leaq (4*4*4)(%r11), %rax; 341 - outunpack_blocks(%r11, RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); 342 - outunpack_blocks(%rax, RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); 379 + outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); 380 + outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); 381 + 382 + ret; 383 + 384 + .align 8 385 + .global cast6_ecb_enc_8way 386 + .type cast6_ecb_enc_8way,@function; 387 + 388 + cast6_ecb_enc_8way: 389 + /* input: 390 + * %rdi: ctx, CTX 391 + * %rsi: dst 392 + * %rdx: src 393 + */ 394 + 395 + movq %rsi, %r11; 396 + 397 + load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 398 + 399 + call __cast6_enc_blk8; 400 + 401 + store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 402 + 403 + ret; 404 + 405 + .align 8 406 + .global cast6_ecb_dec_8way 407 + .type cast6_ecb_dec_8way,@function; 408 + 409 + cast6_ecb_dec_8way: 410 + /* input: 411 + * %rdi: ctx, CTX 412 + * %rsi: dst 413 + * %rdx: src 414 + */ 415 + 416 + movq %rsi, %r11; 417 + 418 + load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 419 + 420 + call __cast6_dec_blk8; 421 + 422 + store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 423 + 424 + ret; 425 + 426 + .align 8 427 + .global cast6_cbc_dec_8way 428 + .type cast6_cbc_dec_8way,@function; 429 + 430 + cast6_cbc_dec_8way: 431 + /* input: 432 + * %rdi: ctx, CTX 433 + * %rsi: dst 434 + * %rdx: src 435 + */ 436 + 437 + pushq %r12; 438 + 439 + movq %rsi, %r11; 440 + movq %rdx, %r12; 441 + 442 + load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 443 + 444 + call __cast6_dec_blk8; 445 + 446 + store_cbc_8way(%r12, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 447 + 448 + popq %r12; 449 + 450 + ret; 451 + 452 + .align 8 453 + .global cast6_ctr_8way 454 + .type cast6_ctr_8way,@function; 455 + 456 + cast6_ctr_8way: 457 + /* input: 458 + * %rdi: ctx, CTX 459 + * %rsi: dst 460 + * %rdx: src 461 + * %rcx: iv (little endian, 128bit) 462 + */ 463 + 464 + pushq %r12; 465 + 466 + movq %rsi, %r11; 467 + movq %rdx, %r12; 468 + 469 + load_ctr_8way(%rcx, .Lbswap128_mask, RA1, RB1, RC1, RD1, RA2, RB2, RC2, 470 + RD2, RX, RKR, RKM); 471 + 472 + call __cast6_enc_blk8; 473 + 474 + store_ctr_8way(%r12, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 475 + 476 + popq %r12; 343 477 344 478 ret;
+16 -61
arch/x86/crypto/cast6_avx_glue.c
··· 40 40 41 41 #define CAST6_PARALLEL_BLOCKS 8 42 42 43 - asmlinkage void __cast6_enc_blk_8way(struct cast6_ctx *ctx, u8 *dst, 44 - const u8 *src, bool xor); 45 - asmlinkage void cast6_dec_blk_8way(struct cast6_ctx *ctx, u8 *dst, 43 + asmlinkage void cast6_ecb_enc_8way(struct cast6_ctx *ctx, u8 *dst, 44 + const u8 *src); 45 + asmlinkage void cast6_ecb_dec_8way(struct cast6_ctx *ctx, u8 *dst, 46 46 const u8 *src); 47 47 48 - static inline void cast6_enc_blk_xway(struct cast6_ctx *ctx, u8 *dst, 49 - const u8 *src) 50 - { 51 - __cast6_enc_blk_8way(ctx, dst, src, false); 52 - } 48 + asmlinkage void cast6_cbc_dec_8way(struct cast6_ctx *ctx, u8 *dst, 49 + const u8 *src); 50 + asmlinkage void cast6_ctr_8way(struct cast6_ctx *ctx, u8 *dst, const u8 *src, 51 + le128 *iv); 53 52 54 - static inline void cast6_enc_blk_xway_xor(struct cast6_ctx *ctx, u8 *dst, 55 - const u8 *src) 56 - { 57 - __cast6_enc_blk_8way(ctx, dst, src, true); 58 - } 59 - 60 - static inline void cast6_dec_blk_xway(struct cast6_ctx *ctx, u8 *dst, 61 - const u8 *src) 62 - { 63 - cast6_dec_blk_8way(ctx, dst, src); 64 - } 65 - 66 - 67 - static void cast6_decrypt_cbc_xway(void *ctx, u128 *dst, const u128 *src) 68 - { 69 - u128 ivs[CAST6_PARALLEL_BLOCKS - 1]; 70 - unsigned int j; 71 - 72 - for (j = 0; j < CAST6_PARALLEL_BLOCKS - 1; j++) 73 - ivs[j] = src[j]; 74 - 75 - cast6_dec_blk_xway(ctx, (u8 *)dst, (u8 *)src); 76 - 77 - for (j = 0; j < CAST6_PARALLEL_BLOCKS - 1; j++) 78 - u128_xor(dst + (j + 1), dst + (j + 1), ivs + j); 79 - } 80 - 81 - static void cast6_crypt_ctr(void *ctx, u128 *dst, const u128 *src, u128 *iv) 53 + static void cast6_crypt_ctr(void *ctx, u128 *dst, const u128 *src, le128 *iv) 82 54 { 83 55 be128 ctrblk; 84 56 85 - u128_to_be128(&ctrblk, iv); 86 - u128_inc(iv); 57 + le128_to_be128(&ctrblk, iv); 58 + le128_inc(iv); 87 59 88 60 __cast6_encrypt(ctx, (u8 *)&ctrblk, (u8 *)&ctrblk); 89 61 u128_xor(dst, src, (u128 *)&ctrblk); 90 - } 91 - 92 - static void cast6_crypt_ctr_xway(void *ctx, u128 *dst, const u128 *src, 93 - u128 *iv) 94 - { 95 - be128 ctrblks[CAST6_PARALLEL_BLOCKS]; 96 - unsigned int i; 97 - 98 - for (i = 0; i < CAST6_PARALLEL_BLOCKS; i++) { 99 - if (dst != src) 100 - dst[i] = src[i]; 101 - 102 - u128_to_be128(&ctrblks[i], iv); 103 - u128_inc(iv); 104 - } 105 - 106 - cast6_enc_blk_xway_xor(ctx, (u8 *)dst, (u8 *)ctrblks); 107 62 } 108 63 109 64 static const struct common_glue_ctx cast6_enc = { ··· 67 112 68 113 .funcs = { { 69 114 .num_blocks = CAST6_PARALLEL_BLOCKS, 70 - .fn_u = { .ecb = GLUE_FUNC_CAST(cast6_enc_blk_xway) } 115 + .fn_u = { .ecb = GLUE_FUNC_CAST(cast6_ecb_enc_8way) } 71 116 }, { 72 117 .num_blocks = 1, 73 118 .fn_u = { .ecb = GLUE_FUNC_CAST(__cast6_encrypt) } ··· 80 125 81 126 .funcs = { { 82 127 .num_blocks = CAST6_PARALLEL_BLOCKS, 83 - .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(cast6_crypt_ctr_xway) } 128 + .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(cast6_ctr_8way) } 84 129 }, { 85 130 .num_blocks = 1, 86 131 .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(cast6_crypt_ctr) } ··· 93 138 94 139 .funcs = { { 95 140 .num_blocks = CAST6_PARALLEL_BLOCKS, 96 - .fn_u = { .ecb = GLUE_FUNC_CAST(cast6_dec_blk_xway) } 141 + .fn_u = { .ecb = GLUE_FUNC_CAST(cast6_ecb_dec_8way) } 97 142 }, { 98 143 .num_blocks = 1, 99 144 .fn_u = { .ecb = GLUE_FUNC_CAST(__cast6_decrypt) } ··· 106 151 107 152 .funcs = { { 108 153 .num_blocks = CAST6_PARALLEL_BLOCKS, 109 - .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(cast6_decrypt_cbc_xway) } 154 + .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(cast6_cbc_dec_8way) } 110 155 }, { 111 156 .num_blocks = 1, 112 157 .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(__cast6_decrypt) } ··· 170 215 ctx->fpu_enabled = cast6_fpu_begin(ctx->fpu_enabled, nbytes); 171 216 172 217 if (nbytes == bsize * CAST6_PARALLEL_BLOCKS) { 173 - cast6_enc_blk_xway(ctx->ctx, srcdst, srcdst); 218 + cast6_ecb_enc_8way(ctx->ctx, srcdst, srcdst); 174 219 return; 175 220 } 176 221 ··· 187 232 ctx->fpu_enabled = cast6_fpu_begin(ctx->fpu_enabled, nbytes); 188 233 189 234 if (nbytes == bsize * CAST6_PARALLEL_BLOCKS) { 190 - cast6_dec_blk_xway(ctx->ctx, srcdst, srcdst); 235 + cast6_ecb_dec_8way(ctx->ctx, srcdst, srcdst); 191 236 return; 192 237 } 193 238
+81
arch/x86/crypto/crc32c-intel.c arch/x86/crypto/crc32c-intel_glue.c
··· 32 32 33 33 #include <asm/cpufeature.h> 34 34 #include <asm/cpu_device_id.h> 35 + #include <asm/i387.h> 36 + #include <asm/fpu-internal.h> 35 37 36 38 #define CHKSUM_BLOCK_SIZE 1 37 39 #define CHKSUM_DIGEST_SIZE 4 ··· 45 43 #else 46 44 #define REX_PRE 47 45 #endif 46 + 47 + #ifdef CONFIG_X86_64 48 + /* 49 + * use carryless multiply version of crc32c when buffer 50 + * size is >= 512 (when eager fpu is enabled) or 51 + * >= 1024 (when eager fpu is disabled) to account 52 + * for fpu state save/restore overhead. 53 + */ 54 + #define CRC32C_PCL_BREAKEVEN_EAGERFPU 512 55 + #define CRC32C_PCL_BREAKEVEN_NOEAGERFPU 1024 56 + 57 + asmlinkage unsigned int crc_pcl(const u8 *buffer, int len, 58 + unsigned int crc_init); 59 + static int crc32c_pcl_breakeven = CRC32C_PCL_BREAKEVEN_EAGERFPU; 60 + #if defined(X86_FEATURE_EAGER_FPU) 61 + #define set_pcl_breakeven_point() \ 62 + do { \ 63 + if (!use_eager_fpu()) \ 64 + crc32c_pcl_breakeven = CRC32C_PCL_BREAKEVEN_NOEAGERFPU; \ 65 + } while (0) 66 + #else 67 + #define set_pcl_breakeven_point() \ 68 + (crc32c_pcl_breakeven = CRC32C_PCL_BREAKEVEN_NOEAGERFPU) 69 + #endif 70 + #endif /* CONFIG_X86_64 */ 48 71 49 72 static u32 crc32c_intel_le_hw_byte(u32 crc, unsigned char const *data, size_t length) 50 73 { ··· 181 154 return 0; 182 155 } 183 156 157 + #ifdef CONFIG_X86_64 158 + static int crc32c_pcl_intel_update(struct shash_desc *desc, const u8 *data, 159 + unsigned int len) 160 + { 161 + u32 *crcp = shash_desc_ctx(desc); 162 + 163 + /* 164 + * use faster PCL version if datasize is large enough to 165 + * overcome kernel fpu state save/restore overhead 166 + */ 167 + if (len >= crc32c_pcl_breakeven && irq_fpu_usable()) { 168 + kernel_fpu_begin(); 169 + *crcp = crc_pcl(data, len, *crcp); 170 + kernel_fpu_end(); 171 + } else 172 + *crcp = crc32c_intel_le_hw(*crcp, data, len); 173 + return 0; 174 + } 175 + 176 + static int __crc32c_pcl_intel_finup(u32 *crcp, const u8 *data, unsigned int len, 177 + u8 *out) 178 + { 179 + if (len >= crc32c_pcl_breakeven && irq_fpu_usable()) { 180 + kernel_fpu_begin(); 181 + *(__le32 *)out = ~cpu_to_le32(crc_pcl(data, len, *crcp)); 182 + kernel_fpu_end(); 183 + } else 184 + *(__le32 *)out = 185 + ~cpu_to_le32(crc32c_intel_le_hw(*crcp, data, len)); 186 + return 0; 187 + } 188 + 189 + static int crc32c_pcl_intel_finup(struct shash_desc *desc, const u8 *data, 190 + unsigned int len, u8 *out) 191 + { 192 + return __crc32c_pcl_intel_finup(shash_desc_ctx(desc), data, len, out); 193 + } 194 + 195 + static int crc32c_pcl_intel_digest(struct shash_desc *desc, const u8 *data, 196 + unsigned int len, u8 *out) 197 + { 198 + return __crc32c_pcl_intel_finup(crypto_shash_ctx(desc->tfm), data, len, 199 + out); 200 + } 201 + #endif /* CONFIG_X86_64 */ 202 + 184 203 static struct shash_alg alg = { 185 204 .setkey = crc32c_intel_setkey, 186 205 .init = crc32c_intel_init, ··· 257 184 { 258 185 if (!x86_match_cpu(crc32c_cpu_id)) 259 186 return -ENODEV; 187 + #ifdef CONFIG_X86_64 188 + if (cpu_has_pclmulqdq) { 189 + alg.update = crc32c_pcl_intel_update; 190 + alg.finup = crc32c_pcl_intel_finup; 191 + alg.digest = crc32c_pcl_intel_digest; 192 + set_pcl_breakeven_point(); 193 + } 194 + #endif 260 195 return crypto_register_shash(&alg); 261 196 } 262 197
+460
arch/x86/crypto/crc32c-pcl-intel-asm_64.S
··· 1 + /* 2 + * Implement fast CRC32C with PCLMULQDQ instructions. (x86_64) 3 + * 4 + * The white paper on CRC32C calculations with PCLMULQDQ instruction can be 5 + * downloaded from: 6 + * http://download.intel.com/design/intarch/papers/323405.pdf 7 + * 8 + * Copyright (C) 2012 Intel Corporation. 9 + * 10 + * Authors: 11 + * Wajdi Feghali <wajdi.k.feghali@intel.com> 12 + * James Guilford <james.guilford@intel.com> 13 + * David Cote <david.m.cote@intel.com> 14 + * Tim Chen <tim.c.chen@linux.intel.com> 15 + * 16 + * This software is available to you under a choice of one of two 17 + * licenses. You may choose to be licensed under the terms of the GNU 18 + * General Public License (GPL) Version 2, available from the file 19 + * COPYING in the main directory of this source tree, or the 20 + * OpenIB.org BSD license below: 21 + * 22 + * Redistribution and use in source and binary forms, with or 23 + * without modification, are permitted provided that the following 24 + * conditions are met: 25 + * 26 + * - Redistributions of source code must retain the above 27 + * copyright notice, this list of conditions and the following 28 + * disclaimer. 29 + * 30 + * - Redistributions in binary form must reproduce the above 31 + * copyright notice, this list of conditions and the following 32 + * disclaimer in the documentation and/or other materials 33 + * provided with the distribution. 34 + * 35 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 36 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 37 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 38 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 39 + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 40 + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 41 + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 42 + * SOFTWARE. 43 + */ 44 + 45 + ## ISCSI CRC 32 Implementation with crc32 and pclmulqdq Instruction 46 + 47 + .macro LABEL prefix n 48 + \prefix\n\(): 49 + .endm 50 + 51 + .macro JMPTBL_ENTRY i 52 + .word crc_\i - crc_array 53 + .endm 54 + 55 + .macro JNC_LESS_THAN j 56 + jnc less_than_\j 57 + .endm 58 + 59 + # Define threshold where buffers are considered "small" and routed to more 60 + # efficient "by-1" code. This "by-1" code only handles up to 255 bytes, so 61 + # SMALL_SIZE can be no larger than 255. 62 + 63 + #define SMALL_SIZE 200 64 + 65 + .if (SMALL_SIZE > 255) 66 + .error "SMALL_ SIZE must be < 256" 67 + .endif 68 + 69 + # unsigned int crc_pcl(u8 *buffer, int len, unsigned int crc_init); 70 + 71 + .global crc_pcl 72 + crc_pcl: 73 + #define bufp %rdi 74 + #define bufp_dw %edi 75 + #define bufp_w %di 76 + #define bufp_b %dil 77 + #define bufptmp %rcx 78 + #define block_0 %rcx 79 + #define block_1 %rdx 80 + #define block_2 %r11 81 + #define len %rsi 82 + #define len_dw %esi 83 + #define len_w %si 84 + #define len_b %sil 85 + #define crc_init_arg %rdx 86 + #define tmp %rbx 87 + #define crc_init %r8 88 + #define crc_init_dw %r8d 89 + #define crc1 %r9 90 + #define crc2 %r10 91 + 92 + pushq %rbx 93 + pushq %rdi 94 + pushq %rsi 95 + 96 + ## Move crc_init for Linux to a different 97 + mov crc_init_arg, crc_init 98 + 99 + ################################################################ 100 + ## 1) ALIGN: 101 + ################################################################ 102 + 103 + mov bufp, bufptmp # rdi = *buf 104 + neg bufp 105 + and $7, bufp # calculate the unalignment amount of 106 + # the address 107 + je proc_block # Skip if aligned 108 + 109 + ## If len is less than 8 and we're unaligned, we need to jump 110 + ## to special code to avoid reading beyond the end of the buffer 111 + cmp $8, len 112 + jae do_align 113 + # less_than_8 expects length in upper 3 bits of len_dw 114 + # less_than_8_post_shl1 expects length = carryflag * 8 + len_dw[31:30] 115 + shl $32-3+1, len_dw 116 + jmp less_than_8_post_shl1 117 + 118 + do_align: 119 + #### Calculate CRC of unaligned bytes of the buffer (if any) 120 + movq (bufptmp), tmp # load a quadward from the buffer 121 + add bufp, bufptmp # align buffer pointer for quadword 122 + # processing 123 + sub bufp, len # update buffer length 124 + align_loop: 125 + crc32b %bl, crc_init_dw # compute crc32 of 1-byte 126 + shr $8, tmp # get next byte 127 + dec bufp 128 + jne align_loop 129 + 130 + proc_block: 131 + 132 + ################################################################ 133 + ## 2) PROCESS BLOCKS: 134 + ################################################################ 135 + 136 + ## compute num of bytes to be processed 137 + movq len, tmp # save num bytes in tmp 138 + 139 + cmpq $128*24, len 140 + jae full_block 141 + 142 + continue_block: 143 + cmpq $SMALL_SIZE, len 144 + jb small 145 + 146 + ## len < 128*24 147 + movq $2731, %rax # 2731 = ceil(2^16 / 24) 148 + mul len_dw 149 + shrq $16, %rax 150 + 151 + ## eax contains floor(bytes / 24) = num 24-byte chunks to do 152 + 153 + ## process rax 24-byte chunks (128 >= rax >= 0) 154 + 155 + ## compute end address of each block 156 + ## block 0 (base addr + RAX * 8) 157 + ## block 1 (base addr + RAX * 16) 158 + ## block 2 (base addr + RAX * 24) 159 + lea (bufptmp, %rax, 8), block_0 160 + lea (block_0, %rax, 8), block_1 161 + lea (block_1, %rax, 8), block_2 162 + 163 + xor crc1, crc1 164 + xor crc2, crc2 165 + 166 + ## branch into array 167 + lea jump_table(%rip), bufp 168 + movzxw (bufp, %rax, 2), len 169 + offset=crc_array-jump_table 170 + lea offset(bufp, len, 1), bufp 171 + jmp *bufp 172 + 173 + ################################################################ 174 + ## 2a) PROCESS FULL BLOCKS: 175 + ################################################################ 176 + full_block: 177 + movq $128,%rax 178 + lea 128*8*2(block_0), block_1 179 + lea 128*8*3(block_0), block_2 180 + add $128*8*1, block_0 181 + 182 + xor crc1,crc1 183 + xor crc2,crc2 184 + 185 + # Fall thruogh into top of crc array (crc_128) 186 + 187 + ################################################################ 188 + ## 3) CRC Array: 189 + ################################################################ 190 + 191 + crc_array: 192 + i=128 193 + .rept 128-1 194 + .altmacro 195 + LABEL crc_ %i 196 + .noaltmacro 197 + crc32q -i*8(block_0), crc_init 198 + crc32q -i*8(block_1), crc1 199 + crc32q -i*8(block_2), crc2 200 + i=(i-1) 201 + .endr 202 + 203 + .altmacro 204 + LABEL crc_ %i 205 + .noaltmacro 206 + crc32q -i*8(block_0), crc_init 207 + crc32q -i*8(block_1), crc1 208 + # SKIP crc32 -i*8(block_2), crc2 ; Don't do this one yet 209 + 210 + mov block_2, block_0 211 + 212 + ################################################################ 213 + ## 4) Combine three results: 214 + ################################################################ 215 + 216 + lea (K_table-16)(%rip), bufp # first entry is for idx 1 217 + shlq $3, %rax # rax *= 8 218 + subq %rax, tmp # tmp -= rax*8 219 + shlq $1, %rax 220 + subq %rax, tmp # tmp -= rax*16 221 + # (total tmp -= rax*24) 222 + addq %rax, bufp 223 + 224 + movdqa (bufp), %xmm0 # 2 consts: K1:K2 225 + 226 + movq crc_init, %xmm1 # CRC for block 1 227 + pclmulqdq $0x00,%xmm0,%xmm1 # Multiply by K2 228 + 229 + movq crc1, %xmm2 # CRC for block 2 230 + pclmulqdq $0x10, %xmm0, %xmm2 # Multiply by K1 231 + 232 + pxor %xmm2,%xmm1 233 + movq %xmm1, %rax 234 + xor -i*8(block_2), %rax 235 + mov crc2, crc_init 236 + crc32 %rax, crc_init 237 + 238 + ################################################################ 239 + ## 5) Check for end: 240 + ################################################################ 241 + 242 + LABEL crc_ 0 243 + mov tmp, len 244 + cmp $128*24, tmp 245 + jae full_block 246 + cmp $24, tmp 247 + jae continue_block 248 + 249 + less_than_24: 250 + shl $32-4, len_dw # less_than_16 expects length 251 + # in upper 4 bits of len_dw 252 + jnc less_than_16 253 + crc32q (bufptmp), crc_init 254 + crc32q 8(bufptmp), crc_init 255 + jz do_return 256 + add $16, bufptmp 257 + # len is less than 8 if we got here 258 + # less_than_8 expects length in upper 3 bits of len_dw 259 + # less_than_8_post_shl1 expects length = carryflag * 8 + len_dw[31:30] 260 + shl $2, len_dw 261 + jmp less_than_8_post_shl1 262 + 263 + ####################################################################### 264 + ## 6) LESS THAN 256-bytes REMAIN AT THIS POINT (8-bits of len are full) 265 + ####################################################################### 266 + small: 267 + shl $32-8, len_dw # Prepare len_dw for less_than_256 268 + j=256 269 + .rept 5 # j = {256, 128, 64, 32, 16} 270 + .altmacro 271 + LABEL less_than_ %j # less_than_j: Length should be in 272 + # upper lg(j) bits of len_dw 273 + j=(j/2) 274 + shl $1, len_dw # Get next MSB 275 + JNC_LESS_THAN %j 276 + .noaltmacro 277 + i=0 278 + .rept (j/8) 279 + crc32q i(bufptmp), crc_init # Compute crc32 of 8-byte data 280 + i=i+8 281 + .endr 282 + jz do_return # Return if remaining length is zero 283 + add $j, bufptmp # Advance buf 284 + .endr 285 + 286 + less_than_8: # Length should be stored in 287 + # upper 3 bits of len_dw 288 + shl $1, len_dw 289 + less_than_8_post_shl1: 290 + jnc less_than_4 291 + crc32l (bufptmp), crc_init_dw # CRC of 4 bytes 292 + jz do_return # return if remaining data is zero 293 + add $4, bufptmp 294 + less_than_4: # Length should be stored in 295 + # upper 2 bits of len_dw 296 + shl $1, len_dw 297 + jnc less_than_2 298 + crc32w (bufptmp), crc_init_dw # CRC of 2 bytes 299 + jz do_return # return if remaining data is zero 300 + add $2, bufptmp 301 + less_than_2: # Length should be stored in the MSB 302 + # of len_dw 303 + shl $1, len_dw 304 + jnc less_than_1 305 + crc32b (bufptmp), crc_init_dw # CRC of 1 byte 306 + less_than_1: # Length should be zero 307 + do_return: 308 + movq crc_init, %rax 309 + popq %rsi 310 + popq %rdi 311 + popq %rbx 312 + ret 313 + 314 + ################################################################ 315 + ## jump table Table is 129 entries x 2 bytes each 316 + ################################################################ 317 + .align 4 318 + jump_table: 319 + i=0 320 + .rept 129 321 + .altmacro 322 + JMPTBL_ENTRY %i 323 + .noaltmacro 324 + i=i+1 325 + .endr 326 + ################################################################ 327 + ## PCLMULQDQ tables 328 + ## Table is 128 entries x 2 quad words each 329 + ################################################################ 330 + .data 331 + .align 64 332 + K_table: 333 + .quad 0x14cd00bd6,0x105ec76f0 334 + .quad 0x0ba4fc28e,0x14cd00bd6 335 + .quad 0x1d82c63da,0x0f20c0dfe 336 + .quad 0x09e4addf8,0x0ba4fc28e 337 + .quad 0x039d3b296,0x1384aa63a 338 + .quad 0x102f9b8a2,0x1d82c63da 339 + .quad 0x14237f5e6,0x01c291d04 340 + .quad 0x00d3b6092,0x09e4addf8 341 + .quad 0x0c96cfdc0,0x0740eef02 342 + .quad 0x18266e456,0x039d3b296 343 + .quad 0x0daece73e,0x0083a6eec 344 + .quad 0x0ab7aff2a,0x102f9b8a2 345 + .quad 0x1248ea574,0x1c1733996 346 + .quad 0x083348832,0x14237f5e6 347 + .quad 0x12c743124,0x02ad91c30 348 + .quad 0x0b9e02b86,0x00d3b6092 349 + .quad 0x018b33a4e,0x06992cea2 350 + .quad 0x1b331e26a,0x0c96cfdc0 351 + .quad 0x17d35ba46,0x07e908048 352 + .quad 0x1bf2e8b8a,0x18266e456 353 + .quad 0x1a3e0968a,0x11ed1f9d8 354 + .quad 0x0ce7f39f4,0x0daece73e 355 + .quad 0x061d82e56,0x0f1d0f55e 356 + .quad 0x0d270f1a2,0x0ab7aff2a 357 + .quad 0x1c3f5f66c,0x0a87ab8a8 358 + .quad 0x12ed0daac,0x1248ea574 359 + .quad 0x065863b64,0x08462d800 360 + .quad 0x11eef4f8e,0x083348832 361 + .quad 0x1ee54f54c,0x071d111a8 362 + .quad 0x0b3e32c28,0x12c743124 363 + .quad 0x0064f7f26,0x0ffd852c6 364 + .quad 0x0dd7e3b0c,0x0b9e02b86 365 + .quad 0x0f285651c,0x0dcb17aa4 366 + .quad 0x010746f3c,0x018b33a4e 367 + .quad 0x1c24afea4,0x0f37c5aee 368 + .quad 0x0271d9844,0x1b331e26a 369 + .quad 0x08e766a0c,0x06051d5a2 370 + .quad 0x093a5f730,0x17d35ba46 371 + .quad 0x06cb08e5c,0x11d5ca20e 372 + .quad 0x06b749fb2,0x1bf2e8b8a 373 + .quad 0x1167f94f2,0x021f3d99c 374 + .quad 0x0cec3662e,0x1a3e0968a 375 + .quad 0x19329634a,0x08f158014 376 + .quad 0x0e6fc4e6a,0x0ce7f39f4 377 + .quad 0x08227bb8a,0x1a5e82106 378 + .quad 0x0b0cd4768,0x061d82e56 379 + .quad 0x13c2b89c4,0x188815ab2 380 + .quad 0x0d7a4825c,0x0d270f1a2 381 + .quad 0x10f5ff2ba,0x105405f3e 382 + .quad 0x00167d312,0x1c3f5f66c 383 + .quad 0x0f6076544,0x0e9adf796 384 + .quad 0x026f6a60a,0x12ed0daac 385 + .quad 0x1a2adb74e,0x096638b34 386 + .quad 0x19d34af3a,0x065863b64 387 + .quad 0x049c3cc9c,0x1e50585a0 388 + .quad 0x068bce87a,0x11eef4f8e 389 + .quad 0x1524fa6c6,0x19f1c69dc 390 + .quad 0x16cba8aca,0x1ee54f54c 391 + .quad 0x042d98888,0x12913343e 392 + .quad 0x1329d9f7e,0x0b3e32c28 393 + .quad 0x1b1c69528,0x088f25a3a 394 + .quad 0x02178513a,0x0064f7f26 395 + .quad 0x0e0ac139e,0x04e36f0b0 396 + .quad 0x0170076fa,0x0dd7e3b0c 397 + .quad 0x141a1a2e2,0x0bd6f81f8 398 + .quad 0x16ad828b4,0x0f285651c 399 + .quad 0x041d17b64,0x19425cbba 400 + .quad 0x1fae1cc66,0x010746f3c 401 + .quad 0x1a75b4b00,0x18db37e8a 402 + .quad 0x0f872e54c,0x1c24afea4 403 + .quad 0x01e41e9fc,0x04c144932 404 + .quad 0x086d8e4d2,0x0271d9844 405 + .quad 0x160f7af7a,0x052148f02 406 + .quad 0x05bb8f1bc,0x08e766a0c 407 + .quad 0x0a90fd27a,0x0a3c6f37a 408 + .quad 0x0b3af077a,0x093a5f730 409 + .quad 0x04984d782,0x1d22c238e 410 + .quad 0x0ca6ef3ac,0x06cb08e5c 411 + .quad 0x0234e0b26,0x063ded06a 412 + .quad 0x1d88abd4a,0x06b749fb2 413 + .quad 0x04597456a,0x04d56973c 414 + .quad 0x0e9e28eb4,0x1167f94f2 415 + .quad 0x07b3ff57a,0x19385bf2e 416 + .quad 0x0c9c8b782,0x0cec3662e 417 + .quad 0x13a9cba9e,0x0e417f38a 418 + .quad 0x093e106a4,0x19329634a 419 + .quad 0x167001a9c,0x14e727980 420 + .quad 0x1ddffc5d4,0x0e6fc4e6a 421 + .quad 0x00df04680,0x0d104b8fc 422 + .quad 0x02342001e,0x08227bb8a 423 + .quad 0x00a2a8d7e,0x05b397730 424 + .quad 0x168763fa6,0x0b0cd4768 425 + .quad 0x1ed5a407a,0x0e78eb416 426 + .quad 0x0d2c3ed1a,0x13c2b89c4 427 + .quad 0x0995a5724,0x1641378f0 428 + .quad 0x19b1afbc4,0x0d7a4825c 429 + .quad 0x109ffedc0,0x08d96551c 430 + .quad 0x0f2271e60,0x10f5ff2ba 431 + .quad 0x00b0bf8ca,0x00bf80dd2 432 + .quad 0x123888b7a,0x00167d312 433 + .quad 0x1e888f7dc,0x18dcddd1c 434 + .quad 0x002ee03b2,0x0f6076544 435 + .quad 0x183e8d8fe,0x06a45d2b2 436 + .quad 0x133d7a042,0x026f6a60a 437 + .quad 0x116b0f50c,0x1dd3e10e8 438 + .quad 0x05fabe670,0x1a2adb74e 439 + .quad 0x130004488,0x0de87806c 440 + .quad 0x000bcf5f6,0x19d34af3a 441 + .quad 0x18f0c7078,0x014338754 442 + .quad 0x017f27698,0x049c3cc9c 443 + .quad 0x058ca5f00,0x15e3e77ee 444 + .quad 0x1af900c24,0x068bce87a 445 + .quad 0x0b5cfca28,0x0dd07448e 446 + .quad 0x0ded288f8,0x1524fa6c6 447 + .quad 0x059f229bc,0x1d8048348 448 + .quad 0x06d390dec,0x16cba8aca 449 + .quad 0x037170390,0x0a3e3e02c 450 + .quad 0x06353c1cc,0x042d98888 451 + .quad 0x0c4584f5c,0x0d73c7bea 452 + .quad 0x1f16a3418,0x1329d9f7e 453 + .quad 0x0531377e2,0x185137662 454 + .quad 0x1d8d9ca7c,0x1b1c69528 455 + .quad 0x0b25b29f2,0x18a08b5bc 456 + .quad 0x19fb2a8b0,0x02178513a 457 + .quad 0x1a08fe6ac,0x1da758ae0 458 + .quad 0x045cddf4e,0x0e0ac139e 459 + .quad 0x1a91647f2,0x169cf9eb0 460 + .quad 0x1a0f717c4,0x0170076fa
+91
arch/x86/crypto/glue_helper-asm-avx.S
··· 1 + /* 2 + * Shared glue code for 128bit block ciphers, AVX assembler macros 3 + * 4 + * Copyright (c) 2012 Jussi Kivilinna <jussi.kivilinna@mbnet.fi> 5 + * 6 + * This program is free software; you can redistribute it and/or modify 7 + * it under the terms of the GNU General Public License as published by 8 + * the Free Software Foundation; either version 2 of the License, or 9 + * (at your option) any later version. 10 + * 11 + * This program is distributed in the hope that it will be useful, 12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + * GNU General Public License for more details. 15 + * 16 + */ 17 + 18 + #define load_8way(src, x0, x1, x2, x3, x4, x5, x6, x7) \ 19 + vmovdqu (0*16)(src), x0; \ 20 + vmovdqu (1*16)(src), x1; \ 21 + vmovdqu (2*16)(src), x2; \ 22 + vmovdqu (3*16)(src), x3; \ 23 + vmovdqu (4*16)(src), x4; \ 24 + vmovdqu (5*16)(src), x5; \ 25 + vmovdqu (6*16)(src), x6; \ 26 + vmovdqu (7*16)(src), x7; 27 + 28 + #define store_8way(dst, x0, x1, x2, x3, x4, x5, x6, x7) \ 29 + vmovdqu x0, (0*16)(dst); \ 30 + vmovdqu x1, (1*16)(dst); \ 31 + vmovdqu x2, (2*16)(dst); \ 32 + vmovdqu x3, (3*16)(dst); \ 33 + vmovdqu x4, (4*16)(dst); \ 34 + vmovdqu x5, (5*16)(dst); \ 35 + vmovdqu x6, (6*16)(dst); \ 36 + vmovdqu x7, (7*16)(dst); 37 + 38 + #define store_cbc_8way(src, dst, x0, x1, x2, x3, x4, x5, x6, x7) \ 39 + vpxor (0*16)(src), x1, x1; \ 40 + vpxor (1*16)(src), x2, x2; \ 41 + vpxor (2*16)(src), x3, x3; \ 42 + vpxor (3*16)(src), x4, x4; \ 43 + vpxor (4*16)(src), x5, x5; \ 44 + vpxor (5*16)(src), x6, x6; \ 45 + vpxor (6*16)(src), x7, x7; \ 46 + store_8way(dst, x0, x1, x2, x3, x4, x5, x6, x7); 47 + 48 + #define inc_le128(x, minus_one, tmp) \ 49 + vpcmpeqq minus_one, x, tmp; \ 50 + vpsubq minus_one, x, x; \ 51 + vpslldq $8, tmp, tmp; \ 52 + vpsubq tmp, x, x; 53 + 54 + #define load_ctr_8way(iv, bswap, x0, x1, x2, x3, x4, x5, x6, x7, t0, t1, t2) \ 55 + vpcmpeqd t0, t0, t0; \ 56 + vpsrldq $8, t0, t0; /* low: -1, high: 0 */ \ 57 + vmovdqa bswap, t1; \ 58 + \ 59 + /* load IV and byteswap */ \ 60 + vmovdqu (iv), x7; \ 61 + vpshufb t1, x7, x0; \ 62 + \ 63 + /* construct IVs */ \ 64 + inc_le128(x7, t0, t2); \ 65 + vpshufb t1, x7, x1; \ 66 + inc_le128(x7, t0, t2); \ 67 + vpshufb t1, x7, x2; \ 68 + inc_le128(x7, t0, t2); \ 69 + vpshufb t1, x7, x3; \ 70 + inc_le128(x7, t0, t2); \ 71 + vpshufb t1, x7, x4; \ 72 + inc_le128(x7, t0, t2); \ 73 + vpshufb t1, x7, x5; \ 74 + inc_le128(x7, t0, t2); \ 75 + vpshufb t1, x7, x6; \ 76 + inc_le128(x7, t0, t2); \ 77 + vmovdqa x7, t2; \ 78 + vpshufb t1, x7, x7; \ 79 + inc_le128(t2, t0, t1); \ 80 + vmovdqu t2, (iv); 81 + 82 + #define store_ctr_8way(src, dst, x0, x1, x2, x3, x4, x5, x6, x7) \ 83 + vpxor (0*16)(src), x0, x0; \ 84 + vpxor (1*16)(src), x1, x1; \ 85 + vpxor (2*16)(src), x2, x2; \ 86 + vpxor (3*16)(src), x3, x3; \ 87 + vpxor (4*16)(src), x4, x4; \ 88 + vpxor (5*16)(src), x5, x5; \ 89 + vpxor (6*16)(src), x6, x6; \ 90 + vpxor (7*16)(src), x7, x7; \ 91 + store_8way(dst, x0, x1, x2, x3, x4, x5, x6, x7);
+6 -6
arch/x86/crypto/glue_helper.c
··· 221 221 u8 *src = (u8 *)walk->src.virt.addr; 222 222 u8 *dst = (u8 *)walk->dst.virt.addr; 223 223 unsigned int nbytes = walk->nbytes; 224 - u128 ctrblk; 224 + le128 ctrblk; 225 225 u128 tmp; 226 226 227 - be128_to_u128(&ctrblk, (be128 *)walk->iv); 227 + be128_to_le128(&ctrblk, (be128 *)walk->iv); 228 228 229 229 memcpy(&tmp, src, nbytes); 230 230 fn_ctr(ctx, &tmp, &tmp, &ctrblk); 231 231 memcpy(dst, &tmp, nbytes); 232 232 233 - u128_to_be128((be128 *)walk->iv, &ctrblk); 233 + le128_to_be128((be128 *)walk->iv, &ctrblk); 234 234 } 235 235 EXPORT_SYMBOL_GPL(glue_ctr_crypt_final_128bit); 236 236 ··· 243 243 unsigned int nbytes = walk->nbytes; 244 244 u128 *src = (u128 *)walk->src.virt.addr; 245 245 u128 *dst = (u128 *)walk->dst.virt.addr; 246 - u128 ctrblk; 246 + le128 ctrblk; 247 247 unsigned int num_blocks, func_bytes; 248 248 unsigned int i; 249 249 250 - be128_to_u128(&ctrblk, (be128 *)walk->iv); 250 + be128_to_le128(&ctrblk, (be128 *)walk->iv); 251 251 252 252 /* Process multi-block batch */ 253 253 for (i = 0; i < gctx->num_funcs; i++) { ··· 269 269 } 270 270 271 271 done: 272 - u128_to_be128((be128 *)walk->iv, &ctrblk); 272 + le128_to_be128((be128 *)walk->iv, &ctrblk); 273 273 return nbytes; 274 274 } 275 275
+108 -58
arch/x86/crypto/serpent-avx-x86_64-asm_64.S
··· 24 24 * 25 25 */ 26 26 27 + #include "glue_helper-asm-avx.S" 28 + 27 29 .file "serpent-avx-x86_64-asm_64.S" 30 + 31 + .data 32 + .align 16 33 + 34 + .Lbswap128_mask: 35 + .byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 36 + 28 37 .text 29 38 30 39 #define CTX %rdi ··· 559 550 vpunpcklqdq x3, t2, x2; \ 560 551 vpunpckhqdq x3, t2, x3; 561 552 562 - #define read_blocks(in, x0, x1, x2, x3, t0, t1, t2) \ 563 - vmovdqu (0*4*4)(in), x0; \ 564 - vmovdqu (1*4*4)(in), x1; \ 565 - vmovdqu (2*4*4)(in), x2; \ 566 - vmovdqu (3*4*4)(in), x3; \ 567 - \ 553 + #define read_blocks(x0, x1, x2, x3, t0, t1, t2) \ 568 554 transpose_4x4(x0, x1, x2, x3, t0, t1, t2) 569 555 570 - #define write_blocks(out, x0, x1, x2, x3, t0, t1, t2) \ 571 - transpose_4x4(x0, x1, x2, x3, t0, t1, t2) \ 572 - \ 573 - vmovdqu x0, (0*4*4)(out); \ 574 - vmovdqu x1, (1*4*4)(out); \ 575 - vmovdqu x2, (2*4*4)(out); \ 576 - vmovdqu x3, (3*4*4)(out); 577 - 578 - #define xor_blocks(out, x0, x1, x2, x3, t0, t1, t2) \ 579 - transpose_4x4(x0, x1, x2, x3, t0, t1, t2) \ 580 - \ 581 - vpxor (0*4*4)(out), x0, x0; \ 582 - vmovdqu x0, (0*4*4)(out); \ 583 - vpxor (1*4*4)(out), x1, x1; \ 584 - vmovdqu x1, (1*4*4)(out); \ 585 - vpxor (2*4*4)(out), x2, x2; \ 586 - vmovdqu x2, (2*4*4)(out); \ 587 - vpxor (3*4*4)(out), x3, x3; \ 588 - vmovdqu x3, (3*4*4)(out); 556 + #define write_blocks(x0, x1, x2, x3, t0, t1, t2) \ 557 + transpose_4x4(x0, x1, x2, x3, t0, t1, t2) 589 558 590 559 .align 8 591 - .global __serpent_enc_blk_8way_avx 592 - .type __serpent_enc_blk_8way_avx,@function; 560 + .type __serpent_enc_blk8_avx,@function; 593 561 594 - __serpent_enc_blk_8way_avx: 562 + __serpent_enc_blk8_avx: 595 563 /* input: 596 564 * %rdi: ctx, CTX 597 - * %rsi: dst 598 - * %rdx: src 599 - * %rcx: bool, if true: xor output 565 + * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: blocks 566 + * output: 567 + * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: encrypted blocks 600 568 */ 601 569 602 570 vpcmpeqd RNOT, RNOT, RNOT; 603 571 604 - leaq (4*4*4)(%rdx), %rax; 605 - read_blocks(%rdx, RA1, RB1, RC1, RD1, RK0, RK1, RK2); 606 - read_blocks(%rax, RA2, RB2, RC2, RD2, RK0, RK1, RK2); 572 + read_blocks(RA1, RB1, RC1, RD1, RK0, RK1, RK2); 573 + read_blocks(RA2, RB2, RC2, RD2, RK0, RK1, RK2); 607 574 608 575 K2(RA, RB, RC, RD, RE, 0); 609 576 S(S0, RA, RB, RC, RD, RE); LK2(RC, RB, RD, RA, RE, 1); ··· 615 630 S(S6, RA, RB, RD, RC, RE); LK2(RD, RE, RB, RC, RA, 31); 616 631 S(S7, RD, RE, RB, RC, RA); K2(RA, RB, RC, RD, RE, 32); 617 632 618 - leaq (4*4*4)(%rsi), %rax; 619 - 620 - testb %cl, %cl; 621 - jnz __enc_xor8; 622 - 623 - write_blocks(%rsi, RA1, RB1, RC1, RD1, RK0, RK1, RK2); 624 - write_blocks(%rax, RA2, RB2, RC2, RD2, RK0, RK1, RK2); 625 - 626 - ret; 627 - 628 - __enc_xor8: 629 - xor_blocks(%rsi, RA1, RB1, RC1, RD1, RK0, RK1, RK2); 630 - xor_blocks(%rax, RA2, RB2, RC2, RD2, RK0, RK1, RK2); 633 + write_blocks(RA1, RB1, RC1, RD1, RK0, RK1, RK2); 634 + write_blocks(RA2, RB2, RC2, RD2, RK0, RK1, RK2); 631 635 632 636 ret; 633 637 634 638 .align 8 635 - .global serpent_dec_blk_8way_avx 636 - .type serpent_dec_blk_8way_avx,@function; 639 + .type __serpent_dec_blk8_avx,@function; 637 640 638 - serpent_dec_blk_8way_avx: 641 + __serpent_dec_blk8_avx: 639 642 /* input: 640 643 * %rdi: ctx, CTX 641 - * %rsi: dst 642 - * %rdx: src 644 + * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: encrypted blocks 645 + * output: 646 + * RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2: decrypted blocks 643 647 */ 644 648 645 649 vpcmpeqd RNOT, RNOT, RNOT; 646 650 647 - leaq (4*4*4)(%rdx), %rax; 648 - read_blocks(%rdx, RA1, RB1, RC1, RD1, RK0, RK1, RK2); 649 - read_blocks(%rax, RA2, RB2, RC2, RD2, RK0, RK1, RK2); 651 + read_blocks(RA1, RB1, RC1, RD1, RK0, RK1, RK2); 652 + read_blocks(RA2, RB2, RC2, RD2, RK0, RK1, RK2); 650 653 651 654 K2(RA, RB, RC, RD, RE, 32); 652 655 SP(SI7, RA, RB, RC, RD, RE, 31); KL2(RB, RD, RA, RE, RC, 31); ··· 670 697 SP(SI1, RD, RB, RC, RA, RE, 1); KL2(RE, RB, RC, RA, RD, 1); 671 698 S(SI0, RE, RB, RC, RA, RD); K2(RC, RD, RB, RE, RA, 0); 672 699 673 - leaq (4*4*4)(%rsi), %rax; 674 - write_blocks(%rsi, RC1, RD1, RB1, RE1, RK0, RK1, RK2); 675 - write_blocks(%rax, RC2, RD2, RB2, RE2, RK0, RK1, RK2); 700 + write_blocks(RC1, RD1, RB1, RE1, RK0, RK1, RK2); 701 + write_blocks(RC2, RD2, RB2, RE2, RK0, RK1, RK2); 702 + 703 + ret; 704 + 705 + .align 8 706 + .global serpent_ecb_enc_8way_avx 707 + .type serpent_ecb_enc_8way_avx,@function; 708 + 709 + serpent_ecb_enc_8way_avx: 710 + /* input: 711 + * %rdi: ctx, CTX 712 + * %rsi: dst 713 + * %rdx: src 714 + */ 715 + 716 + load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 717 + 718 + call __serpent_enc_blk8_avx; 719 + 720 + store_8way(%rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 721 + 722 + ret; 723 + 724 + .align 8 725 + .global serpent_ecb_dec_8way_avx 726 + .type serpent_ecb_dec_8way_avx,@function; 727 + 728 + serpent_ecb_dec_8way_avx: 729 + /* input: 730 + * %rdi: ctx, CTX 731 + * %rsi: dst 732 + * %rdx: src 733 + */ 734 + 735 + load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 736 + 737 + call __serpent_dec_blk8_avx; 738 + 739 + store_8way(%rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2); 740 + 741 + ret; 742 + 743 + .align 8 744 + .global serpent_cbc_dec_8way_avx 745 + .type serpent_cbc_dec_8way_avx,@function; 746 + 747 + serpent_cbc_dec_8way_avx: 748 + /* input: 749 + * %rdi: ctx, CTX 750 + * %rsi: dst 751 + * %rdx: src 752 + */ 753 + 754 + load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 755 + 756 + call __serpent_dec_blk8_avx; 757 + 758 + store_cbc_8way(%rdx, %rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2); 759 + 760 + ret; 761 + 762 + .align 8 763 + .global serpent_ctr_8way_avx 764 + .type serpent_ctr_8way_avx,@function; 765 + 766 + serpent_ctr_8way_avx: 767 + /* input: 768 + * %rdi: ctx, CTX 769 + * %rsi: dst 770 + * %rdx: src 771 + * %rcx: iv (little endian, 128bit) 772 + */ 773 + 774 + load_ctr_8way(%rcx, .Lbswap128_mask, RA1, RB1, RC1, RD1, RA2, RB2, RC2, 775 + RD2, RK0, RK1, RK2); 776 + 777 + call __serpent_enc_blk8_avx; 778 + 779 + store_ctr_8way(%rdx, %rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 676 780 677 781 ret;
+9 -40
arch/x86/crypto/serpent_avx_glue.c
··· 42 42 #include <asm/crypto/ablk_helper.h> 43 43 #include <asm/crypto/glue_helper.h> 44 44 45 - static void serpent_decrypt_cbc_xway(void *ctx, u128 *dst, const u128 *src) 46 - { 47 - u128 ivs[SERPENT_PARALLEL_BLOCKS - 1]; 48 - unsigned int j; 49 - 50 - for (j = 0; j < SERPENT_PARALLEL_BLOCKS - 1; j++) 51 - ivs[j] = src[j]; 52 - 53 - serpent_dec_blk_xway(ctx, (u8 *)dst, (u8 *)src); 54 - 55 - for (j = 0; j < SERPENT_PARALLEL_BLOCKS - 1; j++) 56 - u128_xor(dst + (j + 1), dst + (j + 1), ivs + j); 57 - } 58 - 59 - static void serpent_crypt_ctr(void *ctx, u128 *dst, const u128 *src, u128 *iv) 45 + static void serpent_crypt_ctr(void *ctx, u128 *dst, const u128 *src, le128 *iv) 60 46 { 61 47 be128 ctrblk; 62 48 63 - u128_to_be128(&ctrblk, iv); 64 - u128_inc(iv); 49 + le128_to_be128(&ctrblk, iv); 50 + le128_inc(iv); 65 51 66 52 __serpent_encrypt(ctx, (u8 *)&ctrblk, (u8 *)&ctrblk); 67 53 u128_xor(dst, src, (u128 *)&ctrblk); 68 - } 69 - 70 - static void serpent_crypt_ctr_xway(void *ctx, u128 *dst, const u128 *src, 71 - u128 *iv) 72 - { 73 - be128 ctrblks[SERPENT_PARALLEL_BLOCKS]; 74 - unsigned int i; 75 - 76 - for (i = 0; i < SERPENT_PARALLEL_BLOCKS; i++) { 77 - if (dst != src) 78 - dst[i] = src[i]; 79 - 80 - u128_to_be128(&ctrblks[i], iv); 81 - u128_inc(iv); 82 - } 83 - 84 - serpent_enc_blk_xway_xor(ctx, (u8 *)dst, (u8 *)ctrblks); 85 54 } 86 55 87 56 static const struct common_glue_ctx serpent_enc = { ··· 59 90 60 91 .funcs = { { 61 92 .num_blocks = SERPENT_PARALLEL_BLOCKS, 62 - .fn_u = { .ecb = GLUE_FUNC_CAST(serpent_enc_blk_xway) } 93 + .fn_u = { .ecb = GLUE_FUNC_CAST(serpent_ecb_enc_8way_avx) } 63 94 }, { 64 95 .num_blocks = 1, 65 96 .fn_u = { .ecb = GLUE_FUNC_CAST(__serpent_encrypt) } ··· 72 103 73 104 .funcs = { { 74 105 .num_blocks = SERPENT_PARALLEL_BLOCKS, 75 - .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(serpent_crypt_ctr_xway) } 106 + .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(serpent_ctr_8way_avx) } 76 107 }, { 77 108 .num_blocks = 1, 78 109 .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(serpent_crypt_ctr) } ··· 85 116 86 117 .funcs = { { 87 118 .num_blocks = SERPENT_PARALLEL_BLOCKS, 88 - .fn_u = { .ecb = GLUE_FUNC_CAST(serpent_dec_blk_xway) } 119 + .fn_u = { .ecb = GLUE_FUNC_CAST(serpent_ecb_dec_8way_avx) } 89 120 }, { 90 121 .num_blocks = 1, 91 122 .fn_u = { .ecb = GLUE_FUNC_CAST(__serpent_decrypt) } ··· 98 129 99 130 .funcs = { { 100 131 .num_blocks = SERPENT_PARALLEL_BLOCKS, 101 - .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(serpent_decrypt_cbc_xway) } 132 + .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(serpent_cbc_dec_8way_avx) } 102 133 }, { 103 134 .num_blocks = 1, 104 135 .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(__serpent_decrypt) } ··· 162 193 ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); 163 194 164 195 if (nbytes == bsize * SERPENT_PARALLEL_BLOCKS) { 165 - serpent_enc_blk_xway(ctx->ctx, srcdst, srcdst); 196 + serpent_ecb_enc_8way_avx(ctx->ctx, srcdst, srcdst); 166 197 return; 167 198 } 168 199 ··· 179 210 ctx->fpu_enabled = serpent_fpu_begin(ctx->fpu_enabled, nbytes); 180 211 181 212 if (nbytes == bsize * SERPENT_PARALLEL_BLOCKS) { 182 - serpent_dec_blk_xway(ctx->ctx, srcdst, srcdst); 213 + serpent_ecb_dec_8way_avx(ctx->ctx, srcdst, srcdst); 183 214 return; 184 215 } 185 216
+6 -6
arch/x86/crypto/serpent_sse2_glue.c
··· 59 59 u128_xor(dst + (j + 1), dst + (j + 1), ivs + j); 60 60 } 61 61 62 - static void serpent_crypt_ctr(void *ctx, u128 *dst, const u128 *src, u128 *iv) 62 + static void serpent_crypt_ctr(void *ctx, u128 *dst, const u128 *src, le128 *iv) 63 63 { 64 64 be128 ctrblk; 65 65 66 - u128_to_be128(&ctrblk, iv); 67 - u128_inc(iv); 66 + le128_to_be128(&ctrblk, iv); 67 + le128_inc(iv); 68 68 69 69 __serpent_encrypt(ctx, (u8 *)&ctrblk, (u8 *)&ctrblk); 70 70 u128_xor(dst, src, (u128 *)&ctrblk); 71 71 } 72 72 73 73 static void serpent_crypt_ctr_xway(void *ctx, u128 *dst, const u128 *src, 74 - u128 *iv) 74 + le128 *iv) 75 75 { 76 76 be128 ctrblks[SERPENT_PARALLEL_BLOCKS]; 77 77 unsigned int i; ··· 80 80 if (dst != src) 81 81 dst[i] = src[i]; 82 82 83 - u128_to_be128(&ctrblks[i], iv); 84 - u128_inc(iv); 83 + le128_to_be128(&ctrblks[i], iv); 84 + le128_inc(iv); 85 85 } 86 86 87 87 serpent_enc_blk_xway_xor(ctx, (u8 *)dst, (u8 *)ctrblks);
+137 -71
arch/x86/crypto/twofish-avx-x86_64-asm_64.S
··· 23 23 * 24 24 */ 25 25 26 + #include "glue_helper-asm-avx.S" 27 + 26 28 .file "twofish-avx-x86_64-asm_64.S" 29 + 30 + .data 31 + .align 16 32 + 33 + .Lbswap128_mask: 34 + .byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 35 + 27 36 .text 28 37 29 38 /* structure of crypto context */ ··· 226 217 vpunpcklqdq x3, t2, x2; \ 227 218 vpunpckhqdq x3, t2, x3; 228 219 229 - #define inpack_blocks(in, x0, x1, x2, x3, wkey, t0, t1, t2) \ 230 - vpxor (0*4*4)(in), wkey, x0; \ 231 - vpxor (1*4*4)(in), wkey, x1; \ 232 - vpxor (2*4*4)(in), wkey, x2; \ 233 - vpxor (3*4*4)(in), wkey, x3; \ 220 + #define inpack_blocks(x0, x1, x2, x3, wkey, t0, t1, t2) \ 221 + vpxor x0, wkey, x0; \ 222 + vpxor x1, wkey, x1; \ 223 + vpxor x2, wkey, x2; \ 224 + vpxor x3, wkey, x3; \ 234 225 \ 235 226 transpose_4x4(x0, x1, x2, x3, t0, t1, t2) 236 227 237 - #define outunpack_blocks(out, x0, x1, x2, x3, wkey, t0, t1, t2) \ 228 + #define outunpack_blocks(x0, x1, x2, x3, wkey, t0, t1, t2) \ 238 229 transpose_4x4(x0, x1, x2, x3, t0, t1, t2) \ 239 230 \ 240 - vpxor x0, wkey, x0; \ 241 - vmovdqu x0, (0*4*4)(out); \ 242 - vpxor x1, wkey, x1; \ 243 - vmovdqu x1, (1*4*4)(out); \ 244 - vpxor x2, wkey, x2; \ 245 - vmovdqu x2, (2*4*4)(out); \ 246 - vpxor x3, wkey, x3; \ 247 - vmovdqu x3, (3*4*4)(out); 248 - 249 - #define outunpack_xor_blocks(out, x0, x1, x2, x3, wkey, t0, t1, t2) \ 250 - transpose_4x4(x0, x1, x2, x3, t0, t1, t2) \ 251 - \ 252 - vpxor x0, wkey, x0; \ 253 - vpxor (0*4*4)(out), x0, x0; \ 254 - vmovdqu x0, (0*4*4)(out); \ 255 - vpxor x1, wkey, x1; \ 256 - vpxor (1*4*4)(out), x1, x1; \ 257 - vmovdqu x1, (1*4*4)(out); \ 258 - vpxor x2, wkey, x2; \ 259 - vpxor (2*4*4)(out), x2, x2; \ 260 - vmovdqu x2, (2*4*4)(out); \ 261 - vpxor x3, wkey, x3; \ 262 - vpxor (3*4*4)(out), x3, x3; \ 263 - vmovdqu x3, (3*4*4)(out); 231 + vpxor x0, wkey, x0; \ 232 + vpxor x1, wkey, x1; \ 233 + vpxor x2, wkey, x2; \ 234 + vpxor x3, wkey, x3; 264 235 265 236 .align 8 266 - .global __twofish_enc_blk_8way 267 - .type __twofish_enc_blk_8way,@function; 237 + .type __twofish_enc_blk8,@function; 268 238 269 - __twofish_enc_blk_8way: 239 + __twofish_enc_blk8: 270 240 /* input: 271 241 * %rdi: ctx, CTX 272 - * %rsi: dst 273 - * %rdx: src 274 - * %rcx: bool, if true: xor output 242 + * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: blocks 243 + * output: 244 + * RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2: encrypted blocks 275 245 */ 246 + 247 + vmovdqu w(CTX), RK1; 276 248 277 249 pushq %rbp; 278 250 pushq %rbx; 279 251 pushq %rcx; 280 252 281 - vmovdqu w(CTX), RK1; 282 - 283 - leaq (4*4*4)(%rdx), %rax; 284 - inpack_blocks(%rdx, RA1, RB1, RC1, RD1, RK1, RX0, RY0, RK2); 253 + inpack_blocks(RA1, RB1, RC1, RD1, RK1, RX0, RY0, RK2); 285 254 preload_rgi(RA1); 286 255 rotate_1l(RD1); 287 - inpack_blocks(%rax, RA2, RB2, RC2, RD2, RK1, RX0, RY0, RK2); 256 + inpack_blocks(RA2, RB2, RC2, RD2, RK1, RX0, RY0, RK2); 288 257 rotate_1l(RD2); 289 - 290 - movq %rsi, %r11; 291 258 292 259 encrypt_cycle(0); 293 260 encrypt_cycle(1); ··· 280 295 popq %rbx; 281 296 popq %rbp; 282 297 283 - leaq (4*4*4)(%r11), %rax; 284 - 285 - testb %cl, %cl; 286 - jnz __enc_xor8; 287 - 288 - outunpack_blocks(%r11, RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2); 289 - outunpack_blocks(%rax, RC2, RD2, RA2, RB2, RK1, RX0, RY0, RK2); 290 - 291 - ret; 292 - 293 - __enc_xor8: 294 - outunpack_xor_blocks(%r11, RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2); 295 - outunpack_xor_blocks(%rax, RC2, RD2, RA2, RB2, RK1, RX0, RY0, RK2); 298 + outunpack_blocks(RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2); 299 + outunpack_blocks(RC2, RD2, RA2, RB2, RK1, RX0, RY0, RK2); 296 300 297 301 ret; 298 302 299 303 .align 8 300 - .global twofish_dec_blk_8way 301 - .type twofish_dec_blk_8way,@function; 304 + .type __twofish_dec_blk8,@function; 302 305 303 - twofish_dec_blk_8way: 306 + __twofish_dec_blk8: 304 307 /* input: 305 308 * %rdi: ctx, CTX 306 - * %rsi: dst 307 - * %rdx: src 309 + * RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2: encrypted blocks 310 + * output: 311 + * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: decrypted blocks 308 312 */ 313 + 314 + vmovdqu (w+4*4)(CTX), RK1; 309 315 310 316 pushq %rbp; 311 317 pushq %rbx; 312 318 313 - vmovdqu (w+4*4)(CTX), RK1; 314 - 315 - leaq (4*4*4)(%rdx), %rax; 316 - inpack_blocks(%rdx, RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2); 319 + inpack_blocks(RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2); 317 320 preload_rgi(RC1); 318 321 rotate_1l(RA1); 319 - inpack_blocks(%rax, RC2, RD2, RA2, RB2, RK1, RX0, RY0, RK2); 322 + inpack_blocks(RC2, RD2, RA2, RB2, RK1, RX0, RY0, RK2); 320 323 rotate_1l(RA2); 321 - 322 - movq %rsi, %r11; 323 324 324 325 decrypt_cycle(7); 325 326 decrypt_cycle(6); ··· 321 350 popq %rbx; 322 351 popq %rbp; 323 352 324 - leaq (4*4*4)(%r11), %rax; 325 - outunpack_blocks(%r11, RA1, RB1, RC1, RD1, RK1, RX0, RY0, RK2); 326 - outunpack_blocks(%rax, RA2, RB2, RC2, RD2, RK1, RX0, RY0, RK2); 353 + outunpack_blocks(RA1, RB1, RC1, RD1, RK1, RX0, RY0, RK2); 354 + outunpack_blocks(RA2, RB2, RC2, RD2, RK1, RX0, RY0, RK2); 355 + 356 + ret; 357 + 358 + .align 8 359 + .global twofish_ecb_enc_8way 360 + .type twofish_ecb_enc_8way,@function; 361 + 362 + twofish_ecb_enc_8way: 363 + /* input: 364 + * %rdi: ctx, CTX 365 + * %rsi: dst 366 + * %rdx: src 367 + */ 368 + 369 + movq %rsi, %r11; 370 + 371 + load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 372 + 373 + call __twofish_enc_blk8; 374 + 375 + store_8way(%r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2); 376 + 377 + ret; 378 + 379 + .align 8 380 + .global twofish_ecb_dec_8way 381 + .type twofish_ecb_dec_8way,@function; 382 + 383 + twofish_ecb_dec_8way: 384 + /* input: 385 + * %rdi: ctx, CTX 386 + * %rsi: dst 387 + * %rdx: src 388 + */ 389 + 390 + movq %rsi, %r11; 391 + 392 + load_8way(%rdx, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2); 393 + 394 + call __twofish_dec_blk8; 395 + 396 + store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 397 + 398 + ret; 399 + 400 + .align 8 401 + .global twofish_cbc_dec_8way 402 + .type twofish_cbc_dec_8way,@function; 403 + 404 + twofish_cbc_dec_8way: 405 + /* input: 406 + * %rdi: ctx, CTX 407 + * %rsi: dst 408 + * %rdx: src 409 + */ 410 + 411 + pushq %r12; 412 + 413 + movq %rsi, %r11; 414 + movq %rdx, %r12; 415 + 416 + load_8way(%rdx, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2); 417 + 418 + call __twofish_dec_blk8; 419 + 420 + store_cbc_8way(%r12, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); 421 + 422 + popq %r12; 423 + 424 + ret; 425 + 426 + .align 8 427 + .global twofish_ctr_8way 428 + .type twofish_ctr_8way,@function; 429 + 430 + twofish_ctr_8way: 431 + /* input: 432 + * %rdi: ctx, CTX 433 + * %rsi: dst 434 + * %rdx: src 435 + * %rcx: iv (little endian, 128bit) 436 + */ 437 + 438 + pushq %r12; 439 + 440 + movq %rsi, %r11; 441 + movq %rdx, %r12; 442 + 443 + load_ctr_8way(%rcx, .Lbswap128_mask, RA1, RB1, RC1, RD1, RA2, RB2, RC2, 444 + RD2, RX0, RX1, RY0); 445 + 446 + call __twofish_enc_blk8; 447 + 448 + store_ctr_8way(%r12, %r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2); 449 + 450 + popq %r12; 327 451 328 452 ret;
+17 -60
arch/x86/crypto/twofish_avx_glue.c
··· 45 45 46 46 #define TWOFISH_PARALLEL_BLOCKS 8 47 47 48 + /* 8-way parallel cipher functions */ 49 + asmlinkage void twofish_ecb_enc_8way(struct twofish_ctx *ctx, u8 *dst, 50 + const u8 *src); 51 + asmlinkage void twofish_ecb_dec_8way(struct twofish_ctx *ctx, u8 *dst, 52 + const u8 *src); 53 + 54 + asmlinkage void twofish_cbc_dec_8way(struct twofish_ctx *ctx, u8 *dst, 55 + const u8 *src); 56 + asmlinkage void twofish_ctr_8way(struct twofish_ctx *ctx, u8 *dst, 57 + const u8 *src, le128 *iv); 58 + 48 59 static inline void twofish_enc_blk_3way(struct twofish_ctx *ctx, u8 *dst, 49 60 const u8 *src) 50 61 { 51 62 __twofish_enc_blk_3way(ctx, dst, src, false); 52 63 } 53 64 54 - /* 8-way parallel cipher functions */ 55 - asmlinkage void __twofish_enc_blk_8way(struct twofish_ctx *ctx, u8 *dst, 56 - const u8 *src, bool xor); 57 - asmlinkage void twofish_dec_blk_8way(struct twofish_ctx *ctx, u8 *dst, 58 - const u8 *src); 59 - 60 - static inline void twofish_enc_blk_xway(struct twofish_ctx *ctx, u8 *dst, 61 - const u8 *src) 62 - { 63 - __twofish_enc_blk_8way(ctx, dst, src, false); 64 - } 65 - 66 - static inline void twofish_enc_blk_xway_xor(struct twofish_ctx *ctx, u8 *dst, 67 - const u8 *src) 68 - { 69 - __twofish_enc_blk_8way(ctx, dst, src, true); 70 - } 71 - 72 - static inline void twofish_dec_blk_xway(struct twofish_ctx *ctx, u8 *dst, 73 - const u8 *src) 74 - { 75 - twofish_dec_blk_8way(ctx, dst, src); 76 - } 77 - 78 - static void twofish_dec_blk_cbc_xway(void *ctx, u128 *dst, const u128 *src) 79 - { 80 - u128 ivs[TWOFISH_PARALLEL_BLOCKS - 1]; 81 - unsigned int j; 82 - 83 - for (j = 0; j < TWOFISH_PARALLEL_BLOCKS - 1; j++) 84 - ivs[j] = src[j]; 85 - 86 - twofish_dec_blk_xway(ctx, (u8 *)dst, (u8 *)src); 87 - 88 - for (j = 0; j < TWOFISH_PARALLEL_BLOCKS - 1; j++) 89 - u128_xor(dst + (j + 1), dst + (j + 1), ivs + j); 90 - } 91 - 92 - static void twofish_enc_blk_ctr_xway(void *ctx, u128 *dst, const u128 *src, 93 - u128 *iv) 94 - { 95 - be128 ctrblks[TWOFISH_PARALLEL_BLOCKS]; 96 - unsigned int i; 97 - 98 - for (i = 0; i < TWOFISH_PARALLEL_BLOCKS; i++) { 99 - if (dst != src) 100 - dst[i] = src[i]; 101 - 102 - u128_to_be128(&ctrblks[i], iv); 103 - u128_inc(iv); 104 - } 105 - 106 - twofish_enc_blk_xway_xor(ctx, (u8 *)dst, (u8 *)ctrblks); 107 - } 108 65 109 66 static const struct common_glue_ctx twofish_enc = { 110 67 .num_funcs = 3, ··· 69 112 70 113 .funcs = { { 71 114 .num_blocks = TWOFISH_PARALLEL_BLOCKS, 72 - .fn_u = { .ecb = GLUE_FUNC_CAST(twofish_enc_blk_xway) } 115 + .fn_u = { .ecb = GLUE_FUNC_CAST(twofish_ecb_enc_8way) } 73 116 }, { 74 117 .num_blocks = 3, 75 118 .fn_u = { .ecb = GLUE_FUNC_CAST(twofish_enc_blk_3way) } ··· 85 128 86 129 .funcs = { { 87 130 .num_blocks = TWOFISH_PARALLEL_BLOCKS, 88 - .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(twofish_enc_blk_ctr_xway) } 131 + .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(twofish_ctr_8way) } 89 132 }, { 90 133 .num_blocks = 3, 91 134 .fn_u = { .ctr = GLUE_CTR_FUNC_CAST(twofish_enc_blk_ctr_3way) } ··· 101 144 102 145 .funcs = { { 103 146 .num_blocks = TWOFISH_PARALLEL_BLOCKS, 104 - .fn_u = { .ecb = GLUE_FUNC_CAST(twofish_dec_blk_xway) } 147 + .fn_u = { .ecb = GLUE_FUNC_CAST(twofish_ecb_dec_8way) } 105 148 }, { 106 149 .num_blocks = 3, 107 150 .fn_u = { .ecb = GLUE_FUNC_CAST(twofish_dec_blk_3way) } ··· 117 160 118 161 .funcs = { { 119 162 .num_blocks = TWOFISH_PARALLEL_BLOCKS, 120 - .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(twofish_dec_blk_cbc_xway) } 163 + .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(twofish_cbc_dec_8way) } 121 164 }, { 122 165 .num_blocks = 3, 123 166 .fn_u = { .cbc = GLUE_CBC_FUNC_CAST(twofish_dec_blk_cbc_3way) } ··· 184 227 ctx->fpu_enabled = twofish_fpu_begin(ctx->fpu_enabled, nbytes); 185 228 186 229 if (nbytes == bsize * TWOFISH_PARALLEL_BLOCKS) { 187 - twofish_enc_blk_xway(ctx->ctx, srcdst, srcdst); 230 + twofish_ecb_enc_8way(ctx->ctx, srcdst, srcdst); 188 231 return; 189 232 } 190 233 ··· 206 249 ctx->fpu_enabled = twofish_fpu_begin(ctx->fpu_enabled, nbytes); 207 250 208 251 if (nbytes == bsize * TWOFISH_PARALLEL_BLOCKS) { 209 - twofish_dec_blk_xway(ctx->ctx, srcdst, srcdst); 252 + twofish_ecb_dec_8way(ctx->ctx, srcdst, srcdst); 210 253 return; 211 254 } 212 255
+10 -10
arch/x86/crypto/twofish_glue_3way.c
··· 62 62 } 63 63 EXPORT_SYMBOL_GPL(twofish_dec_blk_cbc_3way); 64 64 65 - void twofish_enc_blk_ctr(void *ctx, u128 *dst, const u128 *src, u128 *iv) 65 + void twofish_enc_blk_ctr(void *ctx, u128 *dst, const u128 *src, le128 *iv) 66 66 { 67 67 be128 ctrblk; 68 68 69 69 if (dst != src) 70 70 *dst = *src; 71 71 72 - u128_to_be128(&ctrblk, iv); 73 - u128_inc(iv); 72 + le128_to_be128(&ctrblk, iv); 73 + le128_inc(iv); 74 74 75 75 twofish_enc_blk(ctx, (u8 *)&ctrblk, (u8 *)&ctrblk); 76 76 u128_xor(dst, dst, (u128 *)&ctrblk); ··· 78 78 EXPORT_SYMBOL_GPL(twofish_enc_blk_ctr); 79 79 80 80 void twofish_enc_blk_ctr_3way(void *ctx, u128 *dst, const u128 *src, 81 - u128 *iv) 81 + le128 *iv) 82 82 { 83 83 be128 ctrblks[3]; 84 84 ··· 88 88 dst[2] = src[2]; 89 89 } 90 90 91 - u128_to_be128(&ctrblks[0], iv); 92 - u128_inc(iv); 93 - u128_to_be128(&ctrblks[1], iv); 94 - u128_inc(iv); 95 - u128_to_be128(&ctrblks[2], iv); 96 - u128_inc(iv); 91 + le128_to_be128(&ctrblks[0], iv); 92 + le128_inc(iv); 93 + le128_to_be128(&ctrblks[1], iv); 94 + le128_inc(iv); 95 + le128_to_be128(&ctrblks[2], iv); 96 + le128_inc(iv); 97 97 98 98 twofish_enc_blk_xor_3way(ctx, (u8 *)dst, (u8 *)ctrblks); 99 99 }
+82
arch/x86/include/asm/crypto/camellia.h
··· 1 + #ifndef ASM_X86_CAMELLIA_H 2 + #define ASM_X86_CAMELLIA_H 3 + 4 + #include <linux/kernel.h> 5 + #include <linux/crypto.h> 6 + 7 + #define CAMELLIA_MIN_KEY_SIZE 16 8 + #define CAMELLIA_MAX_KEY_SIZE 32 9 + #define CAMELLIA_BLOCK_SIZE 16 10 + #define CAMELLIA_TABLE_BYTE_LEN 272 11 + #define CAMELLIA_PARALLEL_BLOCKS 2 12 + 13 + struct camellia_ctx { 14 + u64 key_table[CAMELLIA_TABLE_BYTE_LEN / sizeof(u64)]; 15 + u32 key_length; 16 + }; 17 + 18 + struct camellia_lrw_ctx { 19 + struct lrw_table_ctx lrw_table; 20 + struct camellia_ctx camellia_ctx; 21 + }; 22 + 23 + struct camellia_xts_ctx { 24 + struct camellia_ctx tweak_ctx; 25 + struct camellia_ctx crypt_ctx; 26 + }; 27 + 28 + extern int __camellia_setkey(struct camellia_ctx *cctx, 29 + const unsigned char *key, 30 + unsigned int key_len, u32 *flags); 31 + 32 + extern int lrw_camellia_setkey(struct crypto_tfm *tfm, const u8 *key, 33 + unsigned int keylen); 34 + extern void lrw_camellia_exit_tfm(struct crypto_tfm *tfm); 35 + 36 + extern int xts_camellia_setkey(struct crypto_tfm *tfm, const u8 *key, 37 + unsigned int keylen); 38 + 39 + /* regular block cipher functions */ 40 + asmlinkage void __camellia_enc_blk(struct camellia_ctx *ctx, u8 *dst, 41 + const u8 *src, bool xor); 42 + asmlinkage void camellia_dec_blk(struct camellia_ctx *ctx, u8 *dst, 43 + const u8 *src); 44 + 45 + /* 2-way parallel cipher functions */ 46 + asmlinkage void __camellia_enc_blk_2way(struct camellia_ctx *ctx, u8 *dst, 47 + const u8 *src, bool xor); 48 + asmlinkage void camellia_dec_blk_2way(struct camellia_ctx *ctx, u8 *dst, 49 + const u8 *src); 50 + 51 + static inline void camellia_enc_blk(struct camellia_ctx *ctx, u8 *dst, 52 + const u8 *src) 53 + { 54 + __camellia_enc_blk(ctx, dst, src, false); 55 + } 56 + 57 + static inline void camellia_enc_blk_xor(struct camellia_ctx *ctx, u8 *dst, 58 + const u8 *src) 59 + { 60 + __camellia_enc_blk(ctx, dst, src, true); 61 + } 62 + 63 + static inline void camellia_enc_blk_2way(struct camellia_ctx *ctx, u8 *dst, 64 + const u8 *src) 65 + { 66 + __camellia_enc_blk_2way(ctx, dst, src, false); 67 + } 68 + 69 + static inline void camellia_enc_blk_xor_2way(struct camellia_ctx *ctx, u8 *dst, 70 + const u8 *src) 71 + { 72 + __camellia_enc_blk_2way(ctx, dst, src, true); 73 + } 74 + 75 + /* glue helpers */ 76 + extern void camellia_decrypt_cbc_2way(void *ctx, u128 *dst, const u128 *src); 77 + extern void camellia_crypt_ctr(void *ctx, u128 *dst, const u128 *src, 78 + le128 *iv); 79 + extern void camellia_crypt_ctr_2way(void *ctx, u128 *dst, const u128 *src, 80 + le128 *iv); 81 + 82 + #endif /* ASM_X86_CAMELLIA_H */
+17 -11
arch/x86/include/asm/crypto/glue_helper.h
··· 13 13 typedef void (*common_glue_func_t)(void *ctx, u8 *dst, const u8 *src); 14 14 typedef void (*common_glue_cbc_func_t)(void *ctx, u128 *dst, const u128 *src); 15 15 typedef void (*common_glue_ctr_func_t)(void *ctx, u128 *dst, const u128 *src, 16 - u128 *iv); 16 + le128 *iv); 17 17 18 18 #define GLUE_FUNC_CAST(fn) ((common_glue_func_t)(fn)) 19 19 #define GLUE_CBC_FUNC_CAST(fn) ((common_glue_cbc_func_t)(fn)) ··· 71 71 kernel_fpu_end(); 72 72 } 73 73 74 - static inline void u128_to_be128(be128 *dst, const u128 *src) 74 + static inline void le128_to_be128(be128 *dst, const le128 *src) 75 75 { 76 - dst->a = cpu_to_be64(src->a); 77 - dst->b = cpu_to_be64(src->b); 76 + dst->a = cpu_to_be64(le64_to_cpu(src->a)); 77 + dst->b = cpu_to_be64(le64_to_cpu(src->b)); 78 78 } 79 79 80 - static inline void be128_to_u128(u128 *dst, const be128 *src) 80 + static inline void be128_to_le128(le128 *dst, const be128 *src) 81 81 { 82 - dst->a = be64_to_cpu(src->a); 83 - dst->b = be64_to_cpu(src->b); 82 + dst->a = cpu_to_le64(be64_to_cpu(src->a)); 83 + dst->b = cpu_to_le64(be64_to_cpu(src->b)); 84 84 } 85 85 86 - static inline void u128_inc(u128 *i) 86 + static inline void le128_inc(le128 *i) 87 87 { 88 - i->b++; 89 - if (!i->b) 90 - i->a++; 88 + u64 a = le64_to_cpu(i->a); 89 + u64 b = le64_to_cpu(i->b); 90 + 91 + b++; 92 + if (!b) 93 + a++; 94 + 95 + i->a = cpu_to_le64(a); 96 + i->b = cpu_to_le64(b); 91 97 } 92 98 93 99 extern int glue_ecb_crypt_128bit(const struct common_glue_ctx *gctx,
+7 -20
arch/x86/include/asm/crypto/serpent-avx.h
··· 6 6 7 7 #define SERPENT_PARALLEL_BLOCKS 8 8 8 9 - asmlinkage void __serpent_enc_blk_8way_avx(struct serpent_ctx *ctx, u8 *dst, 10 - const u8 *src, bool xor); 11 - asmlinkage void serpent_dec_blk_8way_avx(struct serpent_ctx *ctx, u8 *dst, 9 + asmlinkage void serpent_ecb_enc_8way_avx(struct serpent_ctx *ctx, u8 *dst, 10 + const u8 *src); 11 + asmlinkage void serpent_ecb_dec_8way_avx(struct serpent_ctx *ctx, u8 *dst, 12 12 const u8 *src); 13 13 14 - static inline void serpent_enc_blk_xway(struct serpent_ctx *ctx, u8 *dst, 15 - const u8 *src) 16 - { 17 - __serpent_enc_blk_8way_avx(ctx, dst, src, false); 18 - } 19 - 20 - static inline void serpent_enc_blk_xway_xor(struct serpent_ctx *ctx, u8 *dst, 21 - const u8 *src) 22 - { 23 - __serpent_enc_blk_8way_avx(ctx, dst, src, true); 24 - } 25 - 26 - static inline void serpent_dec_blk_xway(struct serpent_ctx *ctx, u8 *dst, 27 - const u8 *src) 28 - { 29 - serpent_dec_blk_8way_avx(ctx, dst, src); 30 - } 14 + asmlinkage void serpent_cbc_dec_8way_avx(struct serpent_ctx *ctx, u8 *dst, 15 + const u8 *src); 16 + asmlinkage void serpent_ctr_8way_avx(struct serpent_ctx *ctx, u8 *dst, 17 + const u8 *src, le128 *iv); 31 18 32 19 #endif
+2 -2
arch/x86/include/asm/crypto/twofish.h
··· 31 31 /* helpers from twofish_x86_64-3way module */ 32 32 extern void twofish_dec_blk_cbc_3way(void *ctx, u128 *dst, const u128 *src); 33 33 extern void twofish_enc_blk_ctr(void *ctx, u128 *dst, const u128 *src, 34 - u128 *iv); 34 + le128 *iv); 35 35 extern void twofish_enc_blk_ctr_3way(void *ctx, u128 *dst, const u128 *src, 36 - u128 *iv); 36 + le128 *iv); 37 37 38 38 extern int lrw_twofish_setkey(struct crypto_tfm *tfm, const u8 *key, 39 39 unsigned int keylen);
+42
crypto/Kconfig
··· 324 324 by iSCSI for header and data digests and by others. 325 325 See Castagnoli93. Module will be crc32c. 326 326 327 + config CRYPTO_CRC32C_X86_64 328 + bool 329 + depends on X86 && 64BIT 330 + select CRYPTO_HASH 331 + help 332 + In Intel processor with SSE4.2 supported, the processor will 333 + support CRC32C calculation using hardware accelerated CRC32 334 + instruction optimized with PCLMULQDQ instruction when available. 335 + 327 336 config CRYPTO_CRC32C_INTEL 328 337 tristate "CRC32c INTEL hardware acceleration" 329 338 depends on X86 339 + select CRYPTO_CRC32C_X86_64 if 64BIT 330 340 select CRYPTO_HASH 331 341 help 332 342 In Intel processor with SSE4.2 supported, the processor will ··· 803 793 See also: 804 794 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 805 795 796 + config CRYPTO_CAMELLIA_AESNI_AVX_X86_64 797 + tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)" 798 + depends on X86 && 64BIT 799 + depends on CRYPTO 800 + select CRYPTO_ALGAPI 801 + select CRYPTO_CRYPTD 802 + select CRYPTO_ABLK_HELPER_X86 803 + select CRYPTO_GLUE_HELPER_X86 804 + select CRYPTO_CAMELLIA_X86_64 805 + select CRYPTO_LRW 806 + select CRYPTO_XTS 807 + help 808 + Camellia cipher algorithm module (x86_64/AES-NI/AVX). 809 + 810 + Camellia is a symmetric key block cipher developed jointly 811 + at NTT and Mitsubishi Electric Corporation. 812 + 813 + The Camellia specifies three key sizes: 128, 192 and 256 bits. 814 + 815 + See also: 816 + <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 817 + 806 818 config CRYPTO_CAMELLIA_SPARC64 807 819 tristate "Camellia cipher algorithm (SPARC64)" 808 820 depends on SPARC64 ··· 841 809 See also: 842 810 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 843 811 812 + config CRYPTO_CAST_COMMON 813 + tristate 814 + help 815 + Common parts of the CAST cipher algorithms shared by the 816 + generic c and the assembler implementations. 817 + 844 818 config CRYPTO_CAST5 845 819 tristate "CAST5 (CAST-128) cipher algorithm" 846 820 select CRYPTO_ALGAPI 821 + select CRYPTO_CAST_COMMON 847 822 help 848 823 The CAST5 encryption algorithm (synonymous with CAST-128) is 849 824 described in RFC2144. ··· 861 822 select CRYPTO_ALGAPI 862 823 select CRYPTO_CRYPTD 863 824 select CRYPTO_ABLK_HELPER_X86 825 + select CRYPTO_CAST_COMMON 864 826 select CRYPTO_CAST5 865 827 help 866 828 The CAST5 encryption algorithm (synonymous with CAST-128) is ··· 873 833 config CRYPTO_CAST6 874 834 tristate "CAST6 (CAST-256) cipher algorithm" 875 835 select CRYPTO_ALGAPI 836 + select CRYPTO_CAST_COMMON 876 837 help 877 838 The CAST6 encryption algorithm (synonymous with CAST-256) is 878 839 described in RFC2612. ··· 885 844 select CRYPTO_CRYPTD 886 845 select CRYPTO_ABLK_HELPER_X86 887 846 select CRYPTO_GLUE_HELPER_X86 847 + select CRYPTO_CAST_COMMON 888 848 select CRYPTO_CAST6 889 849 select CRYPTO_LRW 890 850 select CRYPTO_XTS
+1
crypto/Makefile
··· 68 68 obj-$(CONFIG_CRYPTO_SERPENT) += serpent_generic.o 69 69 obj-$(CONFIG_CRYPTO_AES) += aes_generic.o 70 70 obj-$(CONFIG_CRYPTO_CAMELLIA) += camellia_generic.o 71 + obj-$(CONFIG_CRYPTO_CAST_COMMON) += cast_common.o 71 72 obj-$(CONFIG_CRYPTO_CAST5) += cast5_generic.o 72 73 obj-$(CONFIG_CRYPTO_CAST6) += cast6_generic.o 73 74 obj-$(CONFIG_CRYPTO_ARC4) += arc4.o
+4 -273
crypto/cast5_generic.c
··· 30 30 #include <linux/types.h> 31 31 #include <crypto/cast5.h> 32 32 33 - 34 - const u32 cast5_s1[256] = { 35 - 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 36 - 0x9c004dd3, 0x6003e540, 0xcf9fc949, 37 - 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 38 - 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, 39 - 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 40 - 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, 41 - 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 42 - 0xaa54166b, 0x22568e3a, 0xa2d341d0, 43 - 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 44 - 0x4a97c1d8, 0x527644b7, 0xb5f437a7, 45 - 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 46 - 0x90ecf52e, 0x22b0c054, 0xbc8e5935, 47 - 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 48 - 0xe93b159f, 0xb48ee411, 0x4bff345d, 49 - 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 50 - 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, 51 - 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 52 - 0xc59c5319, 0xb949e354, 0xb04669fe, 53 - 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 54 - 0x6a390493, 0xe63d37e0, 0x2a54f6b3, 55 - 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 56 - 0xf61b1891, 0xbb72275e, 0xaa508167, 57 - 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 58 - 0xa2d1936b, 0x2ad286af, 0xaa56d291, 59 - 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 60 - 0x73e2bb14, 0xa0bebc3c, 0x54623779, 61 - 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 62 - 0x89fe78e6, 0x3fab0950, 0x325ff6c2, 63 - 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 64 - 0x380782d5, 0xc7fa5cf6, 0x8ac31511, 65 - 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 66 - 0x051ef495, 0xaa573b04, 0x4a805d8d, 67 - 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 68 - 0x50afd341, 0xa7c13275, 0x915a0bf5, 69 - 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 70 - 0xab85c5f3, 0x1b55db94, 0xaad4e324, 71 - 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 72 - 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, 73 - 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 74 - 0x22513f1e, 0xaa51a79b, 0x2ad344cc, 75 - 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 76 - 0x032268d4, 0xc9600acc, 0xce387e6d, 77 - 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 78 - 0x4736f464, 0x5ad328d8, 0xb347cc96, 79 - 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 80 - 0xbfc5fe4a, 0xa70aec10, 0xac39570a, 81 - 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 82 - 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, 83 - 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 84 - 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, 85 - 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 86 - 0x51c85f4d, 0x56907596, 0xa5bb15e6, 87 - 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 88 - 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, 89 - 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 90 - 0x700b45e1, 0xd5ea50f1, 0x85a92872, 91 - 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 92 - 0x0cd0ede7, 0x26470db8, 0xf881814c, 93 - 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 94 - 0xab838653, 0x6e2f1e23, 0x83719c9e, 95 - 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 96 - 0xe1e696ff, 0xb141ab08, 0x7cca89b9, 97 - 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 98 - 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf 99 - }; 100 - EXPORT_SYMBOL_GPL(cast5_s1); 101 - const u32 cast5_s2[256] = { 102 - 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 103 - 0xeec5207a, 0x55889c94, 0x72fc0651, 104 - 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 105 - 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, 106 - 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 107 - 0xef944459, 0xba83ccb3, 0xe0c3cdfb, 108 - 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 109 - 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, 110 - 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 111 - 0x77e83f4e, 0x79929269, 0x24fa9f7b, 112 - 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 113 - 0x0d554b63, 0x5d681121, 0xc866c359, 114 - 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 115 - 0x39f7627f, 0x361e3084, 0xe4eb573b, 116 - 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 117 - 0x99847ab4, 0xa0e3df79, 0xba6cf38c, 118 - 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 119 - 0x8f458c74, 0xd9e0a227, 0x4ec73a34, 120 - 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 121 - 0x1d804366, 0x721d9bfd, 0xa58684bb, 122 - 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 123 - 0x27e19ba5, 0xd5a6c252, 0xe49754bd, 124 - 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 125 - 0xe0b56714, 0x21f043b7, 0xe5d05860, 126 - 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 127 - 0x68561be6, 0x83ca6b94, 0x2d6ed23b, 128 - 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 129 - 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, 130 - 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 131 - 0xb96726d1, 0x8049a7e8, 0x22b7da7b, 132 - 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 133 - 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, 134 - 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 135 - 0xe3214517, 0xb4542835, 0x9f63293c, 136 - 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 137 - 0x30a22c95, 0x31a70850, 0x60930f13, 138 - 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 139 - 0xa02b1741, 0x7cbad9a2, 0x2180036f, 140 - 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 141 - 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, 142 - 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 143 - 0x846a3bae, 0x8ff77888, 0xee5d60f6, 144 - 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 145 - 0x157fd7fa, 0xef8579cc, 0xd152de58, 146 - 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 147 - 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, 148 - 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 149 - 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, 150 - 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 151 - 0x301e16e6, 0x273be979, 0xb0ffeaa6, 152 - 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 153 - 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, 154 - 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 155 - 0x1a513742, 0xef6828bc, 0x520365d6, 156 - 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 157 - 0x5eea29cb, 0x145892f5, 0x91584f7f, 158 - 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 159 - 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, 160 - 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 161 - 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, 162 - 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 163 - 0xa345415e, 0x5c038323, 0x3e5d3bb9, 164 - 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 165 - 0x73bfbe70, 0x83877605, 0x4523ecf1 166 - }; 167 - EXPORT_SYMBOL_GPL(cast5_s2); 168 - const u32 cast5_s3[256] = { 169 - 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 170 - 0x369fe44b, 0x8c1fc644, 0xaececa90, 171 - 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 172 - 0xf0ad0548, 0xe13c8d83, 0x927010d5, 173 - 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 174 - 0xfade82e0, 0xa067268b, 0x8272792e, 175 - 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 176 - 0x825b1bfd, 0x9255c5ed, 0x1257a240, 177 - 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 178 - 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, 179 - 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 180 - 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, 181 - 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 182 - 0x4a012d6e, 0xc5884a28, 0xccc36f71, 183 - 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 184 - 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, 185 - 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 186 - 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, 187 - 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 188 - 0x1eac5790, 0x796fb449, 0x8252dc15, 189 - 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 190 - 0xe83ec305, 0x4f91751a, 0x925669c2, 191 - 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 192 - 0x927985b2, 0x8276dbcb, 0x02778176, 193 - 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 194 - 0x340ce5c8, 0x96bbb682, 0x93b4b148, 195 - 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 196 - 0x8437aa88, 0x7d29dc96, 0x2756d3dc, 197 - 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 198 - 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, 199 - 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 200 - 0xbda8229c, 0x127dadaa, 0x438a074e, 201 - 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 202 - 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, 203 - 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 204 - 0x76a2e214, 0xb9a40368, 0x925d958f, 205 - 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 206 - 0x193cbcfa, 0x27627545, 0x825cf47a, 207 - 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 208 - 0x8272a972, 0x9270c4a8, 0x127de50b, 209 - 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 210 - 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, 211 - 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 212 - 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, 213 - 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 214 - 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, 215 - 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 216 - 0x7c34671c, 0x02717ef6, 0x4feb5536, 217 - 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 218 - 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, 219 - 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 220 - 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, 221 - 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 222 - 0x856302e0, 0x72dbd92b, 0xee971b69, 223 - 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 224 - 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, 225 - 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 226 - 0x0ff0443d, 0x606e6dc6, 0x60543a49, 227 - 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 228 - 0x68458425, 0x99833be5, 0x600d457d, 229 - 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 230 - 0x9c305a00, 0x52bce688, 0x1b03588a, 231 - 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 232 - 0xa133c501, 0xe9d3531c, 0xee353783 233 - }; 234 - EXPORT_SYMBOL_GPL(cast5_s3); 235 - const u32 cast5_s4[256] = { 236 - 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 237 - 0x64ad8c57, 0x85510443, 0xfa020ed1, 238 - 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 239 - 0x6497b7b1, 0xf3641f63, 0x241e4adf, 240 - 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 241 - 0xc0a5374f, 0x1d2d00d9, 0x24147b15, 242 - 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 243 - 0x0c13fefe, 0x081b08ca, 0x05170121, 244 - 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 245 - 0x06df4261, 0xbb9e9b8a, 0x7293ea25, 246 - 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 247 - 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, 248 - 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 249 - 0x11b638e1, 0x72500e03, 0xf80eb2bb, 250 - 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 251 - 0x6920318f, 0x081dbb99, 0xffc304a5, 252 - 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 253 - 0x9f926f91, 0x9f46222f, 0x3991467d, 254 - 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 255 - 0x3fb6180c, 0x18f8931e, 0x281658e6, 256 - 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 257 - 0x79098b02, 0xe4eabb81, 0x28123b23, 258 - 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 259 - 0x0014377b, 0x041e8ac8, 0x09114003, 260 - 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 261 - 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, 262 - 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 263 - 0x56c8c391, 0x6b65811c, 0x5e146119, 264 - 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 265 - 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, 266 - 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 267 - 0xeca1d7c7, 0x041afa32, 0x1d16625a, 268 - 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 269 - 0xc70b8b46, 0xd9e66a48, 0x56e55a79, 270 - 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 271 - 0xedda04eb, 0x17a9be04, 0x2c18f4df, 272 - 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 273 - 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, 274 - 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 275 - 0x0418f2c8, 0x001a96a6, 0x0d1526ab, 276 - 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 277 - 0x311170a7, 0x3e9b640c, 0xcc3e10d7, 278 - 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 279 - 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, 280 - 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 281 - 0xb4be31cd, 0xd8782806, 0x12a3a4e2, 282 - 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 283 - 0x9711aac5, 0x001d7b95, 0x82e5e7d2, 284 - 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 285 - 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, 286 - 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 287 - 0x0ce454a9, 0xd60acd86, 0x015f1919, 288 - 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 289 - 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, 290 - 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 291 - 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, 292 - 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 293 - 0x296b299e, 0x492fc295, 0x9266beab, 294 - 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 295 - 0xf65324e6, 0x6afce36c, 0x0316cc04, 296 - 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 297 - 0x932bcdf6, 0xb657c34d, 0x4edfd282, 298 - 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 299 - 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2 300 - }; 301 - EXPORT_SYMBOL_GPL(cast5_s4); 302 33 static const u32 s5[256] = { 303 34 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 304 35 0x1dd358f5, 0x44dd9d44, 0x1731167f, ··· 295 564 0xeaee6801, 0x8db2a283, 0xea8bf59e 296 565 }; 297 566 298 - #define s1 cast5_s1 299 - #define s2 cast5_s2 300 - #define s3 cast5_s3 301 - #define s4 cast5_s4 567 + #define s1 cast_s1 568 + #define s2 cast_s2 569 + #define s3 cast_s3 570 + #define s4 cast_s4 302 571 303 572 #define F1(D, m, r) ((I = ((m) + (D))), (I = rol32(I, (r))), \ 304 573 (((s1[I >> 24] ^ s2[(I>>16)&0xff]) - s3[(I>>8)&0xff]) + s4[I&0xff]))
+4 -276
crypto/cast6_generic.c
··· 27 27 #include <linux/types.h> 28 28 #include <crypto/cast6.h> 29 29 30 - #define s1 cast6_s1 31 - #define s2 cast6_s2 32 - #define s3 cast6_s3 33 - #define s4 cast6_s4 30 + #define s1 cast_s1 31 + #define s2 cast_s2 32 + #define s3 cast_s3 33 + #define s4 cast_s4 34 34 35 35 #define F1(D, r, m) ((I = ((m) + (D))), (I = rol32(I, (r))), \ 36 36 (((s1[I >> 24] ^ s2[(I>>16)&0xff]) - s3[(I>>8)&0xff]) + s4[I&0xff])) ··· 38 38 (((s1[I >> 24] - s2[(I>>16)&0xff]) + s3[(I>>8)&0xff]) ^ s4[I&0xff])) 39 39 #define F3(D, r, m) ((I = ((m) - (D))), (I = rol32(I, (r))), \ 40 40 (((s1[I >> 24] + s2[(I>>16)&0xff]) ^ s3[(I>>8)&0xff]) - s4[I&0xff])) 41 - 42 - const u32 cast6_s1[256] = { 43 - 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 44 - 0x9c004dd3, 0x6003e540, 0xcf9fc949, 45 - 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 46 - 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, 47 - 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 48 - 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, 49 - 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 50 - 0xaa54166b, 0x22568e3a, 0xa2d341d0, 51 - 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 52 - 0x4a97c1d8, 0x527644b7, 0xb5f437a7, 53 - 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 54 - 0x90ecf52e, 0x22b0c054, 0xbc8e5935, 55 - 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 56 - 0xe93b159f, 0xb48ee411, 0x4bff345d, 57 - 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 58 - 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, 59 - 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 60 - 0xc59c5319, 0xb949e354, 0xb04669fe, 61 - 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 62 - 0x6a390493, 0xe63d37e0, 0x2a54f6b3, 63 - 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 64 - 0xf61b1891, 0xbb72275e, 0xaa508167, 65 - 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 66 - 0xa2d1936b, 0x2ad286af, 0xaa56d291, 67 - 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 68 - 0x73e2bb14, 0xa0bebc3c, 0x54623779, 69 - 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 70 - 0x89fe78e6, 0x3fab0950, 0x325ff6c2, 71 - 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 72 - 0x380782d5, 0xc7fa5cf6, 0x8ac31511, 73 - 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 74 - 0x051ef495, 0xaa573b04, 0x4a805d8d, 75 - 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 76 - 0x50afd341, 0xa7c13275, 0x915a0bf5, 77 - 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 78 - 0xab85c5f3, 0x1b55db94, 0xaad4e324, 79 - 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 80 - 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, 81 - 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 82 - 0x22513f1e, 0xaa51a79b, 0x2ad344cc, 83 - 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 84 - 0x032268d4, 0xc9600acc, 0xce387e6d, 85 - 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 86 - 0x4736f464, 0x5ad328d8, 0xb347cc96, 87 - 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 88 - 0xbfc5fe4a, 0xa70aec10, 0xac39570a, 89 - 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 90 - 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, 91 - 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 92 - 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, 93 - 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 94 - 0x51c85f4d, 0x56907596, 0xa5bb15e6, 95 - 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 96 - 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, 97 - 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 98 - 0x700b45e1, 0xd5ea50f1, 0x85a92872, 99 - 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 100 - 0x0cd0ede7, 0x26470db8, 0xf881814c, 101 - 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 102 - 0xab838653, 0x6e2f1e23, 0x83719c9e, 103 - 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 104 - 0xe1e696ff, 0xb141ab08, 0x7cca89b9, 105 - 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 106 - 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf 107 - }; 108 - EXPORT_SYMBOL_GPL(cast6_s1); 109 - 110 - const u32 cast6_s2[256] = { 111 - 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 112 - 0xeec5207a, 0x55889c94, 0x72fc0651, 113 - 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 114 - 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, 115 - 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 116 - 0xef944459, 0xba83ccb3, 0xe0c3cdfb, 117 - 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 118 - 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, 119 - 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 120 - 0x77e83f4e, 0x79929269, 0x24fa9f7b, 121 - 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 122 - 0x0d554b63, 0x5d681121, 0xc866c359, 123 - 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 124 - 0x39f7627f, 0x361e3084, 0xe4eb573b, 125 - 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 126 - 0x99847ab4, 0xa0e3df79, 0xba6cf38c, 127 - 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 128 - 0x8f458c74, 0xd9e0a227, 0x4ec73a34, 129 - 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 130 - 0x1d804366, 0x721d9bfd, 0xa58684bb, 131 - 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 132 - 0x27e19ba5, 0xd5a6c252, 0xe49754bd, 133 - 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 134 - 0xe0b56714, 0x21f043b7, 0xe5d05860, 135 - 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 136 - 0x68561be6, 0x83ca6b94, 0x2d6ed23b, 137 - 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 138 - 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, 139 - 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 140 - 0xb96726d1, 0x8049a7e8, 0x22b7da7b, 141 - 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 142 - 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, 143 - 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 144 - 0xe3214517, 0xb4542835, 0x9f63293c, 145 - 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 146 - 0x30a22c95, 0x31a70850, 0x60930f13, 147 - 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 148 - 0xa02b1741, 0x7cbad9a2, 0x2180036f, 149 - 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 150 - 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, 151 - 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 152 - 0x846a3bae, 0x8ff77888, 0xee5d60f6, 153 - 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 154 - 0x157fd7fa, 0xef8579cc, 0xd152de58, 155 - 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 156 - 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, 157 - 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 158 - 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, 159 - 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 160 - 0x301e16e6, 0x273be979, 0xb0ffeaa6, 161 - 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 162 - 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, 163 - 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 164 - 0x1a513742, 0xef6828bc, 0x520365d6, 165 - 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 166 - 0x5eea29cb, 0x145892f5, 0x91584f7f, 167 - 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 168 - 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, 169 - 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 170 - 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, 171 - 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 172 - 0xa345415e, 0x5c038323, 0x3e5d3bb9, 173 - 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 174 - 0x73bfbe70, 0x83877605, 0x4523ecf1 175 - }; 176 - EXPORT_SYMBOL_GPL(cast6_s2); 177 - 178 - const u32 cast6_s3[256] = { 179 - 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 180 - 0x369fe44b, 0x8c1fc644, 0xaececa90, 181 - 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 182 - 0xf0ad0548, 0xe13c8d83, 0x927010d5, 183 - 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 184 - 0xfade82e0, 0xa067268b, 0x8272792e, 185 - 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 186 - 0x825b1bfd, 0x9255c5ed, 0x1257a240, 187 - 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 188 - 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, 189 - 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 190 - 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, 191 - 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 192 - 0x4a012d6e, 0xc5884a28, 0xccc36f71, 193 - 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 194 - 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, 195 - 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 196 - 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, 197 - 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 198 - 0x1eac5790, 0x796fb449, 0x8252dc15, 199 - 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 200 - 0xe83ec305, 0x4f91751a, 0x925669c2, 201 - 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 202 - 0x927985b2, 0x8276dbcb, 0x02778176, 203 - 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 204 - 0x340ce5c8, 0x96bbb682, 0x93b4b148, 205 - 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 206 - 0x8437aa88, 0x7d29dc96, 0x2756d3dc, 207 - 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 208 - 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, 209 - 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 210 - 0xbda8229c, 0x127dadaa, 0x438a074e, 211 - 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 212 - 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, 213 - 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 214 - 0x76a2e214, 0xb9a40368, 0x925d958f, 215 - 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 216 - 0x193cbcfa, 0x27627545, 0x825cf47a, 217 - 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 218 - 0x8272a972, 0x9270c4a8, 0x127de50b, 219 - 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 220 - 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, 221 - 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 222 - 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, 223 - 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 224 - 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, 225 - 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 226 - 0x7c34671c, 0x02717ef6, 0x4feb5536, 227 - 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 228 - 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, 229 - 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 230 - 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, 231 - 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 232 - 0x856302e0, 0x72dbd92b, 0xee971b69, 233 - 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 234 - 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, 235 - 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 236 - 0x0ff0443d, 0x606e6dc6, 0x60543a49, 237 - 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 238 - 0x68458425, 0x99833be5, 0x600d457d, 239 - 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 240 - 0x9c305a00, 0x52bce688, 0x1b03588a, 241 - 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 242 - 0xa133c501, 0xe9d3531c, 0xee353783 243 - }; 244 - EXPORT_SYMBOL_GPL(cast6_s3); 245 - 246 - const u32 cast6_s4[256] = { 247 - 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 248 - 0x64ad8c57, 0x85510443, 0xfa020ed1, 249 - 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 250 - 0x6497b7b1, 0xf3641f63, 0x241e4adf, 251 - 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 252 - 0xc0a5374f, 0x1d2d00d9, 0x24147b15, 253 - 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 254 - 0x0c13fefe, 0x081b08ca, 0x05170121, 255 - 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 256 - 0x06df4261, 0xbb9e9b8a, 0x7293ea25, 257 - 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 258 - 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, 259 - 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 260 - 0x11b638e1, 0x72500e03, 0xf80eb2bb, 261 - 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 262 - 0x6920318f, 0x081dbb99, 0xffc304a5, 263 - 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 264 - 0x9f926f91, 0x9f46222f, 0x3991467d, 265 - 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 266 - 0x3fb6180c, 0x18f8931e, 0x281658e6, 267 - 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 268 - 0x79098b02, 0xe4eabb81, 0x28123b23, 269 - 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 270 - 0x0014377b, 0x041e8ac8, 0x09114003, 271 - 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 272 - 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, 273 - 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 274 - 0x56c8c391, 0x6b65811c, 0x5e146119, 275 - 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 276 - 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, 277 - 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 278 - 0xeca1d7c7, 0x041afa32, 0x1d16625a, 279 - 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 280 - 0xc70b8b46, 0xd9e66a48, 0x56e55a79, 281 - 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 282 - 0xedda04eb, 0x17a9be04, 0x2c18f4df, 283 - 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 284 - 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, 285 - 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 286 - 0x0418f2c8, 0x001a96a6, 0x0d1526ab, 287 - 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 288 - 0x311170a7, 0x3e9b640c, 0xcc3e10d7, 289 - 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 290 - 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, 291 - 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 292 - 0xb4be31cd, 0xd8782806, 0x12a3a4e2, 293 - 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 294 - 0x9711aac5, 0x001d7b95, 0x82e5e7d2, 295 - 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 296 - 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, 297 - 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 298 - 0x0ce454a9, 0xd60acd86, 0x015f1919, 299 - 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 300 - 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, 301 - 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 302 - 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, 303 - 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 304 - 0x296b299e, 0x492fc295, 0x9266beab, 305 - 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 306 - 0xf65324e6, 0x6afce36c, 0x0316cc04, 307 - 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 308 - 0x932bcdf6, 0xb657c34d, 0x4edfd282, 309 - 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 310 - 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2 311 - }; 312 - EXPORT_SYMBOL_GPL(cast6_s4); 313 41 314 42 static const u32 Tm[24][8] = { 315 43 { 0x5a827999, 0xc95c653a, 0x383650db, 0xa7103c7c, 0x15ea281d,
+290
crypto/cast_common.c
··· 1 + /* 2 + * Common lookup tables for CAST-128 (cast5) and CAST-256 (cast6) 3 + * 4 + * Copyright © 1998, 1999, 2000, 2001 Free Software Foundation, Inc. 5 + * Copyright © 2003 Kartikey Mahendra Bhatt <kartik_me@hotmail.com> 6 + * Copyright © 2012 Jussi Kivilinna <jussi.kivilinna@mbnet.fi> 7 + * 8 + * This program is free software; you can redistribute it and/or modify it 9 + * under the terms of GNU General Public License as published by the Free 10 + * Software Foundation; either version 2 of the License, or (at your option) 11 + * any later version. 12 + * 13 + */ 14 + 15 + #include <linux/module.h> 16 + #include <crypto/cast_common.h> 17 + 18 + const u32 cast_s1[256] = { 19 + 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 20 + 0x9c004dd3, 0x6003e540, 0xcf9fc949, 21 + 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 22 + 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, 23 + 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 24 + 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, 25 + 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 26 + 0xaa54166b, 0x22568e3a, 0xa2d341d0, 27 + 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 28 + 0x4a97c1d8, 0x527644b7, 0xb5f437a7, 29 + 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 30 + 0x90ecf52e, 0x22b0c054, 0xbc8e5935, 31 + 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 32 + 0xe93b159f, 0xb48ee411, 0x4bff345d, 33 + 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 34 + 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, 35 + 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 36 + 0xc59c5319, 0xb949e354, 0xb04669fe, 37 + 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 38 + 0x6a390493, 0xe63d37e0, 0x2a54f6b3, 39 + 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 40 + 0xf61b1891, 0xbb72275e, 0xaa508167, 41 + 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 42 + 0xa2d1936b, 0x2ad286af, 0xaa56d291, 43 + 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 44 + 0x73e2bb14, 0xa0bebc3c, 0x54623779, 45 + 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 46 + 0x89fe78e6, 0x3fab0950, 0x325ff6c2, 47 + 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 48 + 0x380782d5, 0xc7fa5cf6, 0x8ac31511, 49 + 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 50 + 0x051ef495, 0xaa573b04, 0x4a805d8d, 51 + 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 52 + 0x50afd341, 0xa7c13275, 0x915a0bf5, 53 + 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 54 + 0xab85c5f3, 0x1b55db94, 0xaad4e324, 55 + 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 56 + 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, 57 + 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 58 + 0x22513f1e, 0xaa51a79b, 0x2ad344cc, 59 + 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 60 + 0x032268d4, 0xc9600acc, 0xce387e6d, 61 + 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 62 + 0x4736f464, 0x5ad328d8, 0xb347cc96, 63 + 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 64 + 0xbfc5fe4a, 0xa70aec10, 0xac39570a, 65 + 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 66 + 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, 67 + 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 68 + 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, 69 + 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 70 + 0x51c85f4d, 0x56907596, 0xa5bb15e6, 71 + 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 72 + 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, 73 + 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 74 + 0x700b45e1, 0xd5ea50f1, 0x85a92872, 75 + 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 76 + 0x0cd0ede7, 0x26470db8, 0xf881814c, 77 + 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 78 + 0xab838653, 0x6e2f1e23, 0x83719c9e, 79 + 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 80 + 0xe1e696ff, 0xb141ab08, 0x7cca89b9, 81 + 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 82 + 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf 83 + }; 84 + EXPORT_SYMBOL_GPL(cast_s1); 85 + 86 + const u32 cast_s2[256] = { 87 + 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 88 + 0xeec5207a, 0x55889c94, 0x72fc0651, 89 + 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 90 + 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, 91 + 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 92 + 0xef944459, 0xba83ccb3, 0xe0c3cdfb, 93 + 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 94 + 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, 95 + 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 96 + 0x77e83f4e, 0x79929269, 0x24fa9f7b, 97 + 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 98 + 0x0d554b63, 0x5d681121, 0xc866c359, 99 + 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 100 + 0x39f7627f, 0x361e3084, 0xe4eb573b, 101 + 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 102 + 0x99847ab4, 0xa0e3df79, 0xba6cf38c, 103 + 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 104 + 0x8f458c74, 0xd9e0a227, 0x4ec73a34, 105 + 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 106 + 0x1d804366, 0x721d9bfd, 0xa58684bb, 107 + 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 108 + 0x27e19ba5, 0xd5a6c252, 0xe49754bd, 109 + 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 110 + 0xe0b56714, 0x21f043b7, 0xe5d05860, 111 + 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 112 + 0x68561be6, 0x83ca6b94, 0x2d6ed23b, 113 + 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 114 + 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, 115 + 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 116 + 0xb96726d1, 0x8049a7e8, 0x22b7da7b, 117 + 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 118 + 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, 119 + 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 120 + 0xe3214517, 0xb4542835, 0x9f63293c, 121 + 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 122 + 0x30a22c95, 0x31a70850, 0x60930f13, 123 + 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 124 + 0xa02b1741, 0x7cbad9a2, 0x2180036f, 125 + 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 126 + 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, 127 + 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 128 + 0x846a3bae, 0x8ff77888, 0xee5d60f6, 129 + 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 130 + 0x157fd7fa, 0xef8579cc, 0xd152de58, 131 + 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 132 + 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, 133 + 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 134 + 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, 135 + 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 136 + 0x301e16e6, 0x273be979, 0xb0ffeaa6, 137 + 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 138 + 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, 139 + 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 140 + 0x1a513742, 0xef6828bc, 0x520365d6, 141 + 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 142 + 0x5eea29cb, 0x145892f5, 0x91584f7f, 143 + 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 144 + 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, 145 + 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 146 + 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, 147 + 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 148 + 0xa345415e, 0x5c038323, 0x3e5d3bb9, 149 + 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 150 + 0x73bfbe70, 0x83877605, 0x4523ecf1 151 + }; 152 + EXPORT_SYMBOL_GPL(cast_s2); 153 + 154 + const u32 cast_s3[256] = { 155 + 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 156 + 0x369fe44b, 0x8c1fc644, 0xaececa90, 157 + 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 158 + 0xf0ad0548, 0xe13c8d83, 0x927010d5, 159 + 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 160 + 0xfade82e0, 0xa067268b, 0x8272792e, 161 + 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 162 + 0x825b1bfd, 0x9255c5ed, 0x1257a240, 163 + 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 164 + 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, 165 + 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 166 + 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, 167 + 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 168 + 0x4a012d6e, 0xc5884a28, 0xccc36f71, 169 + 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 170 + 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, 171 + 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 172 + 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, 173 + 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 174 + 0x1eac5790, 0x796fb449, 0x8252dc15, 175 + 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 176 + 0xe83ec305, 0x4f91751a, 0x925669c2, 177 + 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 178 + 0x927985b2, 0x8276dbcb, 0x02778176, 179 + 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 180 + 0x340ce5c8, 0x96bbb682, 0x93b4b148, 181 + 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 182 + 0x8437aa88, 0x7d29dc96, 0x2756d3dc, 183 + 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 184 + 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, 185 + 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 186 + 0xbda8229c, 0x127dadaa, 0x438a074e, 187 + 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 188 + 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, 189 + 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 190 + 0x76a2e214, 0xb9a40368, 0x925d958f, 191 + 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 192 + 0x193cbcfa, 0x27627545, 0x825cf47a, 193 + 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 194 + 0x8272a972, 0x9270c4a8, 0x127de50b, 195 + 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 196 + 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, 197 + 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 198 + 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, 199 + 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 200 + 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, 201 + 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 202 + 0x7c34671c, 0x02717ef6, 0x4feb5536, 203 + 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 204 + 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, 205 + 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 206 + 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, 207 + 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 208 + 0x856302e0, 0x72dbd92b, 0xee971b69, 209 + 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 210 + 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, 211 + 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 212 + 0x0ff0443d, 0x606e6dc6, 0x60543a49, 213 + 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 214 + 0x68458425, 0x99833be5, 0x600d457d, 215 + 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 216 + 0x9c305a00, 0x52bce688, 0x1b03588a, 217 + 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 218 + 0xa133c501, 0xe9d3531c, 0xee353783 219 + }; 220 + EXPORT_SYMBOL_GPL(cast_s3); 221 + 222 + const u32 cast_s4[256] = { 223 + 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 224 + 0x64ad8c57, 0x85510443, 0xfa020ed1, 225 + 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 226 + 0x6497b7b1, 0xf3641f63, 0x241e4adf, 227 + 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 228 + 0xc0a5374f, 0x1d2d00d9, 0x24147b15, 229 + 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 230 + 0x0c13fefe, 0x081b08ca, 0x05170121, 231 + 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 232 + 0x06df4261, 0xbb9e9b8a, 0x7293ea25, 233 + 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 234 + 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, 235 + 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 236 + 0x11b638e1, 0x72500e03, 0xf80eb2bb, 237 + 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 238 + 0x6920318f, 0x081dbb99, 0xffc304a5, 239 + 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 240 + 0x9f926f91, 0x9f46222f, 0x3991467d, 241 + 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 242 + 0x3fb6180c, 0x18f8931e, 0x281658e6, 243 + 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 244 + 0x79098b02, 0xe4eabb81, 0x28123b23, 245 + 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 246 + 0x0014377b, 0x041e8ac8, 0x09114003, 247 + 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 248 + 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, 249 + 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 250 + 0x56c8c391, 0x6b65811c, 0x5e146119, 251 + 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 252 + 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, 253 + 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 254 + 0xeca1d7c7, 0x041afa32, 0x1d16625a, 255 + 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 256 + 0xc70b8b46, 0xd9e66a48, 0x56e55a79, 257 + 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 258 + 0xedda04eb, 0x17a9be04, 0x2c18f4df, 259 + 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 260 + 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, 261 + 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 262 + 0x0418f2c8, 0x001a96a6, 0x0d1526ab, 263 + 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 264 + 0x311170a7, 0x3e9b640c, 0xcc3e10d7, 265 + 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 266 + 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, 267 + 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 268 + 0xb4be31cd, 0xd8782806, 0x12a3a4e2, 269 + 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 270 + 0x9711aac5, 0x001d7b95, 0x82e5e7d2, 271 + 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 272 + 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, 273 + 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 274 + 0x0ce454a9, 0xd60acd86, 0x015f1919, 275 + 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 276 + 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, 277 + 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 278 + 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, 279 + 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 280 + 0x296b299e, 0x492fc295, 0x9266beab, 281 + 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 282 + 0xf65324e6, 0x6afce36c, 0x0316cc04, 283 + 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 284 + 0x932bcdf6, 0xb657c34d, 0x4edfd282, 285 + 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 286 + 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2 287 + }; 288 + EXPORT_SYMBOL_GPL(cast_s4); 289 + 290 + MODULE_LICENSE("GPL");
+29
crypto/tcrypt.c
··· 971 971 case 3: 972 972 ret += tcrypt_test("ecb(des)"); 973 973 ret += tcrypt_test("cbc(des)"); 974 + ret += tcrypt_test("ctr(des)"); 974 975 break; 975 976 976 977 case 4: 977 978 ret += tcrypt_test("ecb(des3_ede)"); 978 979 ret += tcrypt_test("cbc(des3_ede)"); 980 + ret += tcrypt_test("ctr(des3_ede)"); 979 981 break; 980 982 981 983 case 5: ··· 1481 1479 test_hash_speed("ghash-generic", sec, hash_speed_template_16); 1482 1480 if (mode > 300 && mode < 400) break; 1483 1481 1482 + case 319: 1483 + test_hash_speed("crc32c", sec, generic_hash_speed_template); 1484 + if (mode > 300 && mode < 400) break; 1485 + 1484 1486 case 399: 1485 1487 break; 1486 1488 ··· 1725 1719 test_acipher_speed("xts(cast6)", ENCRYPT, sec, NULL, 0, 1726 1720 speed_template_32_64); 1727 1721 test_acipher_speed("xts(cast6)", DECRYPT, sec, NULL, 0, 1722 + speed_template_32_64); 1723 + break; 1724 + 1725 + case 508: 1726 + test_acipher_speed("ecb(camellia)", ENCRYPT, sec, NULL, 0, 1727 + speed_template_16_32); 1728 + test_acipher_speed("ecb(camellia)", DECRYPT, sec, NULL, 0, 1729 + speed_template_16_32); 1730 + test_acipher_speed("cbc(camellia)", ENCRYPT, sec, NULL, 0, 1731 + speed_template_16_32); 1732 + test_acipher_speed("cbc(camellia)", DECRYPT, sec, NULL, 0, 1733 + speed_template_16_32); 1734 + test_acipher_speed("ctr(camellia)", ENCRYPT, sec, NULL, 0, 1735 + speed_template_16_32); 1736 + test_acipher_speed("ctr(camellia)", DECRYPT, sec, NULL, 0, 1737 + speed_template_16_32); 1738 + test_acipher_speed("lrw(camellia)", ENCRYPT, sec, NULL, 0, 1739 + speed_template_32_48); 1740 + test_acipher_speed("lrw(camellia)", DECRYPT, sec, NULL, 0, 1741 + speed_template_32_48); 1742 + test_acipher_speed("xts(camellia)", ENCRYPT, sec, NULL, 0, 1743 + speed_template_32_64); 1744 + test_acipher_speed("xts(camellia)", DECRYPT, sec, NULL, 0, 1728 1745 speed_template_32_64); 1729 1746 break; 1730 1747
+45 -324
crypto/testmgr.c
··· 1638 1638 { 1639 1639 .alg = "__cbc-cast5-avx", 1640 1640 .test = alg_test_null, 1641 - .suite = { 1642 - .cipher = { 1643 - .enc = { 1644 - .vecs = NULL, 1645 - .count = 0 1646 - }, 1647 - .dec = { 1648 - .vecs = NULL, 1649 - .count = 0 1650 - } 1651 - } 1652 - } 1653 1641 }, { 1654 1642 .alg = "__cbc-cast6-avx", 1655 1643 .test = alg_test_null, 1656 - .suite = { 1657 - .cipher = { 1658 - .enc = { 1659 - .vecs = NULL, 1660 - .count = 0 1661 - }, 1662 - .dec = { 1663 - .vecs = NULL, 1664 - .count = 0 1665 - } 1666 - } 1667 - } 1668 1644 }, { 1669 1645 .alg = "__cbc-serpent-avx", 1670 1646 .test = alg_test_null, 1671 - .suite = { 1672 - .cipher = { 1673 - .enc = { 1674 - .vecs = NULL, 1675 - .count = 0 1676 - }, 1677 - .dec = { 1678 - .vecs = NULL, 1679 - .count = 0 1680 - } 1681 - } 1682 - } 1683 1647 }, { 1684 1648 .alg = "__cbc-serpent-sse2", 1685 1649 .test = alg_test_null, 1686 - .suite = { 1687 - .cipher = { 1688 - .enc = { 1689 - .vecs = NULL, 1690 - .count = 0 1691 - }, 1692 - .dec = { 1693 - .vecs = NULL, 1694 - .count = 0 1695 - } 1696 - } 1697 - } 1698 1650 }, { 1699 1651 .alg = "__cbc-twofish-avx", 1700 1652 .test = alg_test_null, 1701 - .suite = { 1702 - .cipher = { 1703 - .enc = { 1704 - .vecs = NULL, 1705 - .count = 0 1706 - }, 1707 - .dec = { 1708 - .vecs = NULL, 1709 - .count = 0 1710 - } 1711 - } 1712 - } 1713 1653 }, { 1714 1654 .alg = "__driver-cbc-aes-aesni", 1715 1655 .test = alg_test_null, 1716 1656 .fips_allowed = 1, 1717 - .suite = { 1718 - .cipher = { 1719 - .enc = { 1720 - .vecs = NULL, 1721 - .count = 0 1722 - }, 1723 - .dec = { 1724 - .vecs = NULL, 1725 - .count = 0 1726 - } 1727 - } 1728 - } 1657 + }, { 1658 + .alg = "__driver-cbc-camellia-aesni", 1659 + .test = alg_test_null, 1729 1660 }, { 1730 1661 .alg = "__driver-cbc-cast5-avx", 1731 1662 .test = alg_test_null, 1732 - .suite = { 1733 - .cipher = { 1734 - .enc = { 1735 - .vecs = NULL, 1736 - .count = 0 1737 - }, 1738 - .dec = { 1739 - .vecs = NULL, 1740 - .count = 0 1741 - } 1742 - } 1743 - } 1744 1663 }, { 1745 1664 .alg = "__driver-cbc-cast6-avx", 1746 1665 .test = alg_test_null, 1747 - .suite = { 1748 - .cipher = { 1749 - .enc = { 1750 - .vecs = NULL, 1751 - .count = 0 1752 - }, 1753 - .dec = { 1754 - .vecs = NULL, 1755 - .count = 0 1756 - } 1757 - } 1758 - } 1759 1666 }, { 1760 1667 .alg = "__driver-cbc-serpent-avx", 1761 1668 .test = alg_test_null, 1762 - .suite = { 1763 - .cipher = { 1764 - .enc = { 1765 - .vecs = NULL, 1766 - .count = 0 1767 - }, 1768 - .dec = { 1769 - .vecs = NULL, 1770 - .count = 0 1771 - } 1772 - } 1773 - } 1774 1669 }, { 1775 1670 .alg = "__driver-cbc-serpent-sse2", 1776 1671 .test = alg_test_null, 1777 - .suite = { 1778 - .cipher = { 1779 - .enc = { 1780 - .vecs = NULL, 1781 - .count = 0 1782 - }, 1783 - .dec = { 1784 - .vecs = NULL, 1785 - .count = 0 1786 - } 1787 - } 1788 - } 1789 1672 }, { 1790 1673 .alg = "__driver-cbc-twofish-avx", 1791 1674 .test = alg_test_null, 1792 - .suite = { 1793 - .cipher = { 1794 - .enc = { 1795 - .vecs = NULL, 1796 - .count = 0 1797 - }, 1798 - .dec = { 1799 - .vecs = NULL, 1800 - .count = 0 1801 - } 1802 - } 1803 - } 1804 1675 }, { 1805 1676 .alg = "__driver-ecb-aes-aesni", 1806 1677 .test = alg_test_null, 1807 1678 .fips_allowed = 1, 1808 - .suite = { 1809 - .cipher = { 1810 - .enc = { 1811 - .vecs = NULL, 1812 - .count = 0 1813 - }, 1814 - .dec = { 1815 - .vecs = NULL, 1816 - .count = 0 1817 - } 1818 - } 1819 - } 1679 + }, { 1680 + .alg = "__driver-ecb-camellia-aesni", 1681 + .test = alg_test_null, 1820 1682 }, { 1821 1683 .alg = "__driver-ecb-cast5-avx", 1822 1684 .test = alg_test_null, 1823 - .suite = { 1824 - .cipher = { 1825 - .enc = { 1826 - .vecs = NULL, 1827 - .count = 0 1828 - }, 1829 - .dec = { 1830 - .vecs = NULL, 1831 - .count = 0 1832 - } 1833 - } 1834 - } 1835 1685 }, { 1836 1686 .alg = "__driver-ecb-cast6-avx", 1837 1687 .test = alg_test_null, 1838 - .suite = { 1839 - .cipher = { 1840 - .enc = { 1841 - .vecs = NULL, 1842 - .count = 0 1843 - }, 1844 - .dec = { 1845 - .vecs = NULL, 1846 - .count = 0 1847 - } 1848 - } 1849 - } 1850 1688 }, { 1851 1689 .alg = "__driver-ecb-serpent-avx", 1852 1690 .test = alg_test_null, 1853 - .suite = { 1854 - .cipher = { 1855 - .enc = { 1856 - .vecs = NULL, 1857 - .count = 0 1858 - }, 1859 - .dec = { 1860 - .vecs = NULL, 1861 - .count = 0 1862 - } 1863 - } 1864 - } 1865 1691 }, { 1866 1692 .alg = "__driver-ecb-serpent-sse2", 1867 1693 .test = alg_test_null, 1868 - .suite = { 1869 - .cipher = { 1870 - .enc = { 1871 - .vecs = NULL, 1872 - .count = 0 1873 - }, 1874 - .dec = { 1875 - .vecs = NULL, 1876 - .count = 0 1877 - } 1878 - } 1879 - } 1880 1694 }, { 1881 1695 .alg = "__driver-ecb-twofish-avx", 1882 1696 .test = alg_test_null, 1883 - .suite = { 1884 - .cipher = { 1885 - .enc = { 1886 - .vecs = NULL, 1887 - .count = 0 1888 - }, 1889 - .dec = { 1890 - .vecs = NULL, 1891 - .count = 0 1892 - } 1893 - } 1894 - } 1895 1697 }, { 1896 1698 .alg = "__ghash-pclmulqdqni", 1897 1699 .test = alg_test_null, 1898 1700 .fips_allowed = 1, 1899 - .suite = { 1900 - .hash = { 1901 - .vecs = NULL, 1902 - .count = 0 1903 - } 1904 - } 1905 1701 }, { 1906 1702 .alg = "ansi_cprng", 1907 1703 .test = alg_test_cprng, ··· 1926 2130 .alg = "cryptd(__driver-cbc-aes-aesni)", 1927 2131 .test = alg_test_null, 1928 2132 .fips_allowed = 1, 1929 - .suite = { 1930 - .cipher = { 1931 - .enc = { 1932 - .vecs = NULL, 1933 - .count = 0 1934 - }, 1935 - .dec = { 1936 - .vecs = NULL, 1937 - .count = 0 1938 - } 1939 - } 1940 - } 2133 + }, { 2134 + .alg = "cryptd(__driver-cbc-camellia-aesni)", 2135 + .test = alg_test_null, 1941 2136 }, { 1942 2137 .alg = "cryptd(__driver-ecb-aes-aesni)", 1943 2138 .test = alg_test_null, 1944 2139 .fips_allowed = 1, 1945 - .suite = { 1946 - .cipher = { 1947 - .enc = { 1948 - .vecs = NULL, 1949 - .count = 0 1950 - }, 1951 - .dec = { 1952 - .vecs = NULL, 1953 - .count = 0 1954 - } 1955 - } 1956 - } 2140 + }, { 2141 + .alg = "cryptd(__driver-ecb-camellia-aesni)", 2142 + .test = alg_test_null, 1957 2143 }, { 1958 2144 .alg = "cryptd(__driver-ecb-cast5-avx)", 1959 2145 .test = alg_test_null, 1960 - .suite = { 1961 - .cipher = { 1962 - .enc = { 1963 - .vecs = NULL, 1964 - .count = 0 1965 - }, 1966 - .dec = { 1967 - .vecs = NULL, 1968 - .count = 0 1969 - } 1970 - } 1971 - } 1972 2146 }, { 1973 2147 .alg = "cryptd(__driver-ecb-cast6-avx)", 1974 2148 .test = alg_test_null, 1975 - .suite = { 1976 - .cipher = { 1977 - .enc = { 1978 - .vecs = NULL, 1979 - .count = 0 1980 - }, 1981 - .dec = { 1982 - .vecs = NULL, 1983 - .count = 0 1984 - } 1985 - } 1986 - } 1987 2149 }, { 1988 2150 .alg = "cryptd(__driver-ecb-serpent-avx)", 1989 2151 .test = alg_test_null, 1990 - .suite = { 1991 - .cipher = { 1992 - .enc = { 1993 - .vecs = NULL, 1994 - .count = 0 1995 - }, 1996 - .dec = { 1997 - .vecs = NULL, 1998 - .count = 0 1999 - } 2000 - } 2001 - } 2002 2152 }, { 2003 2153 .alg = "cryptd(__driver-ecb-serpent-sse2)", 2004 2154 .test = alg_test_null, 2005 - .suite = { 2006 - .cipher = { 2007 - .enc = { 2008 - .vecs = NULL, 2009 - .count = 0 2010 - }, 2011 - .dec = { 2012 - .vecs = NULL, 2013 - .count = 0 2014 - } 2015 - } 2016 - } 2017 2155 }, { 2018 2156 .alg = "cryptd(__driver-ecb-twofish-avx)", 2019 2157 .test = alg_test_null, 2020 - .suite = { 2021 - .cipher = { 2022 - .enc = { 2023 - .vecs = NULL, 2024 - .count = 0 2025 - }, 2026 - .dec = { 2027 - .vecs = NULL, 2028 - .count = 0 2029 - } 2030 - } 2031 - } 2032 2158 }, { 2033 2159 .alg = "cryptd(__driver-gcm-aes-aesni)", 2034 2160 .test = alg_test_null, 2035 2161 .fips_allowed = 1, 2036 - .suite = { 2037 - .cipher = { 2038 - .enc = { 2039 - .vecs = NULL, 2040 - .count = 0 2041 - }, 2042 - .dec = { 2043 - .vecs = NULL, 2044 - .count = 0 2045 - } 2046 - } 2047 - } 2048 2162 }, { 2049 2163 .alg = "cryptd(__ghash-pclmulqdqni)", 2050 2164 .test = alg_test_null, 2051 2165 .fips_allowed = 1, 2052 - .suite = { 2053 - .hash = { 2054 - .vecs = NULL, 2055 - .count = 0 2056 - } 2057 - } 2058 2166 }, { 2059 2167 .alg = "ctr(aes)", 2060 2168 .test = alg_test_skcipher, ··· 2036 2336 } 2037 2337 } 2038 2338 }, { 2339 + .alg = "ctr(des)", 2340 + .test = alg_test_skcipher, 2341 + .suite = { 2342 + .cipher = { 2343 + .enc = { 2344 + .vecs = des_ctr_enc_tv_template, 2345 + .count = DES_CTR_ENC_TEST_VECTORS 2346 + }, 2347 + .dec = { 2348 + .vecs = des_ctr_dec_tv_template, 2349 + .count = DES_CTR_DEC_TEST_VECTORS 2350 + } 2351 + } 2352 + } 2353 + }, { 2354 + .alg = "ctr(des3_ede)", 2355 + .test = alg_test_skcipher, 2356 + .suite = { 2357 + .cipher = { 2358 + .enc = { 2359 + .vecs = des3_ede_ctr_enc_tv_template, 2360 + .count = DES3_EDE_CTR_ENC_TEST_VECTORS 2361 + }, 2362 + .dec = { 2363 + .vecs = des3_ede_ctr_dec_tv_template, 2364 + .count = DES3_EDE_CTR_DEC_TEST_VECTORS 2365 + } 2366 + } 2367 + } 2368 + }, { 2039 2369 .alg = "ctr(serpent)", 2040 2370 .test = alg_test_skcipher, 2041 2371 .suite = { ··· 2113 2383 }, { 2114 2384 .alg = "deflate", 2115 2385 .test = alg_test_comp, 2386 + .fips_allowed = 1, 2116 2387 .suite = { 2117 2388 .comp = { 2118 2389 .comp = { ··· 2130 2399 .alg = "ecb(__aes-aesni)", 2131 2400 .test = alg_test_null, 2132 2401 .fips_allowed = 1, 2133 - .suite = { 2134 - .cipher = { 2135 - .enc = { 2136 - .vecs = NULL, 2137 - .count = 0 2138 - }, 2139 - .dec = { 2140 - .vecs = NULL, 2141 - .count = 0 2142 - } 2143 - } 2144 - } 2145 2402 }, { 2146 2403 .alg = "ecb(aes)", 2147 2404 .test = alg_test_skcipher, ··· 2578 2859 }, { 2579 2860 .alg = "lzo", 2580 2861 .test = alg_test_comp, 2862 + .fips_allowed = 1, 2581 2863 .suite = { 2582 2864 .comp = { 2583 2865 .comp = { ··· 2946 3226 }, { 2947 3227 .alg = "zlib", 2948 3228 .test = alg_test_pcomp, 3229 + .fips_allowed = 1, 2949 3230 .suite = { 2950 3231 .pcomp = { 2951 3232 .comp = {
+5726 -150
crypto/testmgr.h
··· 41 41 char *plaintext; 42 42 char *digest; 43 43 unsigned char tap[MAX_TAP]; 44 - unsigned char psize; 44 + unsigned short psize; 45 45 unsigned char np; 46 46 unsigned char ksize; 47 47 }; ··· 1707 1707 } 1708 1708 }; 1709 1709 1710 - #define VMAC_AES_TEST_VECTORS 8 1710 + #define VMAC_AES_TEST_VECTORS 11 1711 1711 static char vmac_string1[128] = {'\x01', '\x01', '\x01', '\x01', 1712 1712 '\x02', '\x03', '\x02', '\x02', 1713 1713 '\x02', '\x04', '\x01', '\x07', ··· 1722 1722 'a', 'b', 'c', 'a', 'b', 'c', 1723 1723 'a', 'b', 'c', 'a', 'b', 'c', 1724 1724 }; 1725 + 1726 + static char vmac_string4[17] = {'b', 'c', 'e', 'f', 1727 + 'i', 'j', 'l', 'm', 1728 + 'o', 'p', 'r', 's', 1729 + 't', 'u', 'w', 'x', 'z'}; 1730 + 1731 + static char vmac_string5[127] = {'r', 'm', 'b', 't', 'c', 1732 + 'o', 'l', 'k', ']', '%', 1733 + '9', '2', '7', '!', 'A'}; 1734 + 1735 + static char vmac_string6[129] = {'p', 't', '*', '7', 'l', 1736 + 'i', '!', '#', 'w', '0', 1737 + 'z', '/', '4', 'A', 'n'}; 1725 1738 1726 1739 static struct hash_testvec aes_vmac128_tv_template[] = { 1727 1740 { ··· 1789 1776 .digest = "\x8b\x32\x8f\xe1\xed\x8f\xfa\xd4", 1790 1777 .psize = 128, 1791 1778 .ksize = 16, 1779 + }, { 1780 + .key = "a09b5cd!f#07K\x00\x00\x00", 1781 + .plaintext = vmac_string4, 1782 + .digest = "\xab\xa5\x0f\xea\x42\x4e\xa1\x5f", 1783 + .psize = sizeof(vmac_string4), 1784 + .ksize = 16, 1785 + }, { 1786 + .key = "a09b5cd!f#07K\x00\x00\x00", 1787 + .plaintext = vmac_string5, 1788 + .digest = "\x25\x31\x98\xbc\x1d\xe8\x67\x60", 1789 + .psize = sizeof(vmac_string5), 1790 + .ksize = 16, 1791 + }, { 1792 + .key = "a09b5cd!f#07K\x00\x00\x00", 1793 + .plaintext = vmac_string6, 1794 + .digest = "\xc4\xae\x9b\x47\x95\x65\xeb\x41", 1795 + .psize = sizeof(vmac_string6), 1796 + .ksize = 16, 1792 1797 }, 1793 1798 }; 1794 1799 ··· 2024 1993 /* 2025 1994 * DES test vectors. 2026 1995 */ 2027 - #define DES_ENC_TEST_VECTORS 10 2028 - #define DES_DEC_TEST_VECTORS 4 2029 - #define DES_CBC_ENC_TEST_VECTORS 5 2030 - #define DES_CBC_DEC_TEST_VECTORS 4 2031 - #define DES3_EDE_ENC_TEST_VECTORS 3 2032 - #define DES3_EDE_DEC_TEST_VECTORS 3 2033 - #define DES3_EDE_CBC_ENC_TEST_VECTORS 1 2034 - #define DES3_EDE_CBC_DEC_TEST_VECTORS 1 1996 + #define DES_ENC_TEST_VECTORS 11 1997 + #define DES_DEC_TEST_VECTORS 5 1998 + #define DES_CBC_ENC_TEST_VECTORS 6 1999 + #define DES_CBC_DEC_TEST_VECTORS 5 2000 + #define DES_CTR_ENC_TEST_VECTORS 2 2001 + #define DES_CTR_DEC_TEST_VECTORS 2 2002 + #define DES3_EDE_ENC_TEST_VECTORS 4 2003 + #define DES3_EDE_DEC_TEST_VECTORS 4 2004 + #define DES3_EDE_CBC_ENC_TEST_VECTORS 2 2005 + #define DES3_EDE_CBC_DEC_TEST_VECTORS 2 2006 + #define DES3_EDE_CTR_ENC_TEST_VECTORS 2 2007 + #define DES3_EDE_CTR_DEC_TEST_VECTORS 2 2035 2008 2036 2009 static struct cipher_testvec des_enc_tv_template[] = { 2037 2010 { /* From Applied Cryptography */ ··· 2138 2103 .rlen = 8, 2139 2104 .np = 8, 2140 2105 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 } 2106 + }, { /* Generated with Crypto++ */ 2107 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55", 2108 + .klen = 8, 2109 + .input = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 2110 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 2111 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 2112 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 2113 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 2114 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 2115 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 2116 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 2117 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 2118 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 2119 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 2120 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 2121 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 2122 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 2123 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 2124 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 2125 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 2126 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 2127 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 2128 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 2129 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 2130 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 2131 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 2132 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 2133 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 2134 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 2135 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 2136 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 2137 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 2138 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 2139 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB", 2140 + .ilen = 248, 2141 + .result = "\x88\xCB\x1F\xAB\x2F\x2A\x49\x57" 2142 + "\x92\xB9\x77\xFF\x2F\x47\x58\xDD" 2143 + "\xD7\x8A\x91\x95\x26\x33\x78\xB2" 2144 + "\x33\xBA\xB2\x3E\x02\xF5\x1F\xEF" 2145 + "\x98\xC5\xA6\xD2\x7D\x79\xEC\xB3" 2146 + "\x45\xF3\x4C\x61\xAC\x6C\xC2\x55" 2147 + "\xE5\xD3\x06\x58\x8A\x42\x3E\xDD" 2148 + "\x3D\x20\x45\xE9\x6F\x0D\x25\xA8" 2149 + "\xA5\xC7\x69\xCE\xD5\x3B\x7B\xC9" 2150 + "\x9E\x65\xE7\xA3\xF2\xE4\x18\x94" 2151 + "\xD2\x81\xE9\x33\x2B\x2D\x49\xC4" 2152 + "\xFE\xDA\x7F\xE2\xF2\x8C\x9C\xDC" 2153 + "\x73\x58\x11\x1F\x81\xD7\x21\x1A" 2154 + "\x80\xD0\x0D\xE8\x45\xD6\xD8\xD5" 2155 + "\x2E\x51\x16\xCA\x09\x89\x54\x62" 2156 + "\xF7\x04\x3D\x75\xB9\xA3\x84\xF4" 2157 + "\x62\xF0\x02\x58\x83\xAF\x30\x87" 2158 + "\x85\x3F\x01\xCD\x8E\x58\x42\xC4" 2159 + "\x41\x73\xE0\x15\x0A\xE6\x2E\x80" 2160 + "\x94\xF8\x5B\x3A\x4E\xDF\x51\xB2" 2161 + "\x9D\xE4\xC4\x9D\xF7\x3F\xF8\x8E" 2162 + "\x37\x22\x4D\x00\x2A\xEF\xC1\x0F" 2163 + "\x14\xA0\x66\xAB\x79\x39\xD0\x8E" 2164 + "\xE9\x95\x61\x74\x12\xED\x07\xD7" 2165 + "\xDD\x95\xDC\x7B\x57\x25\x27\x9C" 2166 + "\x51\x96\x16\xF7\x94\x61\xB8\x87" 2167 + "\xF0\x21\x1B\x32\xFB\x07\x0F\x29" 2168 + "\x56\xBD\x9D\x22\xA2\x9F\xA2\xB9" 2169 + "\x46\x31\x4C\x5E\x2E\x95\x61\xEF" 2170 + "\xE1\x58\x39\x09\xB4\x8B\x40\xAC" 2171 + "\x5F\x62\xC7\x72\xD9\xFC\xCB\x9A", 2172 + .rlen = 248, 2173 + .also_non_np = 1, 2174 + .np = 2, 2175 + .tap = { 248 - 8, 8 }, 2141 2176 }, 2142 2177 }; 2143 2178 ··· 2248 2143 .rlen = 16, 2249 2144 .np = 3, 2250 2145 .tap = { 3, 12, 1 } 2146 + }, { /* Generated with Crypto++ */ 2147 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55", 2148 + .klen = 8, 2149 + .input = "\x88\xCB\x1F\xAB\x2F\x2A\x49\x57" 2150 + "\x92\xB9\x77\xFF\x2F\x47\x58\xDD" 2151 + "\xD7\x8A\x91\x95\x26\x33\x78\xB2" 2152 + "\x33\xBA\xB2\x3E\x02\xF5\x1F\xEF" 2153 + "\x98\xC5\xA6\xD2\x7D\x79\xEC\xB3" 2154 + "\x45\xF3\x4C\x61\xAC\x6C\xC2\x55" 2155 + "\xE5\xD3\x06\x58\x8A\x42\x3E\xDD" 2156 + "\x3D\x20\x45\xE9\x6F\x0D\x25\xA8" 2157 + "\xA5\xC7\x69\xCE\xD5\x3B\x7B\xC9" 2158 + "\x9E\x65\xE7\xA3\xF2\xE4\x18\x94" 2159 + "\xD2\x81\xE9\x33\x2B\x2D\x49\xC4" 2160 + "\xFE\xDA\x7F\xE2\xF2\x8C\x9C\xDC" 2161 + "\x73\x58\x11\x1F\x81\xD7\x21\x1A" 2162 + "\x80\xD0\x0D\xE8\x45\xD6\xD8\xD5" 2163 + "\x2E\x51\x16\xCA\x09\x89\x54\x62" 2164 + "\xF7\x04\x3D\x75\xB9\xA3\x84\xF4" 2165 + "\x62\xF0\x02\x58\x83\xAF\x30\x87" 2166 + "\x85\x3F\x01\xCD\x8E\x58\x42\xC4" 2167 + "\x41\x73\xE0\x15\x0A\xE6\x2E\x80" 2168 + "\x94\xF8\x5B\x3A\x4E\xDF\x51\xB2" 2169 + "\x9D\xE4\xC4\x9D\xF7\x3F\xF8\x8E" 2170 + "\x37\x22\x4D\x00\x2A\xEF\xC1\x0F" 2171 + "\x14\xA0\x66\xAB\x79\x39\xD0\x8E" 2172 + "\xE9\x95\x61\x74\x12\xED\x07\xD7" 2173 + "\xDD\x95\xDC\x7B\x57\x25\x27\x9C" 2174 + "\x51\x96\x16\xF7\x94\x61\xB8\x87" 2175 + "\xF0\x21\x1B\x32\xFB\x07\x0F\x29" 2176 + "\x56\xBD\x9D\x22\xA2\x9F\xA2\xB9" 2177 + "\x46\x31\x4C\x5E\x2E\x95\x61\xEF" 2178 + "\xE1\x58\x39\x09\xB4\x8B\x40\xAC" 2179 + "\x5F\x62\xC7\x72\xD9\xFC\xCB\x9A", 2180 + .ilen = 248, 2181 + .result = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 2182 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 2183 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 2184 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 2185 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 2186 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 2187 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 2188 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 2189 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 2190 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 2191 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 2192 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 2193 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 2194 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 2195 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 2196 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 2197 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 2198 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 2199 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 2200 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 2201 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 2202 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 2203 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 2204 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 2205 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 2206 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 2207 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 2208 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 2209 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 2210 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 2211 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB", 2212 + .rlen = 248, 2213 + .also_non_np = 1, 2214 + .np = 2, 2215 + .tap = { 248 - 8, 8 }, 2251 2216 }, 2252 2217 }; 2253 2218 ··· 2373 2198 .rlen = 24, 2374 2199 .np = 2, 2375 2200 .tap = { 13, 11 } 2201 + }, { /* Generated with Crypto++ */ 2202 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55", 2203 + .klen = 8, 2204 + .iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47", 2205 + .input = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 2206 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 2207 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 2208 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 2209 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 2210 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 2211 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 2212 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 2213 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 2214 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 2215 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 2216 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 2217 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 2218 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 2219 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 2220 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 2221 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 2222 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 2223 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 2224 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 2225 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 2226 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 2227 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 2228 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 2229 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 2230 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 2231 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 2232 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 2233 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 2234 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 2235 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB", 2236 + .ilen = 248, 2237 + .result = "\x71\xCC\x56\x1C\x87\x2C\x43\x20" 2238 + "\x1C\x20\x13\x09\xF9\x2B\x40\x47" 2239 + "\x99\x10\xD1\x1B\x65\x33\x33\xBA" 2240 + "\x88\x0D\xA2\xD1\x86\xFF\x4D\xF4" 2241 + "\x5A\x0C\x12\x96\x32\x57\xAA\x26" 2242 + "\xA7\xF4\x32\x8D\xBC\x10\x31\x9E" 2243 + "\x81\x72\x74\xDE\x30\x19\x69\x49" 2244 + "\x54\x9C\xC3\xEB\x0B\x97\xDD\xD1" 2245 + "\xE8\x6D\x0D\x05\x83\xA5\x12\x08" 2246 + "\x47\xF8\x88\x03\x86\x51\x3C\xEF" 2247 + "\xE7\x11\x73\x4D\x44\x2B\xE2\x16" 2248 + "\xE8\xA5\x06\x50\x66\x70\x0E\x14" 2249 + "\xBA\x21\x3B\xD5\x23\x5B\xA7\x8F" 2250 + "\x56\xB6\xA7\x44\xDB\x86\xAB\x69" 2251 + "\x33\x3C\xBE\x64\xC4\x22\xD3\xFE" 2252 + "\x49\x90\x88\x6A\x09\x8F\x76\x59" 2253 + "\xCB\xB7\xA0\x2D\x79\x75\x92\x8A" 2254 + "\x82\x1D\xC2\xFE\x09\x1F\x78\x6B" 2255 + "\x2F\xD6\xA4\x87\x1E\xC4\x53\x63" 2256 + "\x80\x02\x61\x2F\xE3\x46\xB6\xB5" 2257 + "\xAA\x95\xF4\xEE\xA7\x64\x2B\x4F" 2258 + "\x20\xCF\xD2\x47\x4E\x39\x65\xB3" 2259 + "\x11\x87\xA2\x6C\x49\x7E\x36\xC7" 2260 + "\x62\x8B\x48\x0D\x6A\x64\x00\xBD" 2261 + "\x71\x91\x8C\xE9\x70\x19\x01\x4F" 2262 + "\x4E\x68\x23\xBA\xDA\x24\x2E\x45" 2263 + "\x02\x14\x33\x21\xAE\x58\x4B\xCF" 2264 + "\x3B\x4B\xE8\xF8\xF6\x4F\x34\x93" 2265 + "\xD7\x07\x8A\xD7\x18\x92\x36\x8C" 2266 + "\x82\xA9\xBD\x6A\x31\x91\x39\x11" 2267 + "\xC6\x4A\xF3\x55\xC7\x29\x2E\x63", 2268 + .rlen = 248, 2269 + .also_non_np = 1, 2270 + .np = 2, 2271 + .tap = { 248 - 8, 8 }, 2376 2272 }, 2377 2273 }; 2378 2274 ··· 2482 2236 .rlen = 8, 2483 2237 .np = 2, 2484 2238 .tap = { 4, 4 } 2239 + }, { /* Generated with Crypto++ */ 2240 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55", 2241 + .klen = 8, 2242 + .iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47", 2243 + .input = "\x71\xCC\x56\x1C\x87\x2C\x43\x20" 2244 + "\x1C\x20\x13\x09\xF9\x2B\x40\x47" 2245 + "\x99\x10\xD1\x1B\x65\x33\x33\xBA" 2246 + "\x88\x0D\xA2\xD1\x86\xFF\x4D\xF4" 2247 + "\x5A\x0C\x12\x96\x32\x57\xAA\x26" 2248 + "\xA7\xF4\x32\x8D\xBC\x10\x31\x9E" 2249 + "\x81\x72\x74\xDE\x30\x19\x69\x49" 2250 + "\x54\x9C\xC3\xEB\x0B\x97\xDD\xD1" 2251 + "\xE8\x6D\x0D\x05\x83\xA5\x12\x08" 2252 + "\x47\xF8\x88\x03\x86\x51\x3C\xEF" 2253 + "\xE7\x11\x73\x4D\x44\x2B\xE2\x16" 2254 + "\xE8\xA5\x06\x50\x66\x70\x0E\x14" 2255 + "\xBA\x21\x3B\xD5\x23\x5B\xA7\x8F" 2256 + "\x56\xB6\xA7\x44\xDB\x86\xAB\x69" 2257 + "\x33\x3C\xBE\x64\xC4\x22\xD3\xFE" 2258 + "\x49\x90\x88\x6A\x09\x8F\x76\x59" 2259 + "\xCB\xB7\xA0\x2D\x79\x75\x92\x8A" 2260 + "\x82\x1D\xC2\xFE\x09\x1F\x78\x6B" 2261 + "\x2F\xD6\xA4\x87\x1E\xC4\x53\x63" 2262 + "\x80\x02\x61\x2F\xE3\x46\xB6\xB5" 2263 + "\xAA\x95\xF4\xEE\xA7\x64\x2B\x4F" 2264 + "\x20\xCF\xD2\x47\x4E\x39\x65\xB3" 2265 + "\x11\x87\xA2\x6C\x49\x7E\x36\xC7" 2266 + "\x62\x8B\x48\x0D\x6A\x64\x00\xBD" 2267 + "\x71\x91\x8C\xE9\x70\x19\x01\x4F" 2268 + "\x4E\x68\x23\xBA\xDA\x24\x2E\x45" 2269 + "\x02\x14\x33\x21\xAE\x58\x4B\xCF" 2270 + "\x3B\x4B\xE8\xF8\xF6\x4F\x34\x93" 2271 + "\xD7\x07\x8A\xD7\x18\x92\x36\x8C" 2272 + "\x82\xA9\xBD\x6A\x31\x91\x39\x11" 2273 + "\xC6\x4A\xF3\x55\xC7\x29\x2E\x63", 2274 + .ilen = 248, 2275 + .result = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 2276 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 2277 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 2278 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 2279 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 2280 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 2281 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 2282 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 2283 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 2284 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 2285 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 2286 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 2287 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 2288 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 2289 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 2290 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 2291 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 2292 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 2293 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 2294 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 2295 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 2296 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 2297 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 2298 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 2299 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 2300 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 2301 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 2302 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 2303 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 2304 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 2305 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB", 2306 + .rlen = 248, 2307 + .also_non_np = 1, 2308 + .np = 2, 2309 + .tap = { 248 - 8, 8 }, 2310 + }, 2311 + }; 2312 + 2313 + static struct cipher_testvec des_ctr_enc_tv_template[] = { 2314 + { /* Generated with Crypto++ */ 2315 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55", 2316 + .klen = 8, 2317 + .iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD", 2318 + .input = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 2319 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 2320 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 2321 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 2322 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 2323 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 2324 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 2325 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 2326 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 2327 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 2328 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 2329 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 2330 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 2331 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 2332 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 2333 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 2334 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 2335 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 2336 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 2337 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 2338 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 2339 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 2340 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 2341 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 2342 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 2343 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 2344 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 2345 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 2346 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 2347 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 2348 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB", 2349 + .ilen = 248, 2350 + .result = "\x2F\x96\x06\x0F\x50\xC9\x68\x03" 2351 + "\x0F\x31\xD4\x64\xA5\x29\x77\x35" 2352 + "\xBC\x7A\x9F\x19\xE7\x0D\x33\x3E" 2353 + "\x12\x0B\x8C\xAE\x48\xAE\xD9\x02" 2354 + "\x0A\xD4\xB0\xD6\x37\xB2\x65\x1C" 2355 + "\x4B\x65\xEB\x24\xB5\x8E\xAD\x47" 2356 + "\x0D\xDA\x79\x77\xA0\x29\xA0\x2B" 2357 + "\xC8\x0F\x85\xDC\x03\x13\xA9\x04" 2358 + "\x19\x40\xBE\xBE\x5C\x49\x4A\x69" 2359 + "\xED\xE8\xE1\x9E\x14\x43\x74\xDE" 2360 + "\xEC\x6E\x11\x3F\x36\xEF\x7B\xFB" 2361 + "\xBE\x4C\x91\x43\x22\x65\x72\x48" 2362 + "\xE2\x12\xED\x88\xAC\xA7\xC9\x91" 2363 + "\x14\xA2\x36\x1C\x29\xFF\xC8\x4F" 2364 + "\x72\x5C\x4B\xB0\x1E\x93\xC2\xFA" 2365 + "\x9D\x53\x86\xA0\xAE\xC6\xB7\x3C" 2366 + "\x59\x0C\xD0\x8F\xA6\xD8\xA4\x31" 2367 + "\xB7\x30\x1C\x21\x38\xFB\x68\x8C" 2368 + "\x2E\xF5\x6E\x73\xC3\x16\x5F\x12" 2369 + "\x0C\x33\xB9\x1E\x7B\x70\xDE\x86" 2370 + "\x32\xB3\xC1\x16\xAB\xD9\x49\x0B" 2371 + "\x96\x28\x72\x6B\xF3\x30\xA9\xEB" 2372 + "\x69\xE2\x1E\x58\x46\xA2\x8E\xC7" 2373 + "\xC0\xEF\x07\xB7\x77\x2C\x00\x05" 2374 + "\x46\xBD\xFE\x53\x81\x8B\xA4\x03" 2375 + "\x20\x0F\xDB\x78\x0B\x1F\x53\x04" 2376 + "\x4C\x60\x4C\xC3\x2A\x86\x86\x7E" 2377 + "\x13\xD2\x26\xED\x5D\x3E\x9C\xF2" 2378 + "\x5C\xC4\x15\xC9\x9A\x21\xC5\xCD" 2379 + "\x19\x7F\x99\x19\x53\xCE\x1D\x14" 2380 + "\x69\x74\xA1\x06\x46\x0F\x4E\x75", 2381 + .rlen = 248, 2382 + .also_non_np = 1, 2383 + .np = 2, 2384 + .tap = { 248 - 8, 8 }, 2385 + }, { /* Generated with Crypto++ */ 2386 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55", 2387 + .klen = 8, 2388 + .iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47", 2389 + .input = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 2390 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 2391 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 2392 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 2393 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 2394 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 2395 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 2396 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 2397 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 2398 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 2399 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 2400 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 2401 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 2402 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 2403 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 2404 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 2405 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 2406 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 2407 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 2408 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 2409 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 2410 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 2411 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 2412 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 2413 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 2414 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 2415 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 2416 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 2417 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 2418 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 2419 + "\xC6\x2F\xBB\x24\x8D\x19\x82", 2420 + .ilen = 247, 2421 + .result = "\x62\xE5\xF4\xDC\x99\xE7\x89\xE3" 2422 + "\xF4\x10\xCC\x21\x99\xEB\xDC\x15" 2423 + "\x19\x13\x93\x27\x9D\xB6\x6F\x45" 2424 + "\x17\x55\x61\x72\xC8\xD3\x7F\xA5" 2425 + "\x32\xD0\xD3\x02\x15\xA4\x05\x23" 2426 + "\x9C\x23\x61\x60\x77\x7B\x6C\x95" 2427 + "\x26\x49\x42\x2E\xF3\xC1\x8C\x6D" 2428 + "\xC8\x47\xD5\x94\xE7\x53\xC8\x23" 2429 + "\x1B\xA5\x0B\xCB\x12\xD3\x7A\x12" 2430 + "\xA4\x42\x15\x34\xF7\x5F\xDC\x58" 2431 + "\x5B\x58\x4C\xAD\xD1\x33\x8E\xE6" 2432 + "\xE5\xA0\xDA\x4D\x94\x3D\x63\xA8" 2433 + "\x02\x82\xBB\x16\xB8\xDC\xB5\x58" 2434 + "\xC3\x2D\x79\xE4\x25\x79\x43\xF9" 2435 + "\x6D\xD3\xCA\xC0\xE8\x12\xD4\x7E" 2436 + "\x04\x25\x79\xFD\x27\xFB\xC4\xEA" 2437 + "\x32\x94\x48\x92\xF3\x68\x1A\x7F" 2438 + "\x36\x33\x43\x79\xF7\xCA\xC2\x38" 2439 + "\xC0\x68\xD4\x53\xA9\xCC\x43\x0C" 2440 + "\x40\x57\x3E\xED\x00\x9F\x22\x6E" 2441 + "\x80\x99\x0B\xCC\x40\x63\x46\x8A" 2442 + "\xE8\xC4\x9B\x6D\x7A\x08\x6E\xA9" 2443 + "\x6F\x84\xBC\xB3\xF4\x95\x0B\x2D" 2444 + "\x6A\xBA\x37\x50\xC3\xCF\x9F\x7C" 2445 + "\x59\x5E\xDE\x0B\x30\xFA\x34\x8A" 2446 + "\xF8\xD1\xA2\xF8\x4E\xBD\x5D\x5E" 2447 + "\x7D\x71\x99\xE0\xF6\xE5\x7C\xE0" 2448 + "\x6D\xEE\x82\x89\x92\xD4\xF5\xD7" 2449 + "\xDF\x85\x2D\xE1\xB2\xD6\xAB\x94" 2450 + "\xA5\xA6\xE7\xB0\x51\x36\x52\x37" 2451 + "\x91\x45\x05\x3E\x58\xBF\x32", 2452 + .rlen = 247, 2453 + .also_non_np = 1, 2454 + .np = 2, 2455 + .tap = { 247 - 8, 8 }, 2456 + }, 2457 + }; 2458 + 2459 + static struct cipher_testvec des_ctr_dec_tv_template[] = { 2460 + { /* Generated with Crypto++ */ 2461 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55", 2462 + .klen = 8, 2463 + .iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD", 2464 + .input = "\x2F\x96\x06\x0F\x50\xC9\x68\x03" 2465 + "\x0F\x31\xD4\x64\xA5\x29\x77\x35" 2466 + "\xBC\x7A\x9F\x19\xE7\x0D\x33\x3E" 2467 + "\x12\x0B\x8C\xAE\x48\xAE\xD9\x02" 2468 + "\x0A\xD4\xB0\xD6\x37\xB2\x65\x1C" 2469 + "\x4B\x65\xEB\x24\xB5\x8E\xAD\x47" 2470 + "\x0D\xDA\x79\x77\xA0\x29\xA0\x2B" 2471 + "\xC8\x0F\x85\xDC\x03\x13\xA9\x04" 2472 + "\x19\x40\xBE\xBE\x5C\x49\x4A\x69" 2473 + "\xED\xE8\xE1\x9E\x14\x43\x74\xDE" 2474 + "\xEC\x6E\x11\x3F\x36\xEF\x7B\xFB" 2475 + "\xBE\x4C\x91\x43\x22\x65\x72\x48" 2476 + "\xE2\x12\xED\x88\xAC\xA7\xC9\x91" 2477 + "\x14\xA2\x36\x1C\x29\xFF\xC8\x4F" 2478 + "\x72\x5C\x4B\xB0\x1E\x93\xC2\xFA" 2479 + "\x9D\x53\x86\xA0\xAE\xC6\xB7\x3C" 2480 + "\x59\x0C\xD0\x8F\xA6\xD8\xA4\x31" 2481 + "\xB7\x30\x1C\x21\x38\xFB\x68\x8C" 2482 + "\x2E\xF5\x6E\x73\xC3\x16\x5F\x12" 2483 + "\x0C\x33\xB9\x1E\x7B\x70\xDE\x86" 2484 + "\x32\xB3\xC1\x16\xAB\xD9\x49\x0B" 2485 + "\x96\x28\x72\x6B\xF3\x30\xA9\xEB" 2486 + "\x69\xE2\x1E\x58\x46\xA2\x8E\xC7" 2487 + "\xC0\xEF\x07\xB7\x77\x2C\x00\x05" 2488 + "\x46\xBD\xFE\x53\x81\x8B\xA4\x03" 2489 + "\x20\x0F\xDB\x78\x0B\x1F\x53\x04" 2490 + "\x4C\x60\x4C\xC3\x2A\x86\x86\x7E" 2491 + "\x13\xD2\x26\xED\x5D\x3E\x9C\xF2" 2492 + "\x5C\xC4\x15\xC9\x9A\x21\xC5\xCD" 2493 + "\x19\x7F\x99\x19\x53\xCE\x1D\x14" 2494 + "\x69\x74\xA1\x06\x46\x0F\x4E\x75", 2495 + .ilen = 248, 2496 + .result = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 2497 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 2498 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 2499 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 2500 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 2501 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 2502 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 2503 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 2504 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 2505 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 2506 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 2507 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 2508 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 2509 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 2510 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 2511 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 2512 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 2513 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 2514 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 2515 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 2516 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 2517 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 2518 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 2519 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 2520 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 2521 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 2522 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 2523 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 2524 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 2525 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 2526 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB", 2527 + .rlen = 248, 2528 + .also_non_np = 1, 2529 + .np = 2, 2530 + .tap = { 248 - 8, 8 }, 2531 + }, { /* Generated with Crypto++ */ 2532 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55", 2533 + .klen = 8, 2534 + .iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47", 2535 + .input = "\x62\xE5\xF4\xDC\x99\xE7\x89\xE3" 2536 + "\xF4\x10\xCC\x21\x99\xEB\xDC\x15" 2537 + "\x19\x13\x93\x27\x9D\xB6\x6F\x45" 2538 + "\x17\x55\x61\x72\xC8\xD3\x7F\xA5" 2539 + "\x32\xD0\xD3\x02\x15\xA4\x05\x23" 2540 + "\x9C\x23\x61\x60\x77\x7B\x6C\x95" 2541 + "\x26\x49\x42\x2E\xF3\xC1\x8C\x6D" 2542 + "\xC8\x47\xD5\x94\xE7\x53\xC8\x23" 2543 + "\x1B\xA5\x0B\xCB\x12\xD3\x7A\x12" 2544 + "\xA4\x42\x15\x34\xF7\x5F\xDC\x58" 2545 + "\x5B\x58\x4C\xAD\xD1\x33\x8E\xE6" 2546 + "\xE5\xA0\xDA\x4D\x94\x3D\x63\xA8" 2547 + "\x02\x82\xBB\x16\xB8\xDC\xB5\x58" 2548 + "\xC3\x2D\x79\xE4\x25\x79\x43\xF9" 2549 + "\x6D\xD3\xCA\xC0\xE8\x12\xD4\x7E" 2550 + "\x04\x25\x79\xFD\x27\xFB\xC4\xEA" 2551 + "\x32\x94\x48\x92\xF3\x68\x1A\x7F" 2552 + "\x36\x33\x43\x79\xF7\xCA\xC2\x38" 2553 + "\xC0\x68\xD4\x53\xA9\xCC\x43\x0C" 2554 + "\x40\x57\x3E\xED\x00\x9F\x22\x6E" 2555 + "\x80\x99\x0B\xCC\x40\x63\x46\x8A" 2556 + "\xE8\xC4\x9B\x6D\x7A\x08\x6E\xA9" 2557 + "\x6F\x84\xBC\xB3\xF4\x95\x0B\x2D" 2558 + "\x6A\xBA\x37\x50\xC3\xCF\x9F\x7C" 2559 + "\x59\x5E\xDE\x0B\x30\xFA\x34\x8A" 2560 + "\xF8\xD1\xA2\xF8\x4E\xBD\x5D\x5E" 2561 + "\x7D\x71\x99\xE0\xF6\xE5\x7C\xE0" 2562 + "\x6D\xEE\x82\x89\x92\xD4\xF5\xD7" 2563 + "\xDF\x85\x2D\xE1\xB2\xD6\xAB\x94" 2564 + "\xA5\xA6\xE7\xB0\x51\x36\x52\x37" 2565 + "\x91\x45\x05\x3E\x58\xBF\x32", 2566 + .ilen = 247, 2567 + .result = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 2568 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 2569 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 2570 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 2571 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 2572 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 2573 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 2574 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 2575 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 2576 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 2577 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 2578 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 2579 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 2580 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 2581 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 2582 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 2583 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 2584 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 2585 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 2586 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 2587 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 2588 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 2589 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 2590 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 2591 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 2592 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 2593 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 2594 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 2595 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 2596 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 2597 + "\xC6\x2F\xBB\x24\x8D\x19\x82", 2598 + .rlen = 247, 2599 + .also_non_np = 1, 2600 + .np = 2, 2601 + .tap = { 247 - 8, 8 }, 2485 2602 }, 2486 2603 }; 2487 2604 ··· 2876 2267 .ilen = 8, 2877 2268 .result = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b", 2878 2269 .rlen = 8, 2270 + }, { /* Generated with Crypto++ */ 2271 + .key = "\xF3\x9C\xD6\xF3\x9C\xB9\x5A\x67" 2272 + "\x00\x5A\x67\x00\x2D\xCE\xEB\x2D" 2273 + "\xCE\xEB\xB4\x51\x72\xB4\x51\x72", 2274 + .klen = 24, 2275 + .input = "\x05\xEC\x77\xFB\x42\xD5\x59\x20" 2276 + "\x8B\x12\x86\x69\xF0\x5B\xCF\x56" 2277 + "\x39\xAD\x34\x9F\x66\xEA\x7D\xC4" 2278 + "\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A" 2279 + "\xFE\x41\x28\x5C\x27\x8E\x11\x85" 2280 + "\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B" 2281 + "\x92\x65\xE9\x70\xDB\x4F\xD6\xB9" 2282 + "\x00\xB4\x1F\xE6\x49\xFD\x44\x2F" 2283 + "\x53\x3A\x8D\x14\x98\x63\xCA\x5D" 2284 + "\xC1\xA8\x33\xA7\x0E\x91\x78\xEC" 2285 + "\x77\xDE\x42\xD5\xBC\x07\x8B\x12" 2286 + "\xE5\x4C\xF0\x5B\x22\x56\x39\x80" 2287 + "\x6B\x9F\x66\xC9\x50\xC4\xAF\x36" 2288 + "\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41" 2289 + "\x28\xB3\x1A\x8E\x11\xF8\x43\xF7" 2290 + "\x5E\x21\x55\x3C\x87\x6E\x92\x65" 2291 + "\xCC\x57\xDB\xA2\x35\xB9\x00\xEB" 2292 + "\x72\xE6\x49\xD0\x44\x2F\xB6\x19" 2293 + "\x8D\x14\xFF\x46\xCA\x5D\x24\xA8" 2294 + "\x33\x9A\x6D\x91\x78\xC3\x77\xDE" 2295 + "\xA1\x08\xBC\x07\xEE\x71\xE5\x4C" 2296 + "\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2" 2297 + "\x45\xC9\x50\x3B\xAF\x36\x99\x60" 2298 + "\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3" 2299 + "\x1A\xED\x74\xF8\x43\x2A\x5E\x21" 2300 + "\x88\x13\x87\x6E\xF1\x58\xCC\x57" 2301 + "\x3E\xA2\x35\x9C\x67\xEB\x72\xC5" 2302 + "\x49\xD0\xBB\x02\xB6\x19\xE0\x4B" 2303 + "\xFF\x46\x29\x5D\x24\x8F\x16\x9A" 2304 + "\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08" 2305 + "\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE" 2306 + "\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C" 2307 + "\x50\x3B\x82\x15\x99\x60\xCB\x52" 2308 + "\xC6\xA9\x30\xA4\x0F\x96\x79\xED" 2309 + "\x74\xDF\x43\x2A\xBD\x04\x88\x13" 2310 + "\xFA\x4D\xF1\x58\x23\x57\x3E\x81" 2311 + "\x68\x9C\x67\xCE\x51\xC5\xAC\x37" 2312 + "\xBB\x02\x95\x7C\xE0\x4B\xD2\x46" 2313 + "\x29\xB0\x1B\x8F\x16\xF9\x40\xF4" 2314 + "\x5F\x26\xAA\x3D\x84\x6F\x93\x7A" 2315 + "\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8" 2316 + "\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E" 2317 + "\x82\x15\xFC\x47\xCB\x52\x25\xA9" 2318 + "\x30\x9B\x62\x96\x79\xC0\x74\xDF" 2319 + "\xA6\x09\xBD\x04\xEF\x76\xFA\x4D" 2320 + "\xD4\x58\x23\x8A\x1D\x81\x68\xF3" 2321 + "\x5A\xCE\x51\x38\xAC\x37\x9E\x61" 2322 + "\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0" 2323 + "\x1B\xE2\x75\xF9\x40\x2B\x5F\x26" 2324 + "\x89\x10\x84\x6F\xF6\x59\xCD\x54" 2325 + "\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA" 2326 + "\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48" 2327 + "\xFC\x47\x2E\x52\x25\x8C\x17\x9B" 2328 + "\x62\xF5\x5C\xC0\xAB\x32\xA6\x09" 2329 + "\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF" 2330 + "\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D" 2331 + "\x51\x38\x83\x6A\x9E\x61\xC8\x53" 2332 + "\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2" 2333 + "\x75\xDC\x40\x2B\xB2\x05\x89\x10" 2334 + "\xFB\x42\xF6\x59\x20\x54\x3F\x86" 2335 + "\x69\x9D\x64\xCF\x56\xDA\xAD\x34" 2336 + "\xB8\x03\xEA\x7D\xE1\x48\xD3\x47", 2337 + .ilen = 496, 2338 + .result = "\x4E\x9A\x40\x3D\x61\x7D\x17\xFA" 2339 + "\x16\x86\x88\x0B\xD8\xAE\xF8\xE4" 2340 + "\x81\x01\x04\x00\x76\xFA\xED\xD3" 2341 + "\x44\x7E\x21\x9D\xF0\xFB\x2B\x64" 2342 + "\xCA\x4E\x90\xE0\xC0\x63\x28\x92" 2343 + "\xF3\x1F\xA4\x53\x2C\x77\xCC\x77" 2344 + "\x69\x56\xD0\x19\xAD\x00\x2D\x97" 2345 + "\xBC\xDE\x49\x6A\x82\xBC\x16\xE2" 2346 + "\x2F\x3E\x72\xEE\xD1\xCE\xFC\x1B" 2347 + "\xEA\x32\x56\xE4\x0B\xAF\x27\x36" 2348 + "\xAF\x08\xB9\x61\xB7\x48\x23\x27" 2349 + "\xEE\x4D\xC8\x79\x56\x06\xEB\xC7" 2350 + "\x5B\xCA\x0A\xC6\x5E\x5C\xCB\xB6" 2351 + "\x9D\xDA\x04\x59\xE2\x09\x48\x7E" 2352 + "\x6B\x37\xC6\xFE\x92\xA9\x1E\x6E" 2353 + "\x0D\x19\xFA\x33\x0F\xEE\x36\x68" 2354 + "\x11\xBB\xF9\x5A\x73\xAB\x3A\xEA" 2355 + "\xAC\x28\xD8\xD5\x27\xE8\x6B\x16" 2356 + "\x45\x86\x50\x01\x70\x35\x99\x92" 2357 + "\xDF\x0C\x07\x88\x8B\x7F\x9E\x4B" 2358 + "\xD2\x04\x84\x90\xC4\x27\xDF\x0A" 2359 + "\x49\xA8\xA7\x1A\x6D\x78\x16\xCA" 2360 + "\xB3\x18\x5C\xC3\x93\x63\x5A\x68" 2361 + "\x77\x02\xBA\xED\x62\x71\xB1\xD9" 2362 + "\x5E\xE5\x6F\x1A\xCC\x1D\xBE\x2E" 2363 + "\x11\xF3\xA6\x97\xCA\x8E\xBF\xB4" 2364 + "\x56\xA1\x36\x6B\xB1\x0A\x3E\x70" 2365 + "\xEA\xD7\xCD\x72\x7B\x79\xC8\xAD" 2366 + "\x6B\xFE\xFB\xBA\x64\xAE\x19\xC1" 2367 + "\x82\xCF\x8A\xA1\x50\x17\x7F\xB2" 2368 + "\x6F\x7B\x0F\x52\xC5\x3E\x4A\x52" 2369 + "\x3F\xD9\x3F\x01\xA6\x41\x1A\xB3" 2370 + "\xB3\x7A\x0E\x8E\x75\xB2\xB1\x5F" 2371 + "\xDB\xEA\x84\x13\x26\x6C\x85\x4E" 2372 + "\xAE\x6B\xDC\xE7\xE7\xAD\xB0\x06" 2373 + "\x5C\xBA\x92\xD0\x30\xBB\x8D\xD2" 2374 + "\xAE\x4C\x70\x85\xA0\x07\xE3\x2C" 2375 + "\xD1\x27\x9C\xCF\xDB\x13\xB7\xE5" 2376 + "\xF9\x6A\x02\xD0\x39\x9D\xB6\xE7" 2377 + "\xD1\x17\x25\x08\xF9\xA9\xA6\x67" 2378 + "\x38\x80\xD1\x22\xAB\x1A\xD7\x26" 2379 + "\xAD\xCA\x19\x1B\xFA\x18\xA7\x57" 2380 + "\x31\xEC\xC9\xED\xDB\x79\xC0\x48" 2381 + "\xAC\x31\x9F\x03\x8B\x62\x5B\x7E" 2382 + "\x0E\xA6\xD0\x64\xEE\xEA\x00\xFC" 2383 + "\x58\xC8\xDE\x51\x4E\x17\x15\x11" 2384 + "\x66\x58\xB6\x90\xDC\xDF\xA1\x49" 2385 + "\xCA\x79\xE9\x31\x31\x42\xDC\x56" 2386 + "\x0B\xCD\xB6\x0D\xC7\x64\xF7\x19" 2387 + "\xD9\x42\x05\x7F\xBC\x2F\xFC\x90" 2388 + "\xAE\x29\x86\xAA\x43\x7A\x4F\x6B" 2389 + "\xCE\xEA\xBC\x31\x8D\x65\x9D\x46" 2390 + "\xEA\x77\xB4\xF9\x58\xEA\x5D\x84" 2391 + "\xE4\xDC\x14\xBB\xBD\x15\x0E\xDA" 2392 + "\xD8\xE4\xA4\x5D\x61\xF9\x58\x0F" 2393 + "\xE4\x82\x77\xCE\x87\xC0\x09\xF0" 2394 + "\xD6\x10\x9E\x34\xE1\x0C\x67\x55" 2395 + "\x7B\x6D\xD5\x51\x4B\x00\xEE\xBA" 2396 + "\xF2\x7B\xBE\x75\x07\x42\x9D\x99" 2397 + "\x12\xE1\x71\x4A\xF9\x2A\xF5\xF6" 2398 + "\x93\x03\xD7\x51\x09\xFA\xBE\x68" 2399 + "\xD8\x45\xFF\x33\xBA\xBB\x2B\x63", 2400 + .rlen = 496, 2401 + .also_non_np = 1, 2402 + .np = 2, 2403 + .tap = { 496 - 16, 16 }, 2879 2404 }, 2880 2405 }; 2881 2406 ··· 3041 2298 .ilen = 8, 3042 2299 .result = "\x00\x00\x00\x00\x00\x00\x00\x00", 3043 2300 .rlen = 8, 2301 + }, { /* Generated with Crypto++ */ 2302 + .key = "\xF3\x9C\xD6\xF3\x9C\xB9\x5A\x67" 2303 + "\x00\x5A\x67\x00\x2D\xCE\xEB\x2D" 2304 + "\xCE\xEB\xB4\x51\x72\xB4\x51\x72", 2305 + .klen = 24, 2306 + .input = "\x4E\x9A\x40\x3D\x61\x7D\x17\xFA" 2307 + "\x16\x86\x88\x0B\xD8\xAE\xF8\xE4" 2308 + "\x81\x01\x04\x00\x76\xFA\xED\xD3" 2309 + "\x44\x7E\x21\x9D\xF0\xFB\x2B\x64" 2310 + "\xCA\x4E\x90\xE0\xC0\x63\x28\x92" 2311 + "\xF3\x1F\xA4\x53\x2C\x77\xCC\x77" 2312 + "\x69\x56\xD0\x19\xAD\x00\x2D\x97" 2313 + "\xBC\xDE\x49\x6A\x82\xBC\x16\xE2" 2314 + "\x2F\x3E\x72\xEE\xD1\xCE\xFC\x1B" 2315 + "\xEA\x32\x56\xE4\x0B\xAF\x27\x36" 2316 + "\xAF\x08\xB9\x61\xB7\x48\x23\x27" 2317 + "\xEE\x4D\xC8\x79\x56\x06\xEB\xC7" 2318 + "\x5B\xCA\x0A\xC6\x5E\x5C\xCB\xB6" 2319 + "\x9D\xDA\x04\x59\xE2\x09\x48\x7E" 2320 + "\x6B\x37\xC6\xFE\x92\xA9\x1E\x6E" 2321 + "\x0D\x19\xFA\x33\x0F\xEE\x36\x68" 2322 + "\x11\xBB\xF9\x5A\x73\xAB\x3A\xEA" 2323 + "\xAC\x28\xD8\xD5\x27\xE8\x6B\x16" 2324 + "\x45\x86\x50\x01\x70\x35\x99\x92" 2325 + "\xDF\x0C\x07\x88\x8B\x7F\x9E\x4B" 2326 + "\xD2\x04\x84\x90\xC4\x27\xDF\x0A" 2327 + "\x49\xA8\xA7\x1A\x6D\x78\x16\xCA" 2328 + "\xB3\x18\x5C\xC3\x93\x63\x5A\x68" 2329 + "\x77\x02\xBA\xED\x62\x71\xB1\xD9" 2330 + "\x5E\xE5\x6F\x1A\xCC\x1D\xBE\x2E" 2331 + "\x11\xF3\xA6\x97\xCA\x8E\xBF\xB4" 2332 + "\x56\xA1\x36\x6B\xB1\x0A\x3E\x70" 2333 + "\xEA\xD7\xCD\x72\x7B\x79\xC8\xAD" 2334 + "\x6B\xFE\xFB\xBA\x64\xAE\x19\xC1" 2335 + "\x82\xCF\x8A\xA1\x50\x17\x7F\xB2" 2336 + "\x6F\x7B\x0F\x52\xC5\x3E\x4A\x52" 2337 + "\x3F\xD9\x3F\x01\xA6\x41\x1A\xB3" 2338 + "\xB3\x7A\x0E\x8E\x75\xB2\xB1\x5F" 2339 + "\xDB\xEA\x84\x13\x26\x6C\x85\x4E" 2340 + "\xAE\x6B\xDC\xE7\xE7\xAD\xB0\x06" 2341 + "\x5C\xBA\x92\xD0\x30\xBB\x8D\xD2" 2342 + "\xAE\x4C\x70\x85\xA0\x07\xE3\x2C" 2343 + "\xD1\x27\x9C\xCF\xDB\x13\xB7\xE5" 2344 + "\xF9\x6A\x02\xD0\x39\x9D\xB6\xE7" 2345 + "\xD1\x17\x25\x08\xF9\xA9\xA6\x67" 2346 + "\x38\x80\xD1\x22\xAB\x1A\xD7\x26" 2347 + "\xAD\xCA\x19\x1B\xFA\x18\xA7\x57" 2348 + "\x31\xEC\xC9\xED\xDB\x79\xC0\x48" 2349 + "\xAC\x31\x9F\x03\x8B\x62\x5B\x7E" 2350 + "\x0E\xA6\xD0\x64\xEE\xEA\x00\xFC" 2351 + "\x58\xC8\xDE\x51\x4E\x17\x15\x11" 2352 + "\x66\x58\xB6\x90\xDC\xDF\xA1\x49" 2353 + "\xCA\x79\xE9\x31\x31\x42\xDC\x56" 2354 + "\x0B\xCD\xB6\x0D\xC7\x64\xF7\x19" 2355 + "\xD9\x42\x05\x7F\xBC\x2F\xFC\x90" 2356 + "\xAE\x29\x86\xAA\x43\x7A\x4F\x6B" 2357 + "\xCE\xEA\xBC\x31\x8D\x65\x9D\x46" 2358 + "\xEA\x77\xB4\xF9\x58\xEA\x5D\x84" 2359 + "\xE4\xDC\x14\xBB\xBD\x15\x0E\xDA" 2360 + "\xD8\xE4\xA4\x5D\x61\xF9\x58\x0F" 2361 + "\xE4\x82\x77\xCE\x87\xC0\x09\xF0" 2362 + "\xD6\x10\x9E\x34\xE1\x0C\x67\x55" 2363 + "\x7B\x6D\xD5\x51\x4B\x00\xEE\xBA" 2364 + "\xF2\x7B\xBE\x75\x07\x42\x9D\x99" 2365 + "\x12\xE1\x71\x4A\xF9\x2A\xF5\xF6" 2366 + "\x93\x03\xD7\x51\x09\xFA\xBE\x68" 2367 + "\xD8\x45\xFF\x33\xBA\xBB\x2B\x63", 2368 + .ilen = 496, 2369 + .result = "\x05\xEC\x77\xFB\x42\xD5\x59\x20" 2370 + "\x8B\x12\x86\x69\xF0\x5B\xCF\x56" 2371 + "\x39\xAD\x34\x9F\x66\xEA\x7D\xC4" 2372 + "\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A" 2373 + "\xFE\x41\x28\x5C\x27\x8E\x11\x85" 2374 + "\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B" 2375 + "\x92\x65\xE9\x70\xDB\x4F\xD6\xB9" 2376 + "\x00\xB4\x1F\xE6\x49\xFD\x44\x2F" 2377 + "\x53\x3A\x8D\x14\x98\x63\xCA\x5D" 2378 + "\xC1\xA8\x33\xA7\x0E\x91\x78\xEC" 2379 + "\x77\xDE\x42\xD5\xBC\x07\x8B\x12" 2380 + "\xE5\x4C\xF0\x5B\x22\x56\x39\x80" 2381 + "\x6B\x9F\x66\xC9\x50\xC4\xAF\x36" 2382 + "\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41" 2383 + "\x28\xB3\x1A\x8E\x11\xF8\x43\xF7" 2384 + "\x5E\x21\x55\x3C\x87\x6E\x92\x65" 2385 + "\xCC\x57\xDB\xA2\x35\xB9\x00\xEB" 2386 + "\x72\xE6\x49\xD0\x44\x2F\xB6\x19" 2387 + "\x8D\x14\xFF\x46\xCA\x5D\x24\xA8" 2388 + "\x33\x9A\x6D\x91\x78\xC3\x77\xDE" 2389 + "\xA1\x08\xBC\x07\xEE\x71\xE5\x4C" 2390 + "\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2" 2391 + "\x45\xC9\x50\x3B\xAF\x36\x99\x60" 2392 + "\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3" 2393 + "\x1A\xED\x74\xF8\x43\x2A\x5E\x21" 2394 + "\x88\x13\x87\x6E\xF1\x58\xCC\x57" 2395 + "\x3E\xA2\x35\x9C\x67\xEB\x72\xC5" 2396 + "\x49\xD0\xBB\x02\xB6\x19\xE0\x4B" 2397 + "\xFF\x46\x29\x5D\x24\x8F\x16\x9A" 2398 + "\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08" 2399 + "\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE" 2400 + "\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C" 2401 + "\x50\x3B\x82\x15\x99\x60\xCB\x52" 2402 + "\xC6\xA9\x30\xA4\x0F\x96\x79\xED" 2403 + "\x74\xDF\x43\x2A\xBD\x04\x88\x13" 2404 + "\xFA\x4D\xF1\x58\x23\x57\x3E\x81" 2405 + "\x68\x9C\x67\xCE\x51\xC5\xAC\x37" 2406 + "\xBB\x02\x95\x7C\xE0\x4B\xD2\x46" 2407 + "\x29\xB0\x1B\x8F\x16\xF9\x40\xF4" 2408 + "\x5F\x26\xAA\x3D\x84\x6F\x93\x7A" 2409 + "\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8" 2410 + "\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E" 2411 + "\x82\x15\xFC\x47\xCB\x52\x25\xA9" 2412 + "\x30\x9B\x62\x96\x79\xC0\x74\xDF" 2413 + "\xA6\x09\xBD\x04\xEF\x76\xFA\x4D" 2414 + "\xD4\x58\x23\x8A\x1D\x81\x68\xF3" 2415 + "\x5A\xCE\x51\x38\xAC\x37\x9E\x61" 2416 + "\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0" 2417 + "\x1B\xE2\x75\xF9\x40\x2B\x5F\x26" 2418 + "\x89\x10\x84\x6F\xF6\x59\xCD\x54" 2419 + "\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA" 2420 + "\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48" 2421 + "\xFC\x47\x2E\x52\x25\x8C\x17\x9B" 2422 + "\x62\xF5\x5C\xC0\xAB\x32\xA6\x09" 2423 + "\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF" 2424 + "\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D" 2425 + "\x51\x38\x83\x6A\x9E\x61\xC8\x53" 2426 + "\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2" 2427 + "\x75\xDC\x40\x2B\xB2\x05\x89\x10" 2428 + "\xFB\x42\xF6\x59\x20\x54\x3F\x86" 2429 + "\x69\x9D\x64\xCF\x56\xDA\xAD\x34" 2430 + "\xB8\x03\xEA\x7D\xE1\x48\xD3\x47", 2431 + .rlen = 496, 2432 + .also_non_np = 1, 2433 + .np = 2, 2434 + .tap = { 496 - 16, 16 }, 3044 2435 }, 3045 2436 }; 3046 2437 ··· 3219 2342 "\x9d\xde\xa5\x70\xe9\x42\x45\x8a" 3220 2343 "\x6b\xfa\xb1\x91\x13\xb0\xd9\x19", 3221 2344 .rlen = 128, 2345 + }, { /* Generated with Crypto++ */ 2346 + .key = "\x9C\xD6\xF3\x9C\xB9\x5A\x67\x00" 2347 + "\x5A\x67\x00\x2D\xCE\xEB\x2D\xCE" 2348 + "\xEB\xB4\x51\x72\xB4\x51\x72\x1F", 2349 + .klen = 24, 2350 + .iv = "\xB2\xD7\x48\xED\x06\x44\xF9\x12" 2351 + "\xB7\x28\x4D\x83\x24\x59\xF2\x17", 2352 + .input = "\x05\xEC\x77\xFB\x42\xD5\x59\x20" 2353 + "\x8B\x12\x86\x69\xF0\x5B\xCF\x56" 2354 + "\x39\xAD\x34\x9F\x66\xEA\x7D\xC4" 2355 + "\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A" 2356 + "\xFE\x41\x28\x5C\x27\x8E\x11\x85" 2357 + "\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B" 2358 + "\x92\x65\xE9\x70\xDB\x4F\xD6\xB9" 2359 + "\x00\xB4\x1F\xE6\x49\xFD\x44\x2F" 2360 + "\x53\x3A\x8D\x14\x98\x63\xCA\x5D" 2361 + "\xC1\xA8\x33\xA7\x0E\x91\x78\xEC" 2362 + "\x77\xDE\x42\xD5\xBC\x07\x8B\x12" 2363 + "\xE5\x4C\xF0\x5B\x22\x56\x39\x80" 2364 + "\x6B\x9F\x66\xC9\x50\xC4\xAF\x36" 2365 + "\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41" 2366 + "\x28\xB3\x1A\x8E\x11\xF8\x43\xF7" 2367 + "\x5E\x21\x55\x3C\x87\x6E\x92\x65" 2368 + "\xCC\x57\xDB\xA2\x35\xB9\x00\xEB" 2369 + "\x72\xE6\x49\xD0\x44\x2F\xB6\x19" 2370 + "\x8D\x14\xFF\x46\xCA\x5D\x24\xA8" 2371 + "\x33\x9A\x6D\x91\x78\xC3\x77\xDE" 2372 + "\xA1\x08\xBC\x07\xEE\x71\xE5\x4C" 2373 + "\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2" 2374 + "\x45\xC9\x50\x3B\xAF\x36\x99\x60" 2375 + "\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3" 2376 + "\x1A\xED\x74\xF8\x43\x2A\x5E\x21" 2377 + "\x88\x13\x87\x6E\xF1\x58\xCC\x57" 2378 + "\x3E\xA2\x35\x9C\x67\xEB\x72\xC5" 2379 + "\x49\xD0\xBB\x02\xB6\x19\xE0\x4B" 2380 + "\xFF\x46\x29\x5D\x24\x8F\x16\x9A" 2381 + "\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08" 2382 + "\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE" 2383 + "\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C" 2384 + "\x50\x3B\x82\x15\x99\x60\xCB\x52" 2385 + "\xC6\xA9\x30\xA4\x0F\x96\x79\xED" 2386 + "\x74\xDF\x43\x2A\xBD\x04\x88\x13" 2387 + "\xFA\x4D\xF1\x58\x23\x57\x3E\x81" 2388 + "\x68\x9C\x67\xCE\x51\xC5\xAC\x37" 2389 + "\xBB\x02\x95\x7C\xE0\x4B\xD2\x46" 2390 + "\x29\xB0\x1B\x8F\x16\xF9\x40\xF4" 2391 + "\x5F\x26\xAA\x3D\x84\x6F\x93\x7A" 2392 + "\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8" 2393 + "\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E" 2394 + "\x82\x15\xFC\x47\xCB\x52\x25\xA9" 2395 + "\x30\x9B\x62\x96\x79\xC0\x74\xDF" 2396 + "\xA6\x09\xBD\x04\xEF\x76\xFA\x4D" 2397 + "\xD4\x58\x23\x8A\x1D\x81\x68\xF3" 2398 + "\x5A\xCE\x51\x38\xAC\x37\x9E\x61" 2399 + "\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0" 2400 + "\x1B\xE2\x75\xF9\x40\x2B\x5F\x26" 2401 + "\x89\x10\x84\x6F\xF6\x59\xCD\x54" 2402 + "\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA" 2403 + "\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48" 2404 + "\xFC\x47\x2E\x52\x25\x8C\x17\x9B" 2405 + "\x62\xF5\x5C\xC0\xAB\x32\xA6\x09" 2406 + "\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF" 2407 + "\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D" 2408 + "\x51\x38\x83\x6A\x9E\x61\xC8\x53" 2409 + "\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2" 2410 + "\x75\xDC\x40\x2B\xB2\x05\x89\x10" 2411 + "\xFB\x42\xF6\x59\x20\x54\x3F\x86" 2412 + "\x69\x9D\x64\xCF\x56\xDA\xAD\x34" 2413 + "\xB8\x03\xEA\x7D\xE1\x48\xD3\x47", 2414 + .ilen = 496, 2415 + .result = "\xF8\xF6\xB5\x60\x5C\x5A\x75\x84" 2416 + "\x87\x81\x53\xBA\xC9\x6F\xEC\xD5" 2417 + "\x1E\x68\x8E\x85\x12\x86\x1D\x38" 2418 + "\x1C\x91\x40\xCC\x69\x6A\xD5\x35" 2419 + "\x0D\x7C\xB5\x07\x7C\x7B\x2A\xAF" 2420 + "\x32\xBC\xA1\xB3\x84\x31\x1B\x3C" 2421 + "\x0A\x2B\xFA\xD3\x9F\xB0\x8C\x37" 2422 + "\x8F\x9D\xA7\x6D\x6C\xFA\xD7\x90" 2423 + "\xE3\x69\x54\xED\x3A\xC4\xF1\x6B" 2424 + "\xB1\xCC\xFB\x7D\xD8\x8E\x17\x0B" 2425 + "\x9C\xF6\x4C\xD6\xFF\x03\x4E\xD9" 2426 + "\xE6\xA5\xAD\x25\xE6\x17\x69\x63" 2427 + "\x11\x35\x61\x94\x88\x7B\x1C\x48" 2428 + "\xF1\x24\x20\x29\x6B\x93\x1A\x8E" 2429 + "\x43\x03\x89\xD8\xB1\xDA\x47\x7B" 2430 + "\x79\x3A\x83\x76\xDA\xAE\xC6\xBB" 2431 + "\x22\xF8\xE8\x3D\x9A\x65\x54\xD8" 2432 + "\x4C\xE9\xE7\xE4\x63\x2F\x5C\x73" 2433 + "\x5A\xC3\xAE\x46\xA8\xCD\x57\xE6" 2434 + "\x67\x88\xA5\x20\x6F\x5F\x97\xC7" 2435 + "\xCC\x15\xA2\x0A\x93\xEA\x33\xE7" 2436 + "\x03\x5F\xEC\x64\x30\x6F\xEE\xD7" 2437 + "\x7E\xDF\xD6\xE9\x6F\x3F\xD6\x1E" 2438 + "\xBE\x67\x6C\x5B\x97\xA0\x09\xE6" 2439 + "\xEE\xFE\x55\xA3\x29\x65\xE0\x12" 2440 + "\xA1\x6A\x8A\x6F\xF2\xE6\xF1\x96" 2441 + "\x87\xFB\x9C\x05\xDD\x80\xEC\xFF" 2442 + "\xC5\xED\x50\xFE\xFC\x91\xCD\xCE" 2443 + "\x25\x2C\x5F\xD9\xAD\x95\x7D\x99" 2444 + "\xF0\x05\xC4\x71\x46\x5F\xF9\x0D" 2445 + "\xD2\x63\xDF\x9B\x96\x2E\x2B\xA6" 2446 + "\x2B\x1C\xD5\xFB\x96\x24\x60\x60" 2447 + "\x54\x40\xB8\x62\xA4\xF8\x46\x95" 2448 + "\x73\x28\xA3\xA6\x16\x2B\x17\xE7" 2449 + "\x7A\xF8\x62\x54\x3B\x64\x69\xE1" 2450 + "\x71\x34\x29\x5B\x4E\x05\x9B\xFA" 2451 + "\x5E\xF1\x96\xB7\xCE\x16\x9B\x59" 2452 + "\xF1\x1A\x4C\x51\x26\xFD\x79\xE2" 2453 + "\x3B\x8E\x71\x69\x6A\x91\xB6\x65" 2454 + "\x32\x09\xB8\xE4\x09\x1F\xEA\x39" 2455 + "\xCE\x20\x65\x9F\xD6\xD1\xC7\xF0" 2456 + "\x73\x50\x08\x56\x20\x9B\x94\x23" 2457 + "\x14\x39\xB7\x2B\xB1\x2D\x6D\x6F" 2458 + "\x41\x5B\xCC\xE2\x18\xAE\x62\x89" 2459 + "\x78\x8E\x67\x23\xD0\xFB\x2B\xE5" 2460 + "\x25\xC9\x48\x97\xB5\xD3\x17\xD5" 2461 + "\x6A\x9F\xA7\x48\x0C\x2B\x73\x3B" 2462 + "\x57\x08\xAE\x91\xF2\xB7\x57\x89" 2463 + "\xF4\xD0\xB0\x07\xB0\x42\x6C\xAF" 2464 + "\x98\x1A\xE7\xD1\xAC\x1E\xB5\x02" 2465 + "\xD4\x56\x42\x79\x79\x7F\x2A\x77" 2466 + "\x25\xE9\x7D\xC1\x88\x19\x2B\x49" 2467 + "\x6F\x46\x59\xAB\x56\x1F\x61\xE0" 2468 + "\x0C\x24\x9C\xC9\x5B\x63\xA9\x12" 2469 + "\xCF\x88\x96\xB6\xA8\x24\xC6\xA8" 2470 + "\x21\x85\x1A\x62\x7E\x34\xBB\xEB" 2471 + "\xBD\x02\x2A\xC7\xD8\x89\x80\xC5" 2472 + "\xB1\xBB\x60\xA5\x22\xFC\x6F\x38" 2473 + "\x02\x80\xA3\x28\x22\x75\xE1\xE9" 2474 + "\x90\xE9\xFA\x4B\x00\x10\xAC\x58" 2475 + "\x83\x70\xFF\x86\xE6\xAA\x0F\x1F" 2476 + "\x95\x63\x73\xA2\x44\xAC\xF8\xA5", 2477 + .rlen = 496, 2478 + .also_non_np = 1, 2479 + .np = 2, 2480 + .tap = { 496 - 16, 16 }, 3222 2481 }, 3223 2482 }; 3224 2483 ··· 3399 2386 "\x63\x65\x65\x72\x73\x74\x54\x20" 3400 2387 "\x6f\x6f\x4d\x20\x6e\x61\x0a\x79", 3401 2388 .rlen = 128, 2389 + }, { /* Generated with Crypto++ */ 2390 + .key = "\x9C\xD6\xF3\x9C\xB9\x5A\x67\x00" 2391 + "\x5A\x67\x00\x2D\xCE\xEB\x2D\xCE" 2392 + "\xEB\xB4\x51\x72\xB4\x51\x72\x1F", 2393 + .klen = 24, 2394 + .iv = "\xB2\xD7\x48\xED\x06\x44\xF9\x12" 2395 + "\xB7\x28\x4D\x83\x24\x59\xF2\x17", 2396 + .input = "\xF8\xF6\xB5\x60\x5C\x5A\x75\x84" 2397 + "\x87\x81\x53\xBA\xC9\x6F\xEC\xD5" 2398 + "\x1E\x68\x8E\x85\x12\x86\x1D\x38" 2399 + "\x1C\x91\x40\xCC\x69\x6A\xD5\x35" 2400 + "\x0D\x7C\xB5\x07\x7C\x7B\x2A\xAF" 2401 + "\x32\xBC\xA1\xB3\x84\x31\x1B\x3C" 2402 + "\x0A\x2B\xFA\xD3\x9F\xB0\x8C\x37" 2403 + "\x8F\x9D\xA7\x6D\x6C\xFA\xD7\x90" 2404 + "\xE3\x69\x54\xED\x3A\xC4\xF1\x6B" 2405 + "\xB1\xCC\xFB\x7D\xD8\x8E\x17\x0B" 2406 + "\x9C\xF6\x4C\xD6\xFF\x03\x4E\xD9" 2407 + "\xE6\xA5\xAD\x25\xE6\x17\x69\x63" 2408 + "\x11\x35\x61\x94\x88\x7B\x1C\x48" 2409 + "\xF1\x24\x20\x29\x6B\x93\x1A\x8E" 2410 + "\x43\x03\x89\xD8\xB1\xDA\x47\x7B" 2411 + "\x79\x3A\x83\x76\xDA\xAE\xC6\xBB" 2412 + "\x22\xF8\xE8\x3D\x9A\x65\x54\xD8" 2413 + "\x4C\xE9\xE7\xE4\x63\x2F\x5C\x73" 2414 + "\x5A\xC3\xAE\x46\xA8\xCD\x57\xE6" 2415 + "\x67\x88\xA5\x20\x6F\x5F\x97\xC7" 2416 + "\xCC\x15\xA2\x0A\x93\xEA\x33\xE7" 2417 + "\x03\x5F\xEC\x64\x30\x6F\xEE\xD7" 2418 + "\x7E\xDF\xD6\xE9\x6F\x3F\xD6\x1E" 2419 + "\xBE\x67\x6C\x5B\x97\xA0\x09\xE6" 2420 + "\xEE\xFE\x55\xA3\x29\x65\xE0\x12" 2421 + "\xA1\x6A\x8A\x6F\xF2\xE6\xF1\x96" 2422 + "\x87\xFB\x9C\x05\xDD\x80\xEC\xFF" 2423 + "\xC5\xED\x50\xFE\xFC\x91\xCD\xCE" 2424 + "\x25\x2C\x5F\xD9\xAD\x95\x7D\x99" 2425 + "\xF0\x05\xC4\x71\x46\x5F\xF9\x0D" 2426 + "\xD2\x63\xDF\x9B\x96\x2E\x2B\xA6" 2427 + "\x2B\x1C\xD5\xFB\x96\x24\x60\x60" 2428 + "\x54\x40\xB8\x62\xA4\xF8\x46\x95" 2429 + "\x73\x28\xA3\xA6\x16\x2B\x17\xE7" 2430 + "\x7A\xF8\x62\x54\x3B\x64\x69\xE1" 2431 + "\x71\x34\x29\x5B\x4E\x05\x9B\xFA" 2432 + "\x5E\xF1\x96\xB7\xCE\x16\x9B\x59" 2433 + "\xF1\x1A\x4C\x51\x26\xFD\x79\xE2" 2434 + "\x3B\x8E\x71\x69\x6A\x91\xB6\x65" 2435 + "\x32\x09\xB8\xE4\x09\x1F\xEA\x39" 2436 + "\xCE\x20\x65\x9F\xD6\xD1\xC7\xF0" 2437 + "\x73\x50\x08\x56\x20\x9B\x94\x23" 2438 + "\x14\x39\xB7\x2B\xB1\x2D\x6D\x6F" 2439 + "\x41\x5B\xCC\xE2\x18\xAE\x62\x89" 2440 + "\x78\x8E\x67\x23\xD0\xFB\x2B\xE5" 2441 + "\x25\xC9\x48\x97\xB5\xD3\x17\xD5" 2442 + "\x6A\x9F\xA7\x48\x0C\x2B\x73\x3B" 2443 + "\x57\x08\xAE\x91\xF2\xB7\x57\x89" 2444 + "\xF4\xD0\xB0\x07\xB0\x42\x6C\xAF" 2445 + "\x98\x1A\xE7\xD1\xAC\x1E\xB5\x02" 2446 + "\xD4\x56\x42\x79\x79\x7F\x2A\x77" 2447 + "\x25\xE9\x7D\xC1\x88\x19\x2B\x49" 2448 + "\x6F\x46\x59\xAB\x56\x1F\x61\xE0" 2449 + "\x0C\x24\x9C\xC9\x5B\x63\xA9\x12" 2450 + "\xCF\x88\x96\xB6\xA8\x24\xC6\xA8" 2451 + "\x21\x85\x1A\x62\x7E\x34\xBB\xEB" 2452 + "\xBD\x02\x2A\xC7\xD8\x89\x80\xC5" 2453 + "\xB1\xBB\x60\xA5\x22\xFC\x6F\x38" 2454 + "\x02\x80\xA3\x28\x22\x75\xE1\xE9" 2455 + "\x90\xE9\xFA\x4B\x00\x10\xAC\x58" 2456 + "\x83\x70\xFF\x86\xE6\xAA\x0F\x1F" 2457 + "\x95\x63\x73\xA2\x44\xAC\xF8\xA5", 2458 + .ilen = 496, 2459 + .result = "\x05\xEC\x77\xFB\x42\xD5\x59\x20" 2460 + "\x8B\x12\x86\x69\xF0\x5B\xCF\x56" 2461 + "\x39\xAD\x34\x9F\x66\xEA\x7D\xC4" 2462 + "\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A" 2463 + "\xFE\x41\x28\x5C\x27\x8E\x11\x85" 2464 + "\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B" 2465 + "\x92\x65\xE9\x70\xDB\x4F\xD6\xB9" 2466 + "\x00\xB4\x1F\xE6\x49\xFD\x44\x2F" 2467 + "\x53\x3A\x8D\x14\x98\x63\xCA\x5D" 2468 + "\xC1\xA8\x33\xA7\x0E\x91\x78\xEC" 2469 + "\x77\xDE\x42\xD5\xBC\x07\x8B\x12" 2470 + "\xE5\x4C\xF0\x5B\x22\x56\x39\x80" 2471 + "\x6B\x9F\x66\xC9\x50\xC4\xAF\x36" 2472 + "\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41" 2473 + "\x28\xB3\x1A\x8E\x11\xF8\x43\xF7" 2474 + "\x5E\x21\x55\x3C\x87\x6E\x92\x65" 2475 + "\xCC\x57\xDB\xA2\x35\xB9\x00\xEB" 2476 + "\x72\xE6\x49\xD0\x44\x2F\xB6\x19" 2477 + "\x8D\x14\xFF\x46\xCA\x5D\x24\xA8" 2478 + "\x33\x9A\x6D\x91\x78\xC3\x77\xDE" 2479 + "\xA1\x08\xBC\x07\xEE\x71\xE5\x4C" 2480 + "\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2" 2481 + "\x45\xC9\x50\x3B\xAF\x36\x99\x60" 2482 + "\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3" 2483 + "\x1A\xED\x74\xF8\x43\x2A\x5E\x21" 2484 + "\x88\x13\x87\x6E\xF1\x58\xCC\x57" 2485 + "\x3E\xA2\x35\x9C\x67\xEB\x72\xC5" 2486 + "\x49\xD0\xBB\x02\xB6\x19\xE0\x4B" 2487 + "\xFF\x46\x29\x5D\x24\x8F\x16\x9A" 2488 + "\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08" 2489 + "\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE" 2490 + "\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C" 2491 + "\x50\x3B\x82\x15\x99\x60\xCB\x52" 2492 + "\xC6\xA9\x30\xA4\x0F\x96\x79\xED" 2493 + "\x74\xDF\x43\x2A\xBD\x04\x88\x13" 2494 + "\xFA\x4D\xF1\x58\x23\x57\x3E\x81" 2495 + "\x68\x9C\x67\xCE\x51\xC5\xAC\x37" 2496 + "\xBB\x02\x95\x7C\xE0\x4B\xD2\x46" 2497 + "\x29\xB0\x1B\x8F\x16\xF9\x40\xF4" 2498 + "\x5F\x26\xAA\x3D\x84\x6F\x93\x7A" 2499 + "\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8" 2500 + "\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E" 2501 + "\x82\x15\xFC\x47\xCB\x52\x25\xA9" 2502 + "\x30\x9B\x62\x96\x79\xC0\x74\xDF" 2503 + "\xA6\x09\xBD\x04\xEF\x76\xFA\x4D" 2504 + "\xD4\x58\x23\x8A\x1D\x81\x68\xF3" 2505 + "\x5A\xCE\x51\x38\xAC\x37\x9E\x61" 2506 + "\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0" 2507 + "\x1B\xE2\x75\xF9\x40\x2B\x5F\x26" 2508 + "\x89\x10\x84\x6F\xF6\x59\xCD\x54" 2509 + "\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA" 2510 + "\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48" 2511 + "\xFC\x47\x2E\x52\x25\x8C\x17\x9B" 2512 + "\x62\xF5\x5C\xC0\xAB\x32\xA6\x09" 2513 + "\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF" 2514 + "\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D" 2515 + "\x51\x38\x83\x6A\x9E\x61\xC8\x53" 2516 + "\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2" 2517 + "\x75\xDC\x40\x2B\xB2\x05\x89\x10" 2518 + "\xFB\x42\xF6\x59\x20\x54\x3F\x86" 2519 + "\x69\x9D\x64\xCF\x56\xDA\xAD\x34" 2520 + "\xB8\x03\xEA\x7D\xE1\x48\xD3\x47", 2521 + .rlen = 496, 2522 + .also_non_np = 1, 2523 + .np = 2, 2524 + .tap = { 496 - 16, 16 }, 2525 + }, 2526 + }; 2527 + 2528 + static struct cipher_testvec des3_ede_ctr_enc_tv_template[] = { 2529 + { /* Generated with Crypto++ */ 2530 + .key = "\x9C\xD6\xF3\x9C\xB9\x5A\x67\x00" 2531 + "\x5A\x67\x00\x2D\xCE\xEB\x2D\xCE" 2532 + "\xEB\xB4\x51\x72\xB4\x51\x72\x1F", 2533 + .klen = 24, 2534 + .iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" 2535 + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD", 2536 + .input = "\x05\xEC\x77\xFB\x42\xD5\x59\x20" 2537 + "\x8B\x12\x86\x69\xF0\x5B\xCF\x56" 2538 + "\x39\xAD\x34\x9F\x66\xEA\x7D\xC4" 2539 + "\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A" 2540 + "\xFE\x41\x28\x5C\x27\x8E\x11\x85" 2541 + "\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B" 2542 + "\x92\x65\xE9\x70\xDB\x4F\xD6\xB9" 2543 + "\x00\xB4\x1F\xE6\x49\xFD\x44\x2F" 2544 + "\x53\x3A\x8D\x14\x98\x63\xCA\x5D" 2545 + "\xC1\xA8\x33\xA7\x0E\x91\x78\xEC" 2546 + "\x77\xDE\x42\xD5\xBC\x07\x8B\x12" 2547 + "\xE5\x4C\xF0\x5B\x22\x56\x39\x80" 2548 + "\x6B\x9F\x66\xC9\x50\xC4\xAF\x36" 2549 + "\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41" 2550 + "\x28\xB3\x1A\x8E\x11\xF8\x43\xF7" 2551 + "\x5E\x21\x55\x3C\x87\x6E\x92\x65" 2552 + "\xCC\x57\xDB\xA2\x35\xB9\x00\xEB" 2553 + "\x72\xE6\x49\xD0\x44\x2F\xB6\x19" 2554 + "\x8D\x14\xFF\x46\xCA\x5D\x24\xA8" 2555 + "\x33\x9A\x6D\x91\x78\xC3\x77\xDE" 2556 + "\xA1\x08\xBC\x07\xEE\x71\xE5\x4C" 2557 + "\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2" 2558 + "\x45\xC9\x50\x3B\xAF\x36\x99\x60" 2559 + "\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3" 2560 + "\x1A\xED\x74\xF8\x43\x2A\x5E\x21" 2561 + "\x88\x13\x87\x6E\xF1\x58\xCC\x57" 2562 + "\x3E\xA2\x35\x9C\x67\xEB\x72\xC5" 2563 + "\x49\xD0\xBB\x02\xB6\x19\xE0\x4B" 2564 + "\xFF\x46\x29\x5D\x24\x8F\x16\x9A" 2565 + "\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08" 2566 + "\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE" 2567 + "\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C" 2568 + "\x50\x3B\x82\x15\x99\x60\xCB\x52" 2569 + "\xC6\xA9\x30\xA4\x0F\x96\x79\xED" 2570 + "\x74\xDF\x43\x2A\xBD\x04\x88\x13" 2571 + "\xFA\x4D\xF1\x58\x23\x57\x3E\x81" 2572 + "\x68\x9C\x67\xCE\x51\xC5\xAC\x37" 2573 + "\xBB\x02\x95\x7C\xE0\x4B\xD2\x46" 2574 + "\x29\xB0\x1B\x8F\x16\xF9\x40\xF4" 2575 + "\x5F\x26\xAA\x3D\x84\x6F\x93\x7A" 2576 + "\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8" 2577 + "\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E" 2578 + "\x82\x15\xFC\x47\xCB\x52\x25\xA9" 2579 + "\x30\x9B\x62\x96\x79\xC0\x74\xDF" 2580 + "\xA6\x09\xBD\x04\xEF\x76\xFA\x4D" 2581 + "\xD4\x58\x23\x8A\x1D\x81\x68\xF3" 2582 + "\x5A\xCE\x51\x38\xAC\x37\x9E\x61" 2583 + "\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0" 2584 + "\x1B\xE2\x75\xF9\x40\x2B\x5F\x26" 2585 + "\x89\x10\x84\x6F\xF6\x59\xCD\x54" 2586 + "\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA" 2587 + "\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48" 2588 + "\xFC\x47\x2E\x52\x25\x8C\x17\x9B" 2589 + "\x62\xF5\x5C\xC0\xAB\x32\xA6\x09" 2590 + "\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF" 2591 + "\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D" 2592 + "\x51\x38\x83\x6A\x9E\x61\xC8\x53" 2593 + "\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2" 2594 + "\x75\xDC\x40\x2B\xB2\x05\x89\x10" 2595 + "\xFB\x42\xF6\x59\x20\x54\x3F\x86" 2596 + "\x69\x9D\x64\xCF\x56\xDA\xAD\x34" 2597 + "\xB8\x03\xEA\x7D\xE1\x48\xD3\x47", 2598 + .ilen = 496, 2599 + .result = "\x07\xC2\x08\x20\x72\x1F\x49\xEF" 2600 + "\x19\xCD\x6F\x32\x53\x05\x22\x15" 2601 + "\xA2\x85\x2B\xDB\x85\xD2\xD8\xB9" 2602 + "\xDD\x0D\x1B\x45\xCB\x69\x11\xD4" 2603 + "\xEA\xBE\xB2\x45\x5D\x0C\xAE\xBE" 2604 + "\xA0\xC1\x27\xAC\x65\x9F\x53\x7E" 2605 + "\xAF\xC2\x1B\xB5\xB8\x6D\x36\x0C" 2606 + "\x25\xC0\xF8\x6D\x0B\x29\x01\xDA" 2607 + "\x13\x78\xDC\x89\x12\x12\x43\xFA" 2608 + "\xF6\x12\xEF\x8D\x87\x62\x78\x83" 2609 + "\xE2\xBE\x41\x20\x4C\x6D\x35\x1B" 2610 + "\xD1\x0C\x30\xCF\xE2\xDE\x2B\x03" 2611 + "\xBF\x45\x73\xD4\xE5\x59\x95\xD1" 2612 + "\xB3\x9B\x27\x62\x97\xBD\xDE\x7F" 2613 + "\xA4\xD2\x39\x80\xAA\x50\x23\xF0" 2614 + "\x74\x88\x3D\xA8\x6A\x18\x79\x3B" 2615 + "\xC4\x96\x6C\x8D\x22\x40\x92\x6E" 2616 + "\xD6\xAD\x2A\x1F\xDE\x63\xC0\xE7" 2617 + "\x07\xF7\x2D\xF7\xB5\xF3\xF0\xCC" 2618 + "\x01\x7C\x2A\x9B\xC2\x10\xCA\xAA" 2619 + "\xFD\x2B\x3F\xC5\xF3\xF6\xFC\x9B" 2620 + "\x45\xDB\x53\xE4\x5B\xF3\xC9\x7B" 2621 + "\x8E\x52\xFF\xC8\x02\xB8\xAC\x9D" 2622 + "\xA1\x00\x39\xDA\x3D\x2D\x0E\x01" 2623 + "\x09\x7D\x8D\x5E\xBE\x53\xB9\xB0" 2624 + "\x8E\xE7\xE2\x96\x6A\xB2\x78\xEA" 2625 + "\xDE\x23\x8B\xA5\xFA\x5C\xE3\xDA" 2626 + "\xBF\x8E\x31\x6A\x55\xD1\x6A\xB2" 2627 + "\xB5\x46\x6F\xA5\xF0\xEE\xBA\x1F" 2628 + "\x9F\x98\xB0\x66\x4F\xD0\x3F\xA9" 2629 + "\xDF\x5F\x58\xC4\xF4\xFF\x75\x5C" 2630 + "\x40\x3A\x09\x7E\x6E\x1C\x97\xD4" 2631 + "\xCC\xE7\xE7\x71\xCF\x0B\x15\x08" 2632 + "\x71\xFA\x07\x97\xCD\xE6\xCA\x1D" 2633 + "\x14\x28\x0C\xCF\x99\x13\x7A\xF1" 2634 + "\xEB\xFA\xFA\x92\x07\xDE\x1D\xA1" 2635 + "\xD3\x36\x69\xFE\x51\x4D\x9F\x2E" 2636 + "\x83\x37\x4F\x1F\x48\x30\xED\x04" 2637 + "\x4D\xA4\xEF\x3A\xCA\x76\xF4\x1C" 2638 + "\x41\x8F\x63\x37\x78\x2F\x86\xA6" 2639 + "\xEF\x41\x7E\xD2\xAF\x88\xAB\x67" 2640 + "\x52\x71\xC3\x8E\xF8\x26\x93\x72" 2641 + "\xAA\xD6\x0E\xE7\x0B\x46\xB1\x3A" 2642 + "\xB4\x08\xA9\xA8\xA0\xCF\x20\x0C" 2643 + "\x52\xBC\x8B\x05\x56\xB2\xBC\x31" 2644 + "\x9B\x74\xB9\x29\x29\x96\x9A\x50" 2645 + "\xDC\x45\xDC\x1A\xEB\x0C\x64\xD4" 2646 + "\xD3\x05\x7E\x59\x55\xC3\xF4\x90" 2647 + "\xC2\xAB\xF8\x9B\x8A\xDA\xCE\xA1" 2648 + "\xC3\xF4\xAD\x77\xDD\x44\xC8\xAC" 2649 + "\xA3\xF1\xC9\xD2\x19\x5C\xB0\xCA" 2650 + "\xA2\x34\xC1\xF7\x6C\xFD\xAC\x65" 2651 + "\x32\xDC\x48\xC4\xF2\x00\x6B\x77" 2652 + "\xF1\x7D\x76\xAC\xC0\x31\x63\x2A" 2653 + "\xA5\x3A\x62\xC8\x91\xB1\x03\x65" 2654 + "\xCB\x43\xD1\x06\xDF\xC3\x67\xBC" 2655 + "\xDC\xE0\xCD\x35\xCE\x49\x65\xA0" 2656 + "\x52\x7B\xA7\x0D\x07\xA9\x1B\xB0" 2657 + "\x40\x77\x72\xC2\xEA\x0E\x3A\x78" 2658 + "\x46\xB9\x91\xB6\xE7\x3D\x51\x42" 2659 + "\xFD\x51\xB0\xC6\x2C\x63\x13\x78" 2660 + "\x5C\xEE\xFC\xCF\xC4\x70\x00\x34", 2661 + .rlen = 496, 2662 + .also_non_np = 1, 2663 + .np = 2, 2664 + .tap = { 496 - 16, 16 }, 2665 + }, { /* Generated with Crypto++ */ 2666 + .key = "\x9C\xD6\xF3\x9C\xB9\x5A\x67\x00" 2667 + "\x5A\x67\x00\x2D\xCE\xEB\x2D\xCE" 2668 + "\xEB\xB4\x51\x72\xB4\x51\x72\x1F", 2669 + .klen = 24, 2670 + .iv = "\xB2\xD7\x48\xED\x06\x44\xF9\x12" 2671 + "\xB7\x28\x4D\x83\x24\x59\xF2\x17", 2672 + .input = "\x05\xEC\x77\xFB\x42\xD5\x59\x20" 2673 + "\x8B\x12\x86\x69\xF0\x5B\xCF\x56" 2674 + "\x39\xAD\x34\x9F\x66\xEA\x7D\xC4" 2675 + "\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A" 2676 + "\xFE\x41\x28\x5C\x27\x8E\x11\x85" 2677 + "\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B" 2678 + "\x92\x65\xE9\x70\xDB\x4F\xD6\xB9" 2679 + "\x00\xB4\x1F\xE6\x49\xFD\x44\x2F" 2680 + "\x53\x3A\x8D\x14\x98\x63\xCA\x5D" 2681 + "\xC1\xA8\x33\xA7\x0E\x91\x78\xEC" 2682 + "\x77\xDE\x42\xD5\xBC\x07\x8B\x12" 2683 + "\xE5\x4C\xF0\x5B\x22\x56\x39\x80" 2684 + "\x6B\x9F\x66\xC9\x50\xC4\xAF\x36" 2685 + "\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41" 2686 + "\x28\xB3\x1A\x8E\x11\xF8\x43\xF7" 2687 + "\x5E\x21\x55\x3C\x87\x6E\x92\x65" 2688 + "\xCC\x57\xDB\xA2\x35\xB9\x00\xEB" 2689 + "\x72\xE6\x49\xD0\x44\x2F\xB6\x19" 2690 + "\x8D\x14\xFF\x46\xCA\x5D\x24\xA8" 2691 + "\x33\x9A\x6D\x91\x78\xC3\x77\xDE" 2692 + "\xA1\x08\xBC\x07\xEE\x71\xE5\x4C" 2693 + "\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2" 2694 + "\x45\xC9\x50\x3B\xAF\x36\x99\x60" 2695 + "\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3" 2696 + "\x1A\xED\x74\xF8\x43\x2A\x5E\x21" 2697 + "\x88\x13\x87\x6E\xF1\x58\xCC\x57" 2698 + "\x3E\xA2\x35\x9C\x67\xEB\x72\xC5" 2699 + "\x49\xD0\xBB\x02\xB6\x19\xE0\x4B" 2700 + "\xFF\x46\x29\x5D\x24\x8F\x16\x9A" 2701 + "\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08" 2702 + "\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE" 2703 + "\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C" 2704 + "\x50\x3B\x82\x15\x99\x60\xCB\x52" 2705 + "\xC6\xA9\x30\xA4\x0F\x96\x79\xED" 2706 + "\x74\xDF\x43\x2A\xBD\x04\x88\x13" 2707 + "\xFA\x4D\xF1\x58\x23\x57\x3E\x81" 2708 + "\x68\x9C\x67\xCE\x51\xC5\xAC\x37" 2709 + "\xBB\x02\x95\x7C\xE0\x4B\xD2\x46" 2710 + "\x29\xB0\x1B\x8F\x16\xF9\x40\xF4" 2711 + "\x5F\x26\xAA\x3D\x84\x6F\x93\x7A" 2712 + "\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8" 2713 + "\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E" 2714 + "\x82\x15\xFC\x47\xCB\x52\x25\xA9" 2715 + "\x30\x9B\x62\x96\x79\xC0\x74\xDF" 2716 + "\xA6\x09\xBD\x04\xEF\x76\xFA\x4D" 2717 + "\xD4\x58\x23\x8A\x1D\x81\x68\xF3" 2718 + "\x5A\xCE\x51\x38\xAC\x37\x9E\x61" 2719 + "\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0" 2720 + "\x1B\xE2\x75\xF9\x40\x2B\x5F\x26" 2721 + "\x89\x10\x84\x6F\xF6\x59\xCD\x54" 2722 + "\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA" 2723 + "\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48" 2724 + "\xFC\x47\x2E\x52\x25\x8C\x17\x9B" 2725 + "\x62\xF5\x5C\xC0\xAB\x32\xA6\x09" 2726 + "\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF" 2727 + "\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D" 2728 + "\x51\x38\x83\x6A\x9E\x61\xC8\x53" 2729 + "\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2" 2730 + "\x75\xDC\x40\x2B\xB2\x05\x89\x10" 2731 + "\xFB\x42\xF6\x59\x20\x54\x3F\x86" 2732 + "\x69\x9D\x64\xCF\x56\xDA\xAD\x34" 2733 + "\xB8\x03\xEA\x7D\xE1\x48\xD3\x47" 2734 + "\x2E\xB1\x18", 2735 + .ilen = 499, 2736 + .result = "\x23\xFF\x5C\x99\x75\xBB\x1F\xD4" 2737 + "\xBC\x27\x9D\x36\x60\xA9\xC9\xF7" 2738 + "\x94\x9D\x1B\xFF\x8E\x95\x57\x89" 2739 + "\x8C\x2E\x33\x70\x43\x61\xE6\xD2" 2740 + "\x82\x33\x63\xB6\xC4\x34\x5E\xF8" 2741 + "\x96\x07\xA7\xD2\x3B\x8E\xC9\xAA" 2742 + "\x7C\xA0\x55\x89\x2E\xE1\x85\x25" 2743 + "\x14\x04\xDA\x6B\xE0\xEE\x56\xCF" 2744 + "\x08\x2E\x69\xD4\x54\xDE\x22\x84" 2745 + "\x69\xA6\xA7\xD3\x3A\x9A\xE8\x05" 2746 + "\x63\xDB\xBF\x46\x3A\x26\x2E\x0F" 2747 + "\x58\x5C\x46\xEA\x07\x40\xDA\xE1" 2748 + "\x14\x1D\xCD\x4F\x06\xC0\xCA\x54" 2749 + "\x1E\xC9\x45\x85\x67\x7C\xC2\xB5" 2750 + "\x97\x5D\x61\x78\x2E\x46\xEC\x6A" 2751 + "\x53\xF4\xD0\xAE\xFA\xB4\x86\x29" 2752 + "\x9F\x17\x33\x24\xD8\xB9\xB2\x05" 2753 + "\x93\x88\xEA\xF7\xA0\x70\x69\x49" 2754 + "\x88\x6B\x73\x40\x41\x8D\xD9\xD9" 2755 + "\x7E\x78\xE9\xBE\x6C\x14\x22\x7A" 2756 + "\x66\xE1\xDA\xED\x10\xFF\x69\x1D" 2757 + "\xB9\xAA\xF2\x56\x72\x1B\x23\xE2" 2758 + "\x45\x54\x8B\xA3\x70\x23\xB4\x5E" 2759 + "\x8E\x96\xC9\x05\x00\xB3\xB6\xC2" 2760 + "\x2A\x02\x43\x7A\x62\xD5\xC8\xD2" 2761 + "\xC2\xD0\xE4\x78\xA1\x7B\x3E\xE8" 2762 + "\x9F\x7F\x7D\x40\x54\x30\x3B\xC0" 2763 + "\xA5\x54\xFD\xCA\x25\xEC\x44\x3E" 2764 + "\x1A\x54\x7F\x88\xD0\xE1\xFE\x71" 2765 + "\xCE\x05\x49\x89\xBA\xD6\x72\xE7" 2766 + "\xD6\x5D\x3F\xA2\xD9\xAB\xC5\x02" 2767 + "\xD6\x43\x22\xAF\xA2\xE4\x80\x85" 2768 + "\xD7\x87\xB9\xEA\x43\xDB\xC8\xEF" 2769 + "\x5C\x82\x2E\x98\x0D\x30\x41\x6B" 2770 + "\x08\x48\x8D\xF0\xF8\x60\xD7\x9D" 2771 + "\xE9\xDE\x40\xAD\x0D\xAD\x0D\x58" 2772 + "\x2A\x98\x35\xFE\xF7\xDD\x4B\x40" 2773 + "\xDE\xB0\x05\xD9\x7B\x09\x4D\xBC" 2774 + "\x42\xC0\xF1\x15\x0B\xFA\x26\x6B" 2775 + "\xC6\x12\x13\x4F\xCB\x35\xBA\x35" 2776 + "\xDD\x7A\x36\x9C\x12\x57\x55\x83" 2777 + "\x78\x58\x09\xD0\xB0\xCF\x7C\x5C" 2778 + "\x38\xCF\xBD\x79\x5B\x13\x4D\x97" 2779 + "\xC1\x85\x6F\x97\xC9\xE8\xC2\xA4" 2780 + "\x98\xE2\xBD\x77\x6B\x53\x39\x1A" 2781 + "\x28\x10\xE7\xE0\xE7\xDE\x9D\x69" 2782 + "\x78\x6F\x8E\xD2\xD9\x5D\xD2\x15" 2783 + "\x9E\xB5\x4D\x8C\xC0\x78\x22\x2F" 2784 + "\x17\x11\x2E\x99\xD7\xE3\xA4\x4F" 2785 + "\x65\xA5\x6B\x03\x2C\x35\x6F\xDA" 2786 + "\x8A\x19\x08\xE1\x08\x48\x59\x51" 2787 + "\x53\x4B\xD1\xDF\xDA\x14\x50\x5F" 2788 + "\xDF\xB5\x8C\xDF\xC6\xFD\x85\xFA" 2789 + "\xD4\xF9\x64\x45\x65\x0D\x7D\xF4" 2790 + "\xC8\xCD\x3F\x32\xAF\xDD\x30\xED" 2791 + "\x7B\xAA\xAC\xF0\xDA\x7F\xDF\x75" 2792 + "\x1C\xA4\xF1\xCB\x5E\x4F\x0B\xB4" 2793 + "\x97\x73\x28\xDE\xCF\xAF\x82\xBD" 2794 + "\xC4\xBA\xB4\x9C\x0D\x16\x77\x42" 2795 + "\x42\x39\x7C\x53\xA4\xD4\xDD\x40" 2796 + "\x5C\x60\x1F\x6E\xA7\xE2\xDC\xE7" 2797 + "\x32\x0F\x05\x2F\xF2\x4C\x95\x3B" 2798 + "\xF2\x79\xD9", 2799 + .rlen = 499, 2800 + .also_non_np = 1, 2801 + .np = 2, 2802 + .tap = { 499 - 16, 16 }, 2803 + }, 2804 + }; 2805 + 2806 + static struct cipher_testvec des3_ede_ctr_dec_tv_template[] = { 2807 + { /* Generated with Crypto++ */ 2808 + .key = "\x9C\xD6\xF3\x9C\xB9\x5A\x67\x00" 2809 + "\x5A\x67\x00\x2D\xCE\xEB\x2D\xCE" 2810 + "\xEB\xB4\x51\x72\xB4\x51\x72\x1F", 2811 + .klen = 24, 2812 + .iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" 2813 + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD", 2814 + .input = "\x07\xC2\x08\x20\x72\x1F\x49\xEF" 2815 + "\x19\xCD\x6F\x32\x53\x05\x22\x15" 2816 + "\xA2\x85\x2B\xDB\x85\xD2\xD8\xB9" 2817 + "\xDD\x0D\x1B\x45\xCB\x69\x11\xD4" 2818 + "\xEA\xBE\xB2\x45\x5D\x0C\xAE\xBE" 2819 + "\xA0\xC1\x27\xAC\x65\x9F\x53\x7E" 2820 + "\xAF\xC2\x1B\xB5\xB8\x6D\x36\x0C" 2821 + "\x25\xC0\xF8\x6D\x0B\x29\x01\xDA" 2822 + "\x13\x78\xDC\x89\x12\x12\x43\xFA" 2823 + "\xF6\x12\xEF\x8D\x87\x62\x78\x83" 2824 + "\xE2\xBE\x41\x20\x4C\x6D\x35\x1B" 2825 + "\xD1\x0C\x30\xCF\xE2\xDE\x2B\x03" 2826 + "\xBF\x45\x73\xD4\xE5\x59\x95\xD1" 2827 + "\xB3\x9B\x27\x62\x97\xBD\xDE\x7F" 2828 + "\xA4\xD2\x39\x80\xAA\x50\x23\xF0" 2829 + "\x74\x88\x3D\xA8\x6A\x18\x79\x3B" 2830 + "\xC4\x96\x6C\x8D\x22\x40\x92\x6E" 2831 + "\xD6\xAD\x2A\x1F\xDE\x63\xC0\xE7" 2832 + "\x07\xF7\x2D\xF7\xB5\xF3\xF0\xCC" 2833 + "\x01\x7C\x2A\x9B\xC2\x10\xCA\xAA" 2834 + "\xFD\x2B\x3F\xC5\xF3\xF6\xFC\x9B" 2835 + "\x45\xDB\x53\xE4\x5B\xF3\xC9\x7B" 2836 + "\x8E\x52\xFF\xC8\x02\xB8\xAC\x9D" 2837 + "\xA1\x00\x39\xDA\x3D\x2D\x0E\x01" 2838 + "\x09\x7D\x8D\x5E\xBE\x53\xB9\xB0" 2839 + "\x8E\xE7\xE2\x96\x6A\xB2\x78\xEA" 2840 + "\xDE\x23\x8B\xA5\xFA\x5C\xE3\xDA" 2841 + "\xBF\x8E\x31\x6A\x55\xD1\x6A\xB2" 2842 + "\xB5\x46\x6F\xA5\xF0\xEE\xBA\x1F" 2843 + "\x9F\x98\xB0\x66\x4F\xD0\x3F\xA9" 2844 + "\xDF\x5F\x58\xC4\xF4\xFF\x75\x5C" 2845 + "\x40\x3A\x09\x7E\x6E\x1C\x97\xD4" 2846 + "\xCC\xE7\xE7\x71\xCF\x0B\x15\x08" 2847 + "\x71\xFA\x07\x97\xCD\xE6\xCA\x1D" 2848 + "\x14\x28\x0C\xCF\x99\x13\x7A\xF1" 2849 + "\xEB\xFA\xFA\x92\x07\xDE\x1D\xA1" 2850 + "\xD3\x36\x69\xFE\x51\x4D\x9F\x2E" 2851 + "\x83\x37\x4F\x1F\x48\x30\xED\x04" 2852 + "\x4D\xA4\xEF\x3A\xCA\x76\xF4\x1C" 2853 + "\x41\x8F\x63\x37\x78\x2F\x86\xA6" 2854 + "\xEF\x41\x7E\xD2\xAF\x88\xAB\x67" 2855 + "\x52\x71\xC3\x8E\xF8\x26\x93\x72" 2856 + "\xAA\xD6\x0E\xE7\x0B\x46\xB1\x3A" 2857 + "\xB4\x08\xA9\xA8\xA0\xCF\x20\x0C" 2858 + "\x52\xBC\x8B\x05\x56\xB2\xBC\x31" 2859 + "\x9B\x74\xB9\x29\x29\x96\x9A\x50" 2860 + "\xDC\x45\xDC\x1A\xEB\x0C\x64\xD4" 2861 + "\xD3\x05\x7E\x59\x55\xC3\xF4\x90" 2862 + "\xC2\xAB\xF8\x9B\x8A\xDA\xCE\xA1" 2863 + "\xC3\xF4\xAD\x77\xDD\x44\xC8\xAC" 2864 + "\xA3\xF1\xC9\xD2\x19\x5C\xB0\xCA" 2865 + "\xA2\x34\xC1\xF7\x6C\xFD\xAC\x65" 2866 + "\x32\xDC\x48\xC4\xF2\x00\x6B\x77" 2867 + "\xF1\x7D\x76\xAC\xC0\x31\x63\x2A" 2868 + "\xA5\x3A\x62\xC8\x91\xB1\x03\x65" 2869 + "\xCB\x43\xD1\x06\xDF\xC3\x67\xBC" 2870 + "\xDC\xE0\xCD\x35\xCE\x49\x65\xA0" 2871 + "\x52\x7B\xA7\x0D\x07\xA9\x1B\xB0" 2872 + "\x40\x77\x72\xC2\xEA\x0E\x3A\x78" 2873 + "\x46\xB9\x91\xB6\xE7\x3D\x51\x42" 2874 + "\xFD\x51\xB0\xC6\x2C\x63\x13\x78" 2875 + "\x5C\xEE\xFC\xCF\xC4\x70\x00\x34", 2876 + .ilen = 496, 2877 + .result = "\x05\xEC\x77\xFB\x42\xD5\x59\x20" 2878 + "\x8B\x12\x86\x69\xF0\x5B\xCF\x56" 2879 + "\x39\xAD\x34\x9F\x66\xEA\x7D\xC4" 2880 + "\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A" 2881 + "\xFE\x41\x28\x5C\x27\x8E\x11\x85" 2882 + "\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B" 2883 + "\x92\x65\xE9\x70\xDB\x4F\xD6\xB9" 2884 + "\x00\xB4\x1F\xE6\x49\xFD\x44\x2F" 2885 + "\x53\x3A\x8D\x14\x98\x63\xCA\x5D" 2886 + "\xC1\xA8\x33\xA7\x0E\x91\x78\xEC" 2887 + "\x77\xDE\x42\xD5\xBC\x07\x8B\x12" 2888 + "\xE5\x4C\xF0\x5B\x22\x56\x39\x80" 2889 + "\x6B\x9F\x66\xC9\x50\xC4\xAF\x36" 2890 + "\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41" 2891 + "\x28\xB3\x1A\x8E\x11\xF8\x43\xF7" 2892 + "\x5E\x21\x55\x3C\x87\x6E\x92\x65" 2893 + "\xCC\x57\xDB\xA2\x35\xB9\x00\xEB" 2894 + "\x72\xE6\x49\xD0\x44\x2F\xB6\x19" 2895 + "\x8D\x14\xFF\x46\xCA\x5D\x24\xA8" 2896 + "\x33\x9A\x6D\x91\x78\xC3\x77\xDE" 2897 + "\xA1\x08\xBC\x07\xEE\x71\xE5\x4C" 2898 + "\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2" 2899 + "\x45\xC9\x50\x3B\xAF\x36\x99\x60" 2900 + "\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3" 2901 + "\x1A\xED\x74\xF8\x43\x2A\x5E\x21" 2902 + "\x88\x13\x87\x6E\xF1\x58\xCC\x57" 2903 + "\x3E\xA2\x35\x9C\x67\xEB\x72\xC5" 2904 + "\x49\xD0\xBB\x02\xB6\x19\xE0\x4B" 2905 + "\xFF\x46\x29\x5D\x24\x8F\x16\x9A" 2906 + "\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08" 2907 + "\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE" 2908 + "\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C" 2909 + "\x50\x3B\x82\x15\x99\x60\xCB\x52" 2910 + "\xC6\xA9\x30\xA4\x0F\x96\x79\xED" 2911 + "\x74\xDF\x43\x2A\xBD\x04\x88\x13" 2912 + "\xFA\x4D\xF1\x58\x23\x57\x3E\x81" 2913 + "\x68\x9C\x67\xCE\x51\xC5\xAC\x37" 2914 + "\xBB\x02\x95\x7C\xE0\x4B\xD2\x46" 2915 + "\x29\xB0\x1B\x8F\x16\xF9\x40\xF4" 2916 + "\x5F\x26\xAA\x3D\x84\x6F\x93\x7A" 2917 + "\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8" 2918 + "\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E" 2919 + "\x82\x15\xFC\x47\xCB\x52\x25\xA9" 2920 + "\x30\x9B\x62\x96\x79\xC0\x74\xDF" 2921 + "\xA6\x09\xBD\x04\xEF\x76\xFA\x4D" 2922 + "\xD4\x58\x23\x8A\x1D\x81\x68\xF3" 2923 + "\x5A\xCE\x51\x38\xAC\x37\x9E\x61" 2924 + "\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0" 2925 + "\x1B\xE2\x75\xF9\x40\x2B\x5F\x26" 2926 + "\x89\x10\x84\x6F\xF6\x59\xCD\x54" 2927 + "\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA" 2928 + "\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48" 2929 + "\xFC\x47\x2E\x52\x25\x8C\x17\x9B" 2930 + "\x62\xF5\x5C\xC0\xAB\x32\xA6\x09" 2931 + "\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF" 2932 + "\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D" 2933 + "\x51\x38\x83\x6A\x9E\x61\xC8\x53" 2934 + "\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2" 2935 + "\x75\xDC\x40\x2B\xB2\x05\x89\x10" 2936 + "\xFB\x42\xF6\x59\x20\x54\x3F\x86" 2937 + "\x69\x9D\x64\xCF\x56\xDA\xAD\x34" 2938 + "\xB8\x03\xEA\x7D\xE1\x48\xD3\x47", 2939 + .rlen = 496, 2940 + .also_non_np = 1, 2941 + .np = 2, 2942 + .tap = { 496 - 16, 16 }, 2943 + }, { /* Generated with Crypto++ */ 2944 + .key = "\x9C\xD6\xF3\x9C\xB9\x5A\x67\x00" 2945 + "\x5A\x67\x00\x2D\xCE\xEB\x2D\xCE" 2946 + "\xEB\xB4\x51\x72\xB4\x51\x72\x1F", 2947 + .klen = 24, 2948 + .iv = "\xB2\xD7\x48\xED\x06\x44\xF9\x12" 2949 + "\xB7\x28\x4D\x83\x24\x59\xF2\x17", 2950 + .input = "\x23\xFF\x5C\x99\x75\xBB\x1F\xD4" 2951 + "\xBC\x27\x9D\x36\x60\xA9\xC9\xF7" 2952 + "\x94\x9D\x1B\xFF\x8E\x95\x57\x89" 2953 + "\x8C\x2E\x33\x70\x43\x61\xE6\xD2" 2954 + "\x82\x33\x63\xB6\xC4\x34\x5E\xF8" 2955 + "\x96\x07\xA7\xD2\x3B\x8E\xC9\xAA" 2956 + "\x7C\xA0\x55\x89\x2E\xE1\x85\x25" 2957 + "\x14\x04\xDA\x6B\xE0\xEE\x56\xCF" 2958 + "\x08\x2E\x69\xD4\x54\xDE\x22\x84" 2959 + "\x69\xA6\xA7\xD3\x3A\x9A\xE8\x05" 2960 + "\x63\xDB\xBF\x46\x3A\x26\x2E\x0F" 2961 + "\x58\x5C\x46\xEA\x07\x40\xDA\xE1" 2962 + "\x14\x1D\xCD\x4F\x06\xC0\xCA\x54" 2963 + "\x1E\xC9\x45\x85\x67\x7C\xC2\xB5" 2964 + "\x97\x5D\x61\x78\x2E\x46\xEC\x6A" 2965 + "\x53\xF4\xD0\xAE\xFA\xB4\x86\x29" 2966 + "\x9F\x17\x33\x24\xD8\xB9\xB2\x05" 2967 + "\x93\x88\xEA\xF7\xA0\x70\x69\x49" 2968 + "\x88\x6B\x73\x40\x41\x8D\xD9\xD9" 2969 + "\x7E\x78\xE9\xBE\x6C\x14\x22\x7A" 2970 + "\x66\xE1\xDA\xED\x10\xFF\x69\x1D" 2971 + "\xB9\xAA\xF2\x56\x72\x1B\x23\xE2" 2972 + "\x45\x54\x8B\xA3\x70\x23\xB4\x5E" 2973 + "\x8E\x96\xC9\x05\x00\xB3\xB6\xC2" 2974 + "\x2A\x02\x43\x7A\x62\xD5\xC8\xD2" 2975 + "\xC2\xD0\xE4\x78\xA1\x7B\x3E\xE8" 2976 + "\x9F\x7F\x7D\x40\x54\x30\x3B\xC0" 2977 + "\xA5\x54\xFD\xCA\x25\xEC\x44\x3E" 2978 + "\x1A\x54\x7F\x88\xD0\xE1\xFE\x71" 2979 + "\xCE\x05\x49\x89\xBA\xD6\x72\xE7" 2980 + "\xD6\x5D\x3F\xA2\xD9\xAB\xC5\x02" 2981 + "\xD6\x43\x22\xAF\xA2\xE4\x80\x85" 2982 + "\xD7\x87\xB9\xEA\x43\xDB\xC8\xEF" 2983 + "\x5C\x82\x2E\x98\x0D\x30\x41\x6B" 2984 + "\x08\x48\x8D\xF0\xF8\x60\xD7\x9D" 2985 + "\xE9\xDE\x40\xAD\x0D\xAD\x0D\x58" 2986 + "\x2A\x98\x35\xFE\xF7\xDD\x4B\x40" 2987 + "\xDE\xB0\x05\xD9\x7B\x09\x4D\xBC" 2988 + "\x42\xC0\xF1\x15\x0B\xFA\x26\x6B" 2989 + "\xC6\x12\x13\x4F\xCB\x35\xBA\x35" 2990 + "\xDD\x7A\x36\x9C\x12\x57\x55\x83" 2991 + "\x78\x58\x09\xD0\xB0\xCF\x7C\x5C" 2992 + "\x38\xCF\xBD\x79\x5B\x13\x4D\x97" 2993 + "\xC1\x85\x6F\x97\xC9\xE8\xC2\xA4" 2994 + "\x98\xE2\xBD\x77\x6B\x53\x39\x1A" 2995 + "\x28\x10\xE7\xE0\xE7\xDE\x9D\x69" 2996 + "\x78\x6F\x8E\xD2\xD9\x5D\xD2\x15" 2997 + "\x9E\xB5\x4D\x8C\xC0\x78\x22\x2F" 2998 + "\x17\x11\x2E\x99\xD7\xE3\xA4\x4F" 2999 + "\x65\xA5\x6B\x03\x2C\x35\x6F\xDA" 3000 + "\x8A\x19\x08\xE1\x08\x48\x59\x51" 3001 + "\x53\x4B\xD1\xDF\xDA\x14\x50\x5F" 3002 + "\xDF\xB5\x8C\xDF\xC6\xFD\x85\xFA" 3003 + "\xD4\xF9\x64\x45\x65\x0D\x7D\xF4" 3004 + "\xC8\xCD\x3F\x32\xAF\xDD\x30\xED" 3005 + "\x7B\xAA\xAC\xF0\xDA\x7F\xDF\x75" 3006 + "\x1C\xA4\xF1\xCB\x5E\x4F\x0B\xB4" 3007 + "\x97\x73\x28\xDE\xCF\xAF\x82\xBD" 3008 + "\xC4\xBA\xB4\x9C\x0D\x16\x77\x42" 3009 + "\x42\x39\x7C\x53\xA4\xD4\xDD\x40" 3010 + "\x5C\x60\x1F\x6E\xA7\xE2\xDC\xE7" 3011 + "\x32\x0F\x05\x2F\xF2\x4C\x95\x3B" 3012 + "\xF2\x79\xD9", 3013 + .ilen = 499, 3014 + .result = "\x05\xEC\x77\xFB\x42\xD5\x59\x20" 3015 + "\x8B\x12\x86\x69\xF0\x5B\xCF\x56" 3016 + "\x39\xAD\x34\x9F\x66\xEA\x7D\xC4" 3017 + "\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A" 3018 + "\xFE\x41\x28\x5C\x27\x8E\x11\x85" 3019 + "\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B" 3020 + "\x92\x65\xE9\x70\xDB\x4F\xD6\xB9" 3021 + "\x00\xB4\x1F\xE6\x49\xFD\x44\x2F" 3022 + "\x53\x3A\x8D\x14\x98\x63\xCA\x5D" 3023 + "\xC1\xA8\x33\xA7\x0E\x91\x78\xEC" 3024 + "\x77\xDE\x42\xD5\xBC\x07\x8B\x12" 3025 + "\xE5\x4C\xF0\x5B\x22\x56\x39\x80" 3026 + "\x6B\x9F\x66\xC9\x50\xC4\xAF\x36" 3027 + "\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41" 3028 + "\x28\xB3\x1A\x8E\x11\xF8\x43\xF7" 3029 + "\x5E\x21\x55\x3C\x87\x6E\x92\x65" 3030 + "\xCC\x57\xDB\xA2\x35\xB9\x00\xEB" 3031 + "\x72\xE6\x49\xD0\x44\x2F\xB6\x19" 3032 + "\x8D\x14\xFF\x46\xCA\x5D\x24\xA8" 3033 + "\x33\x9A\x6D\x91\x78\xC3\x77\xDE" 3034 + "\xA1\x08\xBC\x07\xEE\x71\xE5\x4C" 3035 + "\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2" 3036 + "\x45\xC9\x50\x3B\xAF\x36\x99\x60" 3037 + "\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3" 3038 + "\x1A\xED\x74\xF8\x43\x2A\x5E\x21" 3039 + "\x88\x13\x87\x6E\xF1\x58\xCC\x57" 3040 + "\x3E\xA2\x35\x9C\x67\xEB\x72\xC5" 3041 + "\x49\xD0\xBB\x02\xB6\x19\xE0\x4B" 3042 + "\xFF\x46\x29\x5D\x24\x8F\x16\x9A" 3043 + "\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08" 3044 + "\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE" 3045 + "\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C" 3046 + "\x50\x3B\x82\x15\x99\x60\xCB\x52" 3047 + "\xC6\xA9\x30\xA4\x0F\x96\x79\xED" 3048 + "\x74\xDF\x43\x2A\xBD\x04\x88\x13" 3049 + "\xFA\x4D\xF1\x58\x23\x57\x3E\x81" 3050 + "\x68\x9C\x67\xCE\x51\xC5\xAC\x37" 3051 + "\xBB\x02\x95\x7C\xE0\x4B\xD2\x46" 3052 + "\x29\xB0\x1B\x8F\x16\xF9\x40\xF4" 3053 + "\x5F\x26\xAA\x3D\x84\x6F\x93\x7A" 3054 + "\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8" 3055 + "\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E" 3056 + "\x82\x15\xFC\x47\xCB\x52\x25\xA9" 3057 + "\x30\x9B\x62\x96\x79\xC0\x74\xDF" 3058 + "\xA6\x09\xBD\x04\xEF\x76\xFA\x4D" 3059 + "\xD4\x58\x23\x8A\x1D\x81\x68\xF3" 3060 + "\x5A\xCE\x51\x38\xAC\x37\x9E\x61" 3061 + "\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0" 3062 + "\x1B\xE2\x75\xF9\x40\x2B\x5F\x26" 3063 + "\x89\x10\x84\x6F\xF6\x59\xCD\x54" 3064 + "\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA" 3065 + "\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48" 3066 + "\xFC\x47\x2E\x52\x25\x8C\x17\x9B" 3067 + "\x62\xF5\x5C\xC0\xAB\x32\xA6\x09" 3068 + "\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF" 3069 + "\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D" 3070 + "\x51\x38\x83\x6A\x9E\x61\xC8\x53" 3071 + "\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2" 3072 + "\x75\xDC\x40\x2B\xB2\x05\x89\x10" 3073 + "\xFB\x42\xF6\x59\x20\x54\x3F\x86" 3074 + "\x69\x9D\x64\xCF\x56\xDA\xAD\x34" 3075 + "\xB8\x03\xEA\x7D\xE1\x48\xD3\x47" 3076 + "\x2E\xB1\x18", 3077 + .rlen = 499, 3078 + .also_non_np = 1, 3079 + .np = 2, 3080 + .tap = { 499 - 16, 16 }, 3402 3081 }, 3403 3082 }; 3404 3083 ··· 4166 2461 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 4167 2462 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 4168 2463 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 4169 - "\x1E\x92\x29\xC0\x34\xCB\x62\xF9", 4170 - .ilen = 40, 2464 + "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 2465 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 2466 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 2467 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 2468 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 2469 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 2470 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 2471 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 2472 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 2473 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 2474 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 2475 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 2476 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 2477 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 2478 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 2479 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 2480 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 2481 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 2482 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 2483 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 2484 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 2485 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 2486 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 2487 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 2488 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 2489 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 2490 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 2491 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 2492 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 2493 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 2494 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 2495 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 2496 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 2497 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 2498 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 2499 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 2500 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 2501 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 2502 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 2503 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 2504 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 2505 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 2506 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 2507 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 2508 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 2509 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 2510 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 2511 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 2512 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 2513 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 2514 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 2515 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 2516 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 2517 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 2518 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 2519 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 2520 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 2521 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 2522 + "\x2B\xC2\x59\xF0\x64\xFB\x92\x06", 2523 + .ilen = 504, 4171 2524 .result = "\x96\x87\x3D\x0C\x7B\xFB\xBD\x1F" 4172 2525 "\xE3\xC1\x99\x6D\x39\xD4\xC2\x7D" 4173 2526 "\xD7\x87\xA1\xF2\xDF\x51\x71\x26" 4174 2527 "\xC2\xF4\x6D\xFF\xF6\xCD\x6B\x40" 4175 - "\xE1\xB3\xBF\xD4\x38\x2B\xC8\x3B", 4176 - .rlen = 40, 2528 + "\xE1\xB3\xBF\xD4\x38\x2B\xC8\x3B" 2529 + "\xD3\xB2\xD4\x61\xC7\x9F\x06\xE9" 2530 + "\xCD\xF3\x88\x39\x39\x7A\xDF\x19" 2531 + "\xE8\x03\x2A\x0B\x9E\xA0\x2B\x86" 2532 + "\x31\xF8\x9D\xB1\xEE\x78\x9D\xB5" 2533 + "\xCD\x8B\x7C\x2E\xF5\xA2\x2D\x5D" 2534 + "\x6E\x66\xAF\x38\x6C\xD3\x13\xED" 2535 + "\x14\xEA\x5D\xD0\x17\x77\x0F\x4A" 2536 + "\x50\xF2\xD0\x0F\xC8\xF7\x1E\x7B" 2537 + "\x9D\x5B\x54\x65\x4F\x16\x8A\x97" 2538 + "\xF3\xF6\xD4\xAA\x87\x36\x77\x72" 2539 + "\x99\x4A\xB5\x5E\x88\xC3\xCD\x7D" 2540 + "\x1D\x97\xF9\x11\xBD\xE0\x1F\x1F" 2541 + "\x96\x3E\x4B\x22\xF4\xC0\xE6\xB8" 2542 + "\x47\x82\x98\x23\x33\x36\xBC\x1B" 2543 + "\x36\xE7\xF6\xCF\x97\x37\x16\xC0" 2544 + "\x87\x31\x8B\xB0\xDB\x19\x42\xA5" 2545 + "\x1F\x90\x7E\x66\x34\xDD\x5E\xE9" 2546 + "\x4F\xB2\x2B\x9A\xDE\xB3\x5D\x71" 2547 + "\x4D\x68\xF0\xDC\xA6\xEA\xE3\x9B" 2548 + "\x60\x00\x55\x57\x06\x8B\xD5\xB3" 2549 + "\x86\x30\x78\xDA\x33\x9A\x9D\xCC" 2550 + "\xBA\x0B\x81\x06\x77\x43\xC7\xC9" 2551 + "\xDB\x37\x60\x11\x45\x59\x6D\x2D" 2552 + "\x90\x3D\x65\x3E\xD0\x13\xC6\x3C" 2553 + "\x0E\x78\x7D\x9A\x00\xD6\x2F\x0B" 2554 + "\x3B\x53\x19\x1E\xA8\x9B\x11\xD9" 2555 + "\x98\xE4\x7F\xC3\x6E\x51\x24\x70" 2556 + "\x9F\x04\x9C\xC2\x9E\x44\x84\xE3" 2557 + "\xE0\x8A\x44\xA2\x5C\x94\x74\x34" 2558 + "\x37\x52\x7C\x03\xE8\x8E\x97\xE1" 2559 + "\x5B\x5C\x0E\xB0\x70\xFE\x54\x3F" 2560 + "\xD8\x65\xA9\xC5\xCD\xEC\xF4\x45" 2561 + "\x55\xC5\xA7\xA3\x19\x80\x28\x51" 2562 + "\xBE\x64\x4A\xC1\xD4\xE1\xBE\xEB" 2563 + "\x73\x4C\xB6\xF9\x5F\x6D\x82\xBC" 2564 + "\x3E\x42\x14\x49\x88\x51\xBF\x68" 2565 + "\x45\x75\x27\x1B\x0A\x72\xED\xAF" 2566 + "\xDA\xC4\x4D\x67\x0D\xEE\x75\xE3" 2567 + "\x34\xDD\x91\x19\x42\x3A\xCB\xDA" 2568 + "\x38\xFA\x3C\x93\x62\xF2\xE3\x81" 2569 + "\xB3\xE4\xBB\xF6\x0D\x0B\x1D\x09" 2570 + "\x9C\x52\x0D\x50\x63\xA4\xB2\xD2" 2571 + "\x82\xA0\x23\x3F\x1F\xB6\xED\x6E" 2572 + "\xC2\x9C\x1C\xD0\x9A\x40\xB6\xFC" 2573 + "\x36\x56\x6E\x85\x73\xD7\x52\xBA" 2574 + "\x35\x5E\x32\x89\x5D\x42\xF5\x36" 2575 + "\x52\x8D\x46\x7D\xC8\x71\xAD\x33" 2576 + "\xE1\xAF\x6A\xA8\xEC\xBA\x1C\xDC" 2577 + "\xFE\x88\xE6\x16\xE4\xC8\x13\x00" 2578 + "\x3C\xDA\x59\x32\x38\x19\xD5\xEB" 2579 + "\xB6\x7F\x78\x45\x1B\x8E\x07\x8C" 2580 + "\x66\x52\x75\xFF\xAF\xCE\x2D\x2B" 2581 + "\x22\x29\xCA\xB3\x5F\x7F\xE3\x29" 2582 + "\xB2\xB8\x9D\xEB\x16\xC8\xC5\x1D" 2583 + "\xC9\x0D\x59\x82\x27\x57\x9D\x42" 2584 + "\x54\x59\x09\xA5\x3D\xC5\x84\x68" 2585 + "\x56\xEB\x36\x77\x3D\xAA\xB8\xF5" 2586 + "\xC9\x1A\xFB\x5D\xDE\xBB\x43\xF4", 2587 + .rlen = 504, 4177 2588 .also_non_np = 1, 4178 2589 .np = 2, 4179 - .tap = { 40 - 8, 8 }, 2590 + .tap = { 504 - 8, 8 }, 4180 2591 }, 4181 2592 }; 4182 2593 ··· 4358 2537 "\xE3\xC1\x99\x6D\x39\xD4\xC2\x7D" 4359 2538 "\xD7\x87\xA1\xF2\xDF\x51\x71\x26" 4360 2539 "\xC2\xF4\x6D\xFF\xF6\xCD\x6B\x40" 4361 - "\xE1\xB3\xBF\xD4\x38\x2B\xC8\x3B", 4362 - .ilen = 40, 2540 + "\xE1\xB3\xBF\xD4\x38\x2B\xC8\x3B" 2541 + "\xD3\xB2\xD4\x61\xC7\x9F\x06\xE9" 2542 + "\xCD\xF3\x88\x39\x39\x7A\xDF\x19" 2543 + "\xE8\x03\x2A\x0B\x9E\xA0\x2B\x86" 2544 + "\x31\xF8\x9D\xB1\xEE\x78\x9D\xB5" 2545 + "\xCD\x8B\x7C\x2E\xF5\xA2\x2D\x5D" 2546 + "\x6E\x66\xAF\x38\x6C\xD3\x13\xED" 2547 + "\x14\xEA\x5D\xD0\x17\x77\x0F\x4A" 2548 + "\x50\xF2\xD0\x0F\xC8\xF7\x1E\x7B" 2549 + "\x9D\x5B\x54\x65\x4F\x16\x8A\x97" 2550 + "\xF3\xF6\xD4\xAA\x87\x36\x77\x72" 2551 + "\x99\x4A\xB5\x5E\x88\xC3\xCD\x7D" 2552 + "\x1D\x97\xF9\x11\xBD\xE0\x1F\x1F" 2553 + "\x96\x3E\x4B\x22\xF4\xC0\xE6\xB8" 2554 + "\x47\x82\x98\x23\x33\x36\xBC\x1B" 2555 + "\x36\xE7\xF6\xCF\x97\x37\x16\xC0" 2556 + "\x87\x31\x8B\xB0\xDB\x19\x42\xA5" 2557 + "\x1F\x90\x7E\x66\x34\xDD\x5E\xE9" 2558 + "\x4F\xB2\x2B\x9A\xDE\xB3\x5D\x71" 2559 + "\x4D\x68\xF0\xDC\xA6\xEA\xE3\x9B" 2560 + "\x60\x00\x55\x57\x06\x8B\xD5\xB3" 2561 + "\x86\x30\x78\xDA\x33\x9A\x9D\xCC" 2562 + "\xBA\x0B\x81\x06\x77\x43\xC7\xC9" 2563 + "\xDB\x37\x60\x11\x45\x59\x6D\x2D" 2564 + "\x90\x3D\x65\x3E\xD0\x13\xC6\x3C" 2565 + "\x0E\x78\x7D\x9A\x00\xD6\x2F\x0B" 2566 + "\x3B\x53\x19\x1E\xA8\x9B\x11\xD9" 2567 + "\x98\xE4\x7F\xC3\x6E\x51\x24\x70" 2568 + "\x9F\x04\x9C\xC2\x9E\x44\x84\xE3" 2569 + "\xE0\x8A\x44\xA2\x5C\x94\x74\x34" 2570 + "\x37\x52\x7C\x03\xE8\x8E\x97\xE1" 2571 + "\x5B\x5C\x0E\xB0\x70\xFE\x54\x3F" 2572 + "\xD8\x65\xA9\xC5\xCD\xEC\xF4\x45" 2573 + "\x55\xC5\xA7\xA3\x19\x80\x28\x51" 2574 + "\xBE\x64\x4A\xC1\xD4\xE1\xBE\xEB" 2575 + "\x73\x4C\xB6\xF9\x5F\x6D\x82\xBC" 2576 + "\x3E\x42\x14\x49\x88\x51\xBF\x68" 2577 + "\x45\x75\x27\x1B\x0A\x72\xED\xAF" 2578 + "\xDA\xC4\x4D\x67\x0D\xEE\x75\xE3" 2579 + "\x34\xDD\x91\x19\x42\x3A\xCB\xDA" 2580 + "\x38\xFA\x3C\x93\x62\xF2\xE3\x81" 2581 + "\xB3\xE4\xBB\xF6\x0D\x0B\x1D\x09" 2582 + "\x9C\x52\x0D\x50\x63\xA4\xB2\xD2" 2583 + "\x82\xA0\x23\x3F\x1F\xB6\xED\x6E" 2584 + "\xC2\x9C\x1C\xD0\x9A\x40\xB6\xFC" 2585 + "\x36\x56\x6E\x85\x73\xD7\x52\xBA" 2586 + "\x35\x5E\x32\x89\x5D\x42\xF5\x36" 2587 + "\x52\x8D\x46\x7D\xC8\x71\xAD\x33" 2588 + "\xE1\xAF\x6A\xA8\xEC\xBA\x1C\xDC" 2589 + "\xFE\x88\xE6\x16\xE4\xC8\x13\x00" 2590 + "\x3C\xDA\x59\x32\x38\x19\xD5\xEB" 2591 + "\xB6\x7F\x78\x45\x1B\x8E\x07\x8C" 2592 + "\x66\x52\x75\xFF\xAF\xCE\x2D\x2B" 2593 + "\x22\x29\xCA\xB3\x5F\x7F\xE3\x29" 2594 + "\xB2\xB8\x9D\xEB\x16\xC8\xC5\x1D" 2595 + "\xC9\x0D\x59\x82\x27\x57\x9D\x42" 2596 + "\x54\x59\x09\xA5\x3D\xC5\x84\x68" 2597 + "\x56\xEB\x36\x77\x3D\xAA\xB8\xF5" 2598 + "\xC9\x1A\xFB\x5D\xDE\xBB\x43\xF4", 2599 + .ilen = 504, 4363 2600 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 4364 2601 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 4365 2602 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 4366 2603 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 4367 - "\x1E\x92\x29\xC0\x34\xCB\x62\xF9", 4368 - .rlen = 40, 2604 + "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 2605 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 2606 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 2607 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 2608 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 2609 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 2610 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 2611 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 2612 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 2613 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 2614 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 2615 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 2616 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 2617 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 2618 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 2619 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 2620 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 2621 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 2622 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 2623 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 2624 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 2625 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 2626 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 2627 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 2628 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 2629 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 2630 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 2631 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 2632 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 2633 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 2634 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 2635 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 2636 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 2637 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 2638 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 2639 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 2640 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 2641 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 2642 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 2643 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 2644 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 2645 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 2646 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 2647 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 2648 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 2649 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 2650 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 2651 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 2652 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 2653 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 2654 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 2655 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 2656 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 2657 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 2658 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 2659 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 2660 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 2661 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 2662 + "\x2B\xC2\x59\xF0\x64\xFB\x92\x06", 2663 + .rlen = 504, 4369 2664 .also_non_np = 1, 4370 2665 .np = 2, 4371 - .tap = { 40 - 8, 8 }, 2666 + .tap = { 504 - 8, 8 }, 4372 2667 }, 4373 2668 }; 4374 2669 ··· 4515 2578 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 4516 2579 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 4517 2580 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 4518 - "\x1E\x92\x29\xC0\x34\xCB\x62\xF9", 4519 - .ilen = 40, 2581 + "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 2582 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 2583 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 2584 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 2585 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 2586 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 2587 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 2588 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 2589 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 2590 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 2591 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 2592 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 2593 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 2594 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 2595 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 2596 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 2597 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 2598 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 2599 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 2600 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 2601 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 2602 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 2603 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 2604 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 2605 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 2606 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 2607 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 2608 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 2609 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 2610 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 2611 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 2612 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 2613 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 2614 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 2615 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 2616 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 2617 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 2618 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 2619 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 2620 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 2621 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 2622 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 2623 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 2624 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 2625 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 2626 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 2627 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 2628 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 2629 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 2630 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 2631 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 2632 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 2633 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 2634 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 2635 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 2636 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 2637 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 2638 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 2639 + "\x2B\xC2\x59\xF0\x64\xFB\x92\x06", 2640 + .ilen = 504, 4520 2641 .result = "\xB4\xFE\xA5\xBB\x3D\x2C\x27\x06" 4521 2642 "\x06\x2B\x3A\x92\xB2\xF5\x5E\x62" 4522 2643 "\x84\xCD\xF7\x66\x7E\x41\x6C\x8E" 4523 2644 "\x1B\xD9\x02\xB6\x48\xB0\x87\x25" 4524 - "\x01\x9C\x93\x63\x51\x60\x82\xD2", 4525 - .rlen = 40, 2645 + "\x01\x9C\x93\x63\x51\x60\x82\xD2" 2646 + "\x4D\xE5\xC2\xB7\xAE\x60\xD8\xAD" 2647 + "\x9F\xAB\x6C\xFA\x20\x05\xDA\x6F" 2648 + "\x1F\xD1\xD8\x36\x0F\xB5\x16\x69" 2649 + "\x3C\xAF\xB3\x30\x18\x33\xE6\xB5" 2650 + "\x43\x29\x9D\x94\xF4\x2F\x0A\x65" 2651 + "\x40\xB2\xB2\xB2\x42\x89\xEE\x8A" 2652 + "\x60\xD3\x52\xA8\xED\x91\xDF\xE1" 2653 + "\x91\x73\x7C\x28\xA1\x14\xC3\x4C" 2654 + "\x82\x72\x4B\x7D\x7D\x32\xD5\x19" 2655 + "\xE8\xB8\x6B\x30\x21\x09\x0E\x27" 2656 + "\x10\x9D\x2D\x3A\x6A\x4B\x7B\xE6" 2657 + "\x8D\x4E\x02\x32\xFF\x7F\x8E\x13" 2658 + "\xB0\x96\xF4\xC2\xA1\x60\x8A\x69" 2659 + "\xEF\x0F\x86\xD0\x25\x13\x1A\x7C" 2660 + "\x6E\xF0\x41\xA3\xFB\xB3\xAB\x40" 2661 + "\x7D\x19\xA0\x11\x4F\x3E\x1D\x43" 2662 + "\x65\xFE\x15\x40\xD0\x62\x41\x02" 2663 + "\xEA\x0C\x7A\xC3\x84\xEE\xB0\xBE" 2664 + "\xBE\xC8\x57\x51\xCD\x4F\xAD\x5C" 2665 + "\xCC\x79\xBA\x0D\x85\x3A\xED\x6B" 2666 + "\xAC\x6B\xA3\x4D\xBC\xE8\x02\x6A" 2667 + "\xC2\x6D\xBD\x5E\x89\x95\x86\x43" 2668 + "\x2C\x17\x4B\xC6\x40\xA2\xBD\x24" 2669 + "\x04\xF0\x86\x08\x78\x18\x42\xE0" 2670 + "\x39\x1B\x22\x9E\x89\x4C\x04\x6B" 2671 + "\x65\xC5\xB6\x0E\xF6\x63\xFC\xD7" 2672 + "\xAE\x9E\x87\x13\xCC\xD3\x1A\xEC" 2673 + "\xF0\x51\xCC\x93\x68\xFC\xE9\x19" 2674 + "\x7C\x4E\x9B\xCC\x17\xAD\xD2\xFC" 2675 + "\x97\x18\x92\xFF\x15\x11\xCE\xED" 2676 + "\x04\x41\x05\xA3\x92\xFF\x3B\xE6" 2677 + "\xB6\x8C\x90\xC6\xCD\x15\xA0\x04" 2678 + "\x25\x8B\x5D\x5B\x5F\xDB\xAE\x68" 2679 + "\xEF\xB3\x61\x18\xDB\x83\x9B\x39" 2680 + "\xCA\x82\xD1\x88\xF0\xA2\x5C\x02" 2681 + "\x87\xBD\x8D\x8F\xBB\x62\xF0\x35" 2682 + "\x75\x6F\x06\x81\x0A\x97\x4D\xF0" 2683 + "\x43\x12\x73\x77\xDB\x91\x83\x5B" 2684 + "\xE7\x3A\xA6\x07\x7B\xBF\x2C\x50" 2685 + "\x94\xDE\x7B\x65\xDA\x1C\xF1\x9F" 2686 + "\x7E\x12\x40\xB2\x3E\x19\x23\xF1" 2687 + "\x7C\x1B\x5F\xA8\xF3\xAC\x63\x87" 2688 + "\xEB\x3E\x0C\xBE\xA3\x63\x97\x88" 2689 + "\x8D\x27\xC6\x2A\xF8\xF2\x67\x9A" 2690 + "\x0D\x14\x16\x2B\x6F\xCB\xD4\x76" 2691 + "\x14\x48\x2E\xDE\x2A\x44\x5E\x45" 2692 + "\xF1\x97\x82\xEF\xB7\xAE\xED\x3A" 2693 + "\xED\x73\xD3\x79\xF7\x38\x1D\xD0" 2694 + "\xC5\xF8\x69\x83\x28\x84\x87\x56" 2695 + "\x3F\xAE\x81\x04\x79\x1F\xD1\x09" 2696 + "\xC5\xE5\x05\x0D\x64\x16\xCE\x42" 2697 + "\xC5\xF8\xDB\x57\x89\x33\x22\xFC" 2698 + "\xB4\xD7\x94\xB9\xF3\xCC\x02\x90" 2699 + "\x02\xBA\x55\x1E\x24\x3E\x02\x1D" 2700 + "\xC6\xCD\x8F\xD9\xBD\xED\xB0\x51" 2701 + "\xCD\xE9\xD5\x0C\xFE\x12\x39\xA9" 2702 + "\x93\x9B\xEE\xB5\x97\x41\xD2\xA0" 2703 + "\xB4\x98\xD8\x6B\x74\xE7\x65\xF4", 2704 + .rlen = 504, 4526 2705 .also_non_np = 1, 4527 2706 .np = 2, 4528 - .tap = { 40 - 8, 8 }, 2707 + .tap = { 504 - 8, 8 }, 4529 2708 }, 4530 2709 }; 4531 2710 ··· 4672 2619 "\x06\x2B\x3A\x92\xB2\xF5\x5E\x62" 4673 2620 "\x84\xCD\xF7\x66\x7E\x41\x6C\x8E" 4674 2621 "\x1B\xD9\x02\xB6\x48\xB0\x87\x25" 4675 - "\x01\x9C\x93\x63\x51\x60\x82\xD2", 4676 - .ilen = 40, 2622 + "\x01\x9C\x93\x63\x51\x60\x82\xD2" 2623 + "\x4D\xE5\xC2\xB7\xAE\x60\xD8\xAD" 2624 + "\x9F\xAB\x6C\xFA\x20\x05\xDA\x6F" 2625 + "\x1F\xD1\xD8\x36\x0F\xB5\x16\x69" 2626 + "\x3C\xAF\xB3\x30\x18\x33\xE6\xB5" 2627 + "\x43\x29\x9D\x94\xF4\x2F\x0A\x65" 2628 + "\x40\xB2\xB2\xB2\x42\x89\xEE\x8A" 2629 + "\x60\xD3\x52\xA8\xED\x91\xDF\xE1" 2630 + "\x91\x73\x7C\x28\xA1\x14\xC3\x4C" 2631 + "\x82\x72\x4B\x7D\x7D\x32\xD5\x19" 2632 + "\xE8\xB8\x6B\x30\x21\x09\x0E\x27" 2633 + "\x10\x9D\x2D\x3A\x6A\x4B\x7B\xE6" 2634 + "\x8D\x4E\x02\x32\xFF\x7F\x8E\x13" 2635 + "\xB0\x96\xF4\xC2\xA1\x60\x8A\x69" 2636 + "\xEF\x0F\x86\xD0\x25\x13\x1A\x7C" 2637 + "\x6E\xF0\x41\xA3\xFB\xB3\xAB\x40" 2638 + "\x7D\x19\xA0\x11\x4F\x3E\x1D\x43" 2639 + "\x65\xFE\x15\x40\xD0\x62\x41\x02" 2640 + "\xEA\x0C\x7A\xC3\x84\xEE\xB0\xBE" 2641 + "\xBE\xC8\x57\x51\xCD\x4F\xAD\x5C" 2642 + "\xCC\x79\xBA\x0D\x85\x3A\xED\x6B" 2643 + "\xAC\x6B\xA3\x4D\xBC\xE8\x02\x6A" 2644 + "\xC2\x6D\xBD\x5E\x89\x95\x86\x43" 2645 + "\x2C\x17\x4B\xC6\x40\xA2\xBD\x24" 2646 + "\x04\xF0\x86\x08\x78\x18\x42\xE0" 2647 + "\x39\x1B\x22\x9E\x89\x4C\x04\x6B" 2648 + "\x65\xC5\xB6\x0E\xF6\x63\xFC\xD7" 2649 + "\xAE\x9E\x87\x13\xCC\xD3\x1A\xEC" 2650 + "\xF0\x51\xCC\x93\x68\xFC\xE9\x19" 2651 + "\x7C\x4E\x9B\xCC\x17\xAD\xD2\xFC" 2652 + "\x97\x18\x92\xFF\x15\x11\xCE\xED" 2653 + "\x04\x41\x05\xA3\x92\xFF\x3B\xE6" 2654 + "\xB6\x8C\x90\xC6\xCD\x15\xA0\x04" 2655 + "\x25\x8B\x5D\x5B\x5F\xDB\xAE\x68" 2656 + "\xEF\xB3\x61\x18\xDB\x83\x9B\x39" 2657 + "\xCA\x82\xD1\x88\xF0\xA2\x5C\x02" 2658 + "\x87\xBD\x8D\x8F\xBB\x62\xF0\x35" 2659 + "\x75\x6F\x06\x81\x0A\x97\x4D\xF0" 2660 + "\x43\x12\x73\x77\xDB\x91\x83\x5B" 2661 + "\xE7\x3A\xA6\x07\x7B\xBF\x2C\x50" 2662 + "\x94\xDE\x7B\x65\xDA\x1C\xF1\x9F" 2663 + "\x7E\x12\x40\xB2\x3E\x19\x23\xF1" 2664 + "\x7C\x1B\x5F\xA8\xF3\xAC\x63\x87" 2665 + "\xEB\x3E\x0C\xBE\xA3\x63\x97\x88" 2666 + "\x8D\x27\xC6\x2A\xF8\xF2\x67\x9A" 2667 + "\x0D\x14\x16\x2B\x6F\xCB\xD4\x76" 2668 + "\x14\x48\x2E\xDE\x2A\x44\x5E\x45" 2669 + "\xF1\x97\x82\xEF\xB7\xAE\xED\x3A" 2670 + "\xED\x73\xD3\x79\xF7\x38\x1D\xD0" 2671 + "\xC5\xF8\x69\x83\x28\x84\x87\x56" 2672 + "\x3F\xAE\x81\x04\x79\x1F\xD1\x09" 2673 + "\xC5\xE5\x05\x0D\x64\x16\xCE\x42" 2674 + "\xC5\xF8\xDB\x57\x89\x33\x22\xFC" 2675 + "\xB4\xD7\x94\xB9\xF3\xCC\x02\x90" 2676 + "\x02\xBA\x55\x1E\x24\x3E\x02\x1D" 2677 + "\xC6\xCD\x8F\xD9\xBD\xED\xB0\x51" 2678 + "\xCD\xE9\xD5\x0C\xFE\x12\x39\xA9" 2679 + "\x93\x9B\xEE\xB5\x97\x41\xD2\xA0" 2680 + "\xB4\x98\xD8\x6B\x74\xE7\x65\xF4", 2681 + .ilen = 504, 4677 2682 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 4678 2683 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 4679 2684 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 4680 2685 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 4681 - "\x1E\x92\x29\xC0\x34\xCB\x62\xF9", 4682 - .rlen = 40, 2686 + "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 2687 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 2688 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 2689 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 2690 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 2691 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 2692 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 2693 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 2694 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 2695 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 2696 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 2697 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 2698 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 2699 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 2700 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 2701 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 2702 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 2703 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 2704 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 2705 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 2706 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 2707 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 2708 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 2709 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 2710 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 2711 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 2712 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 2713 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 2714 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 2715 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 2716 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 2717 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 2718 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 2719 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 2720 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 2721 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 2722 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 2723 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 2724 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 2725 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 2726 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 2727 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 2728 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 2729 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 2730 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 2731 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 2732 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 2733 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 2734 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 2735 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 2736 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 2737 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 2738 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 2739 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 2740 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 2741 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 2742 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 2743 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 2744 + "\x2B\xC2\x59\xF0\x64\xFB\x92\x06", 2745 + .rlen = 504, 4683 2746 .also_non_np = 1, 4684 2747 .np = 2, 4685 - .tap = { 40 - 8, 8 }, 2748 + .tap = { 504 - 8, 8 }, 4686 2749 }, 4687 2750 }; 4688 2751 ··· 4814 2645 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 4815 2646 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 4816 2647 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 4817 - "\x1E\x92\x29\xC0\x34\xCB\x62\xF9", 4818 - .ilen = 40, 2648 + "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 2649 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 2650 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 2651 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 2652 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 2653 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 2654 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 2655 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 2656 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 2657 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 2658 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 2659 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 2660 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 2661 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 2662 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 2663 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 2664 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 2665 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 2666 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 2667 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 2668 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 2669 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 2670 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 2671 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 2672 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 2673 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 2674 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 2675 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 2676 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 2677 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 2678 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 2679 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 2680 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 2681 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 2682 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 2683 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 2684 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 2685 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 2686 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 2687 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 2688 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 2689 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 2690 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 2691 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 2692 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 2693 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 2694 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 2695 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 2696 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 2697 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 2698 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 2699 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 2700 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 2701 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 2702 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 2703 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 2704 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 2705 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 2706 + "\x2B\xC2\x59\xF0\x64\xFB\x92\x06", 2707 + .ilen = 504, 4819 2708 .result = "\xC7\xA3\xDF\xB9\x05\xF4\x9E\x8D" 4820 2709 "\x9E\xDF\x38\x18\x83\x07\xEF\xC1" 4821 2710 "\x93\x3C\xAA\xAA\xFE\x06\x42\xCC" 4822 2711 "\x0D\x70\x86\x5A\x44\xAD\x85\x17" 4823 - "\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC", 4824 - .rlen = 40, 2712 + "\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC" 2713 + "\x3D\xA7\xE9\x0A\x5C\x70\x4D\xDE" 2714 + "\x99\x38\x07\xCA\x1D\x21\xC1\x11" 2715 + "\x97\xEB\x98\x75\xC4\x73\x45\x83" 2716 + "\x46\x1C\x9C\x91\x87\xC1\xA0\x56" 2717 + "\x98\xA1\x8B\xDB\x22\x76\xBD\x62" 2718 + "\xA4\xBC\xE8\x86\xDA\xD2\x51\x13" 2719 + "\x13\xD2\x96\x68\x69\x10\x67\x0C" 2720 + "\xD0\x17\x25\x7C\xB2\xAE\x4F\x93" 2721 + "\xA6\x82\x20\xCF\x0F\xA6\x47\x79" 2722 + "\x88\x09\x40\x59\xBD\x12\x64\xB5" 2723 + "\x19\x38\x0D\xFF\x86\xD9\x42\x20" 2724 + "\x81\x0D\x96\x99\xAF\x22\x1F\x94" 2725 + "\x5C\x6E\xEC\xEA\xA3\x39\xCB\x09" 2726 + "\x43\x19\x7F\xD0\xBB\x10\xC2\x49" 2727 + "\xF7\xE9\xF2\xEE\xBF\xF7\xF8\xB3" 2728 + "\x0E\x1A\xF1\x8D\x70\x82\x0C\x04" 2729 + "\xFD\x29\x1A\xAC\xC0\x92\x48\x34" 2730 + "\x6A\xE3\x1D\x4F\xFC\x1C\x72\x6A" 2731 + "\x57\xCB\xAD\xD0\x98\xAB\xB1\x01" 2732 + "\x03\x6A\x45\xDD\x07\x71\x5F\x5B" 2733 + "\xB5\x4A\xE4\xE5\xB9\xB9\xBC\xAC" 2734 + "\x44\xF7\x41\xA4\x5F\x2E\xE9\x28" 2735 + "\xE3\x05\xD2\x94\x78\x4C\x33\x1B" 2736 + "\xBD\xC1\x6E\x51\xD9\xAD\xD9\x86" 2737 + "\x15\x4A\x78\xAE\x7B\xAD\x3B\xBC" 2738 + "\x2F\xE0\x0E\xC5\x7B\x54\x97\x5F" 2739 + "\x60\x51\x14\x65\xF9\x91\xE9\xDA" 2740 + "\x9A\xBC\xFC\x19\x29\x67\xAA\x63" 2741 + "\x5E\xF2\x48\x88\xEB\x79\xE1\xE4" 2742 + "\xF7\xF6\x4C\xA9\xE2\x8C\x3B\xE0" 2743 + "\xED\x52\xAE\x90\x8F\x5B\x98\x34" 2744 + "\x29\x94\x34\x7F\xF9\x6C\x1E\xB6" 2745 + "\xA4\xE7\x2D\x06\x54\x9D\xC3\x02" 2746 + "\xC1\x90\xA4\x72\x31\x6B\x24\x51" 2747 + "\x0B\xB3\x7C\x63\x15\xBA\xAF\x5D" 2748 + "\x41\xE0\x37\x6D\xBE\x41\x58\xDE" 2749 + "\xF2\x07\x62\x99\xBE\xC1\x8C\x0F" 2750 + "\x0F\x28\xFB\x8F\x0E\x1D\x91\xE2" 2751 + "\xDA\x99\x5C\x49\xBA\x9C\xA8\x86" 2752 + "\x82\x63\x11\xB3\x54\x49\x00\x08" 2753 + "\x07\xF2\xE8\x1F\x34\x49\x61\xF4" 2754 + "\x81\xE9\xF6\xA9\x5A\x28\x60\x1F" 2755 + "\x66\x99\x08\x06\xF2\xE8\x2D\xD1" 2756 + "\xD0\x67\xBA\x32\x1F\x02\x86\x7B" 2757 + "\xFB\x79\x3D\xC5\xB1\x7F\x15\xAF" 2758 + "\xD7\xBF\x31\x46\x22\x7F\xAE\x5B" 2759 + "\x8B\x95\x47\xC2\xB1\x62\xA1\xCE" 2760 + "\x52\xAC\x9C\x8B\xC2\x49\x7F\xBC" 2761 + "\x9C\x89\xB8\xB6\xCA\xE3\x8F\xEA" 2762 + "\xAC\xB4\x5D\xE4\x50\xDC\x3A\xB5" 2763 + "\x91\x04\x94\x99\x03\x3B\x42\x6D" 2764 + "\x9C\x4A\x02\xF5\xB5\x38\x98\xA8" 2765 + "\x5C\x97\x2E\x4D\x79\x67\x71\xAF" 2766 + "\xF0\x70\x77\xFF\x2D\xDA\xA0\x9E" 2767 + "\x23\x8D\xD6\xA6\x68\x10\x78\x9A" 2768 + "\x64\xBB\x15\xB8\x56\xCF\xEE\xE5" 2769 + "\x32\x44\x96\x1C\xD8\xEB\x95\xD2" 2770 + "\xF3\x71\xEF\xEB\x4E\xBB\x4D\x29", 2771 + .rlen = 504, 4825 2772 }, { /* Generated with Crypto++ */ 4826 2773 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 4827 2774 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 4950 2665 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 4951 2666 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 4952 2667 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 4953 - "\x6D\x04\x9B", 4954 - .ilen = 43, 2668 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 2669 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 2670 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 2671 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 2672 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 2673 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 2674 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 2675 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 2676 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 2677 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 2678 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 2679 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 2680 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 2681 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 2682 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 2683 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 2684 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 2685 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 2686 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 2687 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 2688 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 2689 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 2690 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 2691 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 2692 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 2693 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 2694 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 2695 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 2696 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 2697 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 2698 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 2699 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 2700 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 2701 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 2702 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 2703 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 2704 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 2705 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 2706 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 2707 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 2708 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 2709 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 2710 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 2711 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 2712 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 2713 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 2714 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 2715 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 2716 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 2717 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 2718 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 2719 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 2720 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 2721 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 2722 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 2723 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 2724 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 2725 + "\x2B\xC2\x59\xF0\x64\xFB\x92", 2726 + .ilen = 503, 4955 2727 .result = "\xC7\xA3\xDF\xB9\x05\xF4\x9E\x8D" 4956 2728 "\x9E\xDF\x38\x18\x83\x07\xEF\xC1" 4957 2729 "\x93\x3C\xAA\xAA\xFE\x06\x42\xCC" 4958 2730 "\x0D\x70\x86\x5A\x44\xAD\x85\x17" 4959 2731 "\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC" 4960 - "\x3D\xA7\xE9", 4961 - .rlen = 43, 2732 + "\x3D\xA7\xE9\x0A\x5C\x70\x4D\xDE" 2733 + "\x99\x38\x07\xCA\x1D\x21\xC1\x11" 2734 + "\x97\xEB\x98\x75\xC4\x73\x45\x83" 2735 + "\x46\x1C\x9C\x91\x87\xC1\xA0\x56" 2736 + "\x98\xA1\x8B\xDB\x22\x76\xBD\x62" 2737 + "\xA4\xBC\xE8\x86\xDA\xD2\x51\x13" 2738 + "\x13\xD2\x96\x68\x69\x10\x67\x0C" 2739 + "\xD0\x17\x25\x7C\xB2\xAE\x4F\x93" 2740 + "\xA6\x82\x20\xCF\x0F\xA6\x47\x79" 2741 + "\x88\x09\x40\x59\xBD\x12\x64\xB5" 2742 + "\x19\x38\x0D\xFF\x86\xD9\x42\x20" 2743 + "\x81\x0D\x96\x99\xAF\x22\x1F\x94" 2744 + "\x5C\x6E\xEC\xEA\xA3\x39\xCB\x09" 2745 + "\x43\x19\x7F\xD0\xBB\x10\xC2\x49" 2746 + "\xF7\xE9\xF2\xEE\xBF\xF7\xF8\xB3" 2747 + "\x0E\x1A\xF1\x8D\x70\x82\x0C\x04" 2748 + "\xFD\x29\x1A\xAC\xC0\x92\x48\x34" 2749 + "\x6A\xE3\x1D\x4F\xFC\x1C\x72\x6A" 2750 + "\x57\xCB\xAD\xD0\x98\xAB\xB1\x01" 2751 + "\x03\x6A\x45\xDD\x07\x71\x5F\x5B" 2752 + "\xB5\x4A\xE4\xE5\xB9\xB9\xBC\xAC" 2753 + "\x44\xF7\x41\xA4\x5F\x2E\xE9\x28" 2754 + "\xE3\x05\xD2\x94\x78\x4C\x33\x1B" 2755 + "\xBD\xC1\x6E\x51\xD9\xAD\xD9\x86" 2756 + "\x15\x4A\x78\xAE\x7B\xAD\x3B\xBC" 2757 + "\x2F\xE0\x0E\xC5\x7B\x54\x97\x5F" 2758 + "\x60\x51\x14\x65\xF9\x91\xE9\xDA" 2759 + "\x9A\xBC\xFC\x19\x29\x67\xAA\x63" 2760 + "\x5E\xF2\x48\x88\xEB\x79\xE1\xE4" 2761 + "\xF7\xF6\x4C\xA9\xE2\x8C\x3B\xE0" 2762 + "\xED\x52\xAE\x90\x8F\x5B\x98\x34" 2763 + "\x29\x94\x34\x7F\xF9\x6C\x1E\xB6" 2764 + "\xA4\xE7\x2D\x06\x54\x9D\xC3\x02" 2765 + "\xC1\x90\xA4\x72\x31\x6B\x24\x51" 2766 + "\x0B\xB3\x7C\x63\x15\xBA\xAF\x5D" 2767 + "\x41\xE0\x37\x6D\xBE\x41\x58\xDE" 2768 + "\xF2\x07\x62\x99\xBE\xC1\x8C\x0F" 2769 + "\x0F\x28\xFB\x8F\x0E\x1D\x91\xE2" 2770 + "\xDA\x99\x5C\x49\xBA\x9C\xA8\x86" 2771 + "\x82\x63\x11\xB3\x54\x49\x00\x08" 2772 + "\x07\xF2\xE8\x1F\x34\x49\x61\xF4" 2773 + "\x81\xE9\xF6\xA9\x5A\x28\x60\x1F" 2774 + "\x66\x99\x08\x06\xF2\xE8\x2D\xD1" 2775 + "\xD0\x67\xBA\x32\x1F\x02\x86\x7B" 2776 + "\xFB\x79\x3D\xC5\xB1\x7F\x15\xAF" 2777 + "\xD7\xBF\x31\x46\x22\x7F\xAE\x5B" 2778 + "\x8B\x95\x47\xC2\xB1\x62\xA1\xCE" 2779 + "\x52\xAC\x9C\x8B\xC2\x49\x7F\xBC" 2780 + "\x9C\x89\xB8\xB6\xCA\xE3\x8F\xEA" 2781 + "\xAC\xB4\x5D\xE4\x50\xDC\x3A\xB5" 2782 + "\x91\x04\x94\x99\x03\x3B\x42\x6D" 2783 + "\x9C\x4A\x02\xF5\xB5\x38\x98\xA8" 2784 + "\x5C\x97\x2E\x4D\x79\x67\x71\xAF" 2785 + "\xF0\x70\x77\xFF\x2D\xDA\xA0\x9E" 2786 + "\x23\x8D\xD6\xA6\x68\x10\x78\x9A" 2787 + "\x64\xBB\x15\xB8\x56\xCF\xEE\xE5" 2788 + "\x32\x44\x96\x1C\xD8\xEB\x95\xD2" 2789 + "\xF3\x71\xEF\xEB\x4E\xBB\x4D", 2790 + .rlen = 503, 4962 2791 .also_non_np = 1, 4963 2792 .np = 2, 4964 - .tap = { 43 - 8, 8 }, 2793 + .tap = { 503 - 8, 8 }, 4965 2794 }, { /* Generated with Crypto++ */ 4966 2795 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 4967 2796 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 5226 2827 "\x9E\xDF\x38\x18\x83\x07\xEF\xC1" 5227 2828 "\x93\x3C\xAA\xAA\xFE\x06\x42\xCC" 5228 2829 "\x0D\x70\x86\x5A\x44\xAD\x85\x17" 5229 - "\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC", 5230 - .ilen = 40, 2830 + "\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC" 2831 + "\x3D\xA7\xE9\x0A\x5C\x70\x4D\xDE" 2832 + "\x99\x38\x07\xCA\x1D\x21\xC1\x11" 2833 + "\x97\xEB\x98\x75\xC4\x73\x45\x83" 2834 + "\x46\x1C\x9C\x91\x87\xC1\xA0\x56" 2835 + "\x98\xA1\x8B\xDB\x22\x76\xBD\x62" 2836 + "\xA4\xBC\xE8\x86\xDA\xD2\x51\x13" 2837 + "\x13\xD2\x96\x68\x69\x10\x67\x0C" 2838 + "\xD0\x17\x25\x7C\xB2\xAE\x4F\x93" 2839 + "\xA6\x82\x20\xCF\x0F\xA6\x47\x79" 2840 + "\x88\x09\x40\x59\xBD\x12\x64\xB5" 2841 + "\x19\x38\x0D\xFF\x86\xD9\x42\x20" 2842 + "\x81\x0D\x96\x99\xAF\x22\x1F\x94" 2843 + "\x5C\x6E\xEC\xEA\xA3\x39\xCB\x09" 2844 + "\x43\x19\x7F\xD0\xBB\x10\xC2\x49" 2845 + "\xF7\xE9\xF2\xEE\xBF\xF7\xF8\xB3" 2846 + "\x0E\x1A\xF1\x8D\x70\x82\x0C\x04" 2847 + "\xFD\x29\x1A\xAC\xC0\x92\x48\x34" 2848 + "\x6A\xE3\x1D\x4F\xFC\x1C\x72\x6A" 2849 + "\x57\xCB\xAD\xD0\x98\xAB\xB1\x01" 2850 + "\x03\x6A\x45\xDD\x07\x71\x5F\x5B" 2851 + "\xB5\x4A\xE4\xE5\xB9\xB9\xBC\xAC" 2852 + "\x44\xF7\x41\xA4\x5F\x2E\xE9\x28" 2853 + "\xE3\x05\xD2\x94\x78\x4C\x33\x1B" 2854 + "\xBD\xC1\x6E\x51\xD9\xAD\xD9\x86" 2855 + "\x15\x4A\x78\xAE\x7B\xAD\x3B\xBC" 2856 + "\x2F\xE0\x0E\xC5\x7B\x54\x97\x5F" 2857 + "\x60\x51\x14\x65\xF9\x91\xE9\xDA" 2858 + "\x9A\xBC\xFC\x19\x29\x67\xAA\x63" 2859 + "\x5E\xF2\x48\x88\xEB\x79\xE1\xE4" 2860 + "\xF7\xF6\x4C\xA9\xE2\x8C\x3B\xE0" 2861 + "\xED\x52\xAE\x90\x8F\x5B\x98\x34" 2862 + "\x29\x94\x34\x7F\xF9\x6C\x1E\xB6" 2863 + "\xA4\xE7\x2D\x06\x54\x9D\xC3\x02" 2864 + "\xC1\x90\xA4\x72\x31\x6B\x24\x51" 2865 + "\x0B\xB3\x7C\x63\x15\xBA\xAF\x5D" 2866 + "\x41\xE0\x37\x6D\xBE\x41\x58\xDE" 2867 + "\xF2\x07\x62\x99\xBE\xC1\x8C\x0F" 2868 + "\x0F\x28\xFB\x8F\x0E\x1D\x91\xE2" 2869 + "\xDA\x99\x5C\x49\xBA\x9C\xA8\x86" 2870 + "\x82\x63\x11\xB3\x54\x49\x00\x08" 2871 + "\x07\xF2\xE8\x1F\x34\x49\x61\xF4" 2872 + "\x81\xE9\xF6\xA9\x5A\x28\x60\x1F" 2873 + "\x66\x99\x08\x06\xF2\xE8\x2D\xD1" 2874 + "\xD0\x67\xBA\x32\x1F\x02\x86\x7B" 2875 + "\xFB\x79\x3D\xC5\xB1\x7F\x15\xAF" 2876 + "\xD7\xBF\x31\x46\x22\x7F\xAE\x5B" 2877 + "\x8B\x95\x47\xC2\xB1\x62\xA1\xCE" 2878 + "\x52\xAC\x9C\x8B\xC2\x49\x7F\xBC" 2879 + "\x9C\x89\xB8\xB6\xCA\xE3\x8F\xEA" 2880 + "\xAC\xB4\x5D\xE4\x50\xDC\x3A\xB5" 2881 + "\x91\x04\x94\x99\x03\x3B\x42\x6D" 2882 + "\x9C\x4A\x02\xF5\xB5\x38\x98\xA8" 2883 + "\x5C\x97\x2E\x4D\x79\x67\x71\xAF" 2884 + "\xF0\x70\x77\xFF\x2D\xDA\xA0\x9E" 2885 + "\x23\x8D\xD6\xA6\x68\x10\x78\x9A" 2886 + "\x64\xBB\x15\xB8\x56\xCF\xEE\xE5" 2887 + "\x32\x44\x96\x1C\xD8\xEB\x95\xD2" 2888 + "\xF3\x71\xEF\xEB\x4E\xBB\x4D\x29", 2889 + .ilen = 504, 5231 2890 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 5232 2891 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 5233 2892 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 5234 2893 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 5235 - "\x1E\x92\x29\xC0\x34\xCB\x62\xF9", 5236 - .rlen = 40, 2894 + "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 2895 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 2896 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 2897 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 2898 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 2899 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 2900 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 2901 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 2902 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 2903 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 2904 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 2905 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 2906 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 2907 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 2908 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 2909 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 2910 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 2911 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 2912 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 2913 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 2914 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 2915 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 2916 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 2917 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 2918 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 2919 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 2920 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 2921 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 2922 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 2923 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 2924 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 2925 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 2926 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 2927 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 2928 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 2929 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 2930 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 2931 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 2932 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 2933 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 2934 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 2935 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 2936 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 2937 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 2938 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 2939 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 2940 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 2941 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 2942 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 2943 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 2944 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 2945 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 2946 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 2947 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 2948 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 2949 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 2950 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 2951 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 2952 + "\x2B\xC2\x59\xF0\x64\xFB\x92\x06", 2953 + .rlen = 504, 5237 2954 }, { /* Generated with Crypto++ */ 5238 2955 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 5239 2956 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 5362 2847 "\x93\x3C\xAA\xAA\xFE\x06\x42\xCC" 5363 2848 "\x0D\x70\x86\x5A\x44\xAD\x85\x17" 5364 2849 "\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC" 5365 - "\x3D\xA7\xE9", 5366 - .ilen = 43, 2850 + "\x3D\xA7\xE9\x0A\x5C\x70\x4D\xDE" 2851 + "\x99\x38\x07\xCA\x1D\x21\xC1\x11" 2852 + "\x97\xEB\x98\x75\xC4\x73\x45\x83" 2853 + "\x46\x1C\x9C\x91\x87\xC1\xA0\x56" 2854 + "\x98\xA1\x8B\xDB\x22\x76\xBD\x62" 2855 + "\xA4\xBC\xE8\x86\xDA\xD2\x51\x13" 2856 + "\x13\xD2\x96\x68\x69\x10\x67\x0C" 2857 + "\xD0\x17\x25\x7C\xB2\xAE\x4F\x93" 2858 + "\xA6\x82\x20\xCF\x0F\xA6\x47\x79" 2859 + "\x88\x09\x40\x59\xBD\x12\x64\xB5" 2860 + "\x19\x38\x0D\xFF\x86\xD9\x42\x20" 2861 + "\x81\x0D\x96\x99\xAF\x22\x1F\x94" 2862 + "\x5C\x6E\xEC\xEA\xA3\x39\xCB\x09" 2863 + "\x43\x19\x7F\xD0\xBB\x10\xC2\x49" 2864 + "\xF7\xE9\xF2\xEE\xBF\xF7\xF8\xB3" 2865 + "\x0E\x1A\xF1\x8D\x70\x82\x0C\x04" 2866 + "\xFD\x29\x1A\xAC\xC0\x92\x48\x34" 2867 + "\x6A\xE3\x1D\x4F\xFC\x1C\x72\x6A" 2868 + "\x57\xCB\xAD\xD0\x98\xAB\xB1\x01" 2869 + "\x03\x6A\x45\xDD\x07\x71\x5F\x5B" 2870 + "\xB5\x4A\xE4\xE5\xB9\xB9\xBC\xAC" 2871 + "\x44\xF7\x41\xA4\x5F\x2E\xE9\x28" 2872 + "\xE3\x05\xD2\x94\x78\x4C\x33\x1B" 2873 + "\xBD\xC1\x6E\x51\xD9\xAD\xD9\x86" 2874 + "\x15\x4A\x78\xAE\x7B\xAD\x3B\xBC" 2875 + "\x2F\xE0\x0E\xC5\x7B\x54\x97\x5F" 2876 + "\x60\x51\x14\x65\xF9\x91\xE9\xDA" 2877 + "\x9A\xBC\xFC\x19\x29\x67\xAA\x63" 2878 + "\x5E\xF2\x48\x88\xEB\x79\xE1\xE4" 2879 + "\xF7\xF6\x4C\xA9\xE2\x8C\x3B\xE0" 2880 + "\xED\x52\xAE\x90\x8F\x5B\x98\x34" 2881 + "\x29\x94\x34\x7F\xF9\x6C\x1E\xB6" 2882 + "\xA4\xE7\x2D\x06\x54\x9D\xC3\x02" 2883 + "\xC1\x90\xA4\x72\x31\x6B\x24\x51" 2884 + "\x0B\xB3\x7C\x63\x15\xBA\xAF\x5D" 2885 + "\x41\xE0\x37\x6D\xBE\x41\x58\xDE" 2886 + "\xF2\x07\x62\x99\xBE\xC1\x8C\x0F" 2887 + "\x0F\x28\xFB\x8F\x0E\x1D\x91\xE2" 2888 + "\xDA\x99\x5C\x49\xBA\x9C\xA8\x86" 2889 + "\x82\x63\x11\xB3\x54\x49\x00\x08" 2890 + "\x07\xF2\xE8\x1F\x34\x49\x61\xF4" 2891 + "\x81\xE9\xF6\xA9\x5A\x28\x60\x1F" 2892 + "\x66\x99\x08\x06\xF2\xE8\x2D\xD1" 2893 + "\xD0\x67\xBA\x32\x1F\x02\x86\x7B" 2894 + "\xFB\x79\x3D\xC5\xB1\x7F\x15\xAF" 2895 + "\xD7\xBF\x31\x46\x22\x7F\xAE\x5B" 2896 + "\x8B\x95\x47\xC2\xB1\x62\xA1\xCE" 2897 + "\x52\xAC\x9C\x8B\xC2\x49\x7F\xBC" 2898 + "\x9C\x89\xB8\xB6\xCA\xE3\x8F\xEA" 2899 + "\xAC\xB4\x5D\xE4\x50\xDC\x3A\xB5" 2900 + "\x91\x04\x94\x99\x03\x3B\x42\x6D" 2901 + "\x9C\x4A\x02\xF5\xB5\x38\x98\xA8" 2902 + "\x5C\x97\x2E\x4D\x79\x67\x71\xAF" 2903 + "\xF0\x70\x77\xFF\x2D\xDA\xA0\x9E" 2904 + "\x23\x8D\xD6\xA6\x68\x10\x78\x9A" 2905 + "\x64\xBB\x15\xB8\x56\xCF\xEE\xE5" 2906 + "\x32\x44\x96\x1C\xD8\xEB\x95\xD2" 2907 + "\xF3\x71\xEF\xEB\x4E\xBB\x4D", 2908 + .ilen = 503, 5367 2909 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 5368 2910 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 5369 2911 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 5370 2912 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 5371 2913 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 5372 - "\x6D\x04\x9B", 5373 - .rlen = 43, 2914 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 2915 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 2916 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 2917 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 2918 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 2919 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 2920 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 2921 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 2922 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 2923 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 2924 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 2925 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 2926 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 2927 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 2928 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 2929 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 2930 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 2931 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 2932 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 2933 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 2934 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 2935 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 2936 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 2937 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 2938 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 2939 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 2940 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 2941 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 2942 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 2943 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 2944 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 2945 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 2946 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 2947 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 2948 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 2949 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 2950 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 2951 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 2952 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 2953 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 2954 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 2955 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 2956 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 2957 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 2958 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 2959 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 2960 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 2961 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 2962 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 2963 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 2964 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 2965 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 2966 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 2967 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 2968 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 2969 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 2970 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 2971 + "\x2B\xC2\x59\xF0\x64\xFB\x92", 2972 + .rlen = 503, 5374 2973 .also_non_np = 1, 5375 2974 .np = 2, 5376 - .tap = { 43 - 8, 8 }, 2975 + .tap = { 503 - 8, 8 }, 5377 2976 }, { /* Generated with Crypto++ */ 5378 2977 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 5379 2978 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 8437 5808 "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 8438 5809 "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 8439 5810 "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 8440 - "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A", 8441 - .ilen = 144, 5811 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 5812 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 5813 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 5814 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 5815 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 5816 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 5817 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 5818 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 5819 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 5820 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 5821 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 5822 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 5823 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 5824 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 5825 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 5826 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 5827 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 5828 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 5829 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 5830 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 5831 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 5832 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 5833 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 5834 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 5835 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 5836 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 5837 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 5838 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 5839 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 5840 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 5841 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 5842 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 5843 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 5844 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 5845 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 5846 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 5847 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 5848 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 5849 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 5850 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 5851 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 5852 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 5853 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 5854 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 5855 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 5856 + .ilen = 496, 8442 5857 .result = "\xFB\xB0\x5D\xDE\xC0\xFE\xFC\xEB" 8443 5858 "\xB1\x80\x10\x43\xDE\x62\x70\xBD" 8444 5859 "\xFA\x8A\x93\xEA\x6B\xF7\xC5\xD7" ··· 8500 5827 "\x9D\x74\x2B\x77\x53\x2D\xE5\xBD" 8501 5828 "\x69\xDA\x7A\x01\xF5\x6A\x70\x39" 8502 5829 "\x30\xD4\x2C\xF2\x8E\x06\x4B\x39" 8503 - "\xB3\x12\x1D\xB3\x17\x46\xE6\xD6", 8504 - .rlen = 144, 5830 + "\xB3\x12\x1D\xB3\x17\x46\xE6\xD6" 5831 + "\xB6\x31\x36\x34\x38\x3C\x1D\x69" 5832 + "\x9F\x47\x28\x9A\x1D\x96\x70\x54" 5833 + "\x8E\x88\xCB\xE0\xF5\x6A\xAE\x0A" 5834 + "\x3C\xD5\x93\x1C\x21\xC9\x14\x3A" 5835 + "\x23\x9C\x9B\x79\xC7\x75\xC8\x39" 5836 + "\xA6\xAC\x65\x9A\x99\x37\xAF\x6D" 5837 + "\xBD\xB5\x32\xFD\xD8\x9C\x95\x7B" 5838 + "\xC6\x6A\x80\x64\xEA\xEF\x6D\x3F" 5839 + "\xA9\xFE\x5B\x16\xA3\xCF\x32\xC8" 5840 + "\xEF\x50\x22\x20\x93\x30\xBE\xE2" 5841 + "\x38\x05\x65\xAF\xBA\xB6\xE4\x72" 5842 + "\xA9\xEE\x05\x42\x88\xBD\x9D\x49" 5843 + "\xAD\x93\xCA\x4D\x45\x11\x43\x4D" 5844 + "\xB8\xF5\x74\x2B\x48\xE7\x21\xE4" 5845 + "\x4E\x3A\x4C\xDE\x65\x7A\x5A\xAD" 5846 + "\x86\xE6\x23\xEC\x6B\xA7\x17\xE6" 5847 + "\xF6\xA1\xAC\x29\xAE\xF9\x9B\x69" 5848 + "\x73\x65\x65\x51\xD6\x0B\x4E\x8C" 5849 + "\x17\x15\x9D\xB0\xCF\xB2\x42\x2B" 5850 + "\x51\xC3\x03\xE8\xB7\x7D\x2D\x39" 5851 + "\xE8\x10\x93\x16\xC8\x68\x4C\x60" 5852 + "\x87\x70\x14\xD0\x01\x57\xCB\x42" 5853 + "\x13\x59\xB1\x7F\x12\x4F\xBB\xC7" 5854 + "\xBD\x2B\xD4\xA9\x12\x26\x4F\xDE" 5855 + "\xFD\x72\xEC\xD7\x6F\x97\x14\x90" 5856 + "\x0E\x37\x13\xE6\x67\x1D\xE5\xFE" 5857 + "\x9E\x18\x3C\x8F\x3A\x3F\x59\x9B" 5858 + "\x71\x80\x05\x35\x3F\x40\x0B\x21" 5859 + "\x76\xE5\xEF\x42\x6C\xDB\x31\x05" 5860 + "\x5F\x05\xCF\x14\xE3\xF0\x61\xA2" 5861 + "\x49\x03\x5E\x77\x2E\x20\xBA\xA1" 5862 + "\xAF\x46\x51\xC0\x2B\xC4\x64\x1E" 5863 + "\x65\xCC\x51\x58\x0A\xDF\xF0\x5F" 5864 + "\x75\x9F\x48\xCD\x81\xEC\xC3\xF6" 5865 + "\xED\xC9\x4B\x7B\x4E\x26\x23\xE1" 5866 + "\xBB\xE9\x83\x0B\xCF\xE4\xDE\x00" 5867 + "\x48\xFF\xBF\x6C\xB4\x72\x16\xEF" 5868 + "\xC7\x46\xEE\x48\x8C\xB8\xAF\x45" 5869 + "\x91\x76\xE7\x6E\x65\x3D\x15\x86" 5870 + "\x10\xF8\xDB\x66\x97\x7C\x43\x4D" 5871 + "\x79\x12\x4E\xCE\x06\xD1\xD1\x6A" 5872 + "\x34\xC1\xC9\xF2\x28\x4A\xCD\x02" 5873 + "\x75\x55\x9B\xFF\x36\x73\xAB\x7C" 5874 + "\xF4\x46\x2E\xEB\xAC\xF3\xD2\xB7", 5875 + .rlen = 496, 8505 5876 .also_non_np = 1, 8506 5877 .np = 2, 8507 - .tap = { 144 - 16, 16 }, 5878 + .tap = { 496 - 16, 16 }, 8508 5879 }, 8509 5880 }; 8510 5881 ··· 8663 5946 "\x9D\x74\x2B\x77\x53\x2D\xE5\xBD" 8664 5947 "\x69\xDA\x7A\x01\xF5\x6A\x70\x39" 8665 5948 "\x30\xD4\x2C\xF2\x8E\x06\x4B\x39" 8666 - "\xB3\x12\x1D\xB3\x17\x46\xE6\xD6", 8667 - .ilen = 144, 5949 + "\xB3\x12\x1D\xB3\x17\x46\xE6\xD6" 5950 + "\xB6\x31\x36\x34\x38\x3C\x1D\x69" 5951 + "\x9F\x47\x28\x9A\x1D\x96\x70\x54" 5952 + "\x8E\x88\xCB\xE0\xF5\x6A\xAE\x0A" 5953 + "\x3C\xD5\x93\x1C\x21\xC9\x14\x3A" 5954 + "\x23\x9C\x9B\x79\xC7\x75\xC8\x39" 5955 + "\xA6\xAC\x65\x9A\x99\x37\xAF\x6D" 5956 + "\xBD\xB5\x32\xFD\xD8\x9C\x95\x7B" 5957 + "\xC6\x6A\x80\x64\xEA\xEF\x6D\x3F" 5958 + "\xA9\xFE\x5B\x16\xA3\xCF\x32\xC8" 5959 + "\xEF\x50\x22\x20\x93\x30\xBE\xE2" 5960 + "\x38\x05\x65\xAF\xBA\xB6\xE4\x72" 5961 + "\xA9\xEE\x05\x42\x88\xBD\x9D\x49" 5962 + "\xAD\x93\xCA\x4D\x45\x11\x43\x4D" 5963 + "\xB8\xF5\x74\x2B\x48\xE7\x21\xE4" 5964 + "\x4E\x3A\x4C\xDE\x65\x7A\x5A\xAD" 5965 + "\x86\xE6\x23\xEC\x6B\xA7\x17\xE6" 5966 + "\xF6\xA1\xAC\x29\xAE\xF9\x9B\x69" 5967 + "\x73\x65\x65\x51\xD6\x0B\x4E\x8C" 5968 + "\x17\x15\x9D\xB0\xCF\xB2\x42\x2B" 5969 + "\x51\xC3\x03\xE8\xB7\x7D\x2D\x39" 5970 + "\xE8\x10\x93\x16\xC8\x68\x4C\x60" 5971 + "\x87\x70\x14\xD0\x01\x57\xCB\x42" 5972 + "\x13\x59\xB1\x7F\x12\x4F\xBB\xC7" 5973 + "\xBD\x2B\xD4\xA9\x12\x26\x4F\xDE" 5974 + "\xFD\x72\xEC\xD7\x6F\x97\x14\x90" 5975 + "\x0E\x37\x13\xE6\x67\x1D\xE5\xFE" 5976 + "\x9E\x18\x3C\x8F\x3A\x3F\x59\x9B" 5977 + "\x71\x80\x05\x35\x3F\x40\x0B\x21" 5978 + "\x76\xE5\xEF\x42\x6C\xDB\x31\x05" 5979 + "\x5F\x05\xCF\x14\xE3\xF0\x61\xA2" 5980 + "\x49\x03\x5E\x77\x2E\x20\xBA\xA1" 5981 + "\xAF\x46\x51\xC0\x2B\xC4\x64\x1E" 5982 + "\x65\xCC\x51\x58\x0A\xDF\xF0\x5F" 5983 + "\x75\x9F\x48\xCD\x81\xEC\xC3\xF6" 5984 + "\xED\xC9\x4B\x7B\x4E\x26\x23\xE1" 5985 + "\xBB\xE9\x83\x0B\xCF\xE4\xDE\x00" 5986 + "\x48\xFF\xBF\x6C\xB4\x72\x16\xEF" 5987 + "\xC7\x46\xEE\x48\x8C\xB8\xAF\x45" 5988 + "\x91\x76\xE7\x6E\x65\x3D\x15\x86" 5989 + "\x10\xF8\xDB\x66\x97\x7C\x43\x4D" 5990 + "\x79\x12\x4E\xCE\x06\xD1\xD1\x6A" 5991 + "\x34\xC1\xC9\xF2\x28\x4A\xCD\x02" 5992 + "\x75\x55\x9B\xFF\x36\x73\xAB\x7C" 5993 + "\xF4\x46\x2E\xEB\xAC\xF3\xD2\xB7", 5994 + .ilen = 496, 8668 5995 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 8669 5996 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 8670 5997 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" ··· 8726 5965 "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 8727 5966 "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 8728 5967 "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 8729 - "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A", 8730 - .rlen = 144, 5968 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 5969 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 5970 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 5971 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 5972 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 5973 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 5974 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 5975 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 5976 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 5977 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 5978 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 5979 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 5980 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 5981 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 5982 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 5983 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 5984 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 5985 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 5986 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 5987 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 5988 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 5989 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 5990 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 5991 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 5992 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 5993 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 5994 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 5995 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 5996 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 5997 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 5998 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 5999 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 6000 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 6001 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 6002 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 6003 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 6004 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 6005 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 6006 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 6007 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 6008 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 6009 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 6010 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 6011 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 6012 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 6013 + .rlen = 496, 8731 6014 .also_non_np = 1, 8732 6015 .np = 2, 8733 - .tap = { 144 - 16, 16 }, 6016 + .tap = { 496 - 16, 16 }, 8734 6017 }, 8735 6018 }; 8736 6019 ··· 8845 6040 "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 8846 6041 "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 8847 6042 "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 8848 - "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A", 8849 - .ilen = 144, 6043 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 6044 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 6045 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 6046 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 6047 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 6048 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 6049 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 6050 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 6051 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 6052 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 6053 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 6054 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 6055 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 6056 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 6057 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 6058 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 6059 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 6060 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 6061 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 6062 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 6063 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 6064 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 6065 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 6066 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 6067 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 6068 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 6069 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 6070 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 6071 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 6072 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 6073 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 6074 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 6075 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 6076 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 6077 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 6078 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 6079 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 6080 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 6081 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 6082 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 6083 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 6084 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 6085 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 6086 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 6087 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 6088 + .ilen = 496, 8850 6089 .result = "\x80\xCF\x11\x41\x1A\xB9\x4B\x9C" 8851 6090 "\xFF\xB7\x6C\xEA\xF0\xAF\x77\x6E" 8852 6091 "\x71\x75\x95\x9D\x4E\x1C\xCF\xAD" ··· 8908 6059 "\x15\x26\xE1\xDB\xA4\x3D\x74\xD2" 8909 6060 "\x41\x1E\x3F\xA9\xC6\x7D\x2A\xAB" 8910 6061 "\x27\xDF\x89\x1D\x86\x3E\xF7\x5A" 8911 - "\xF6\xE3\x0F\xC7\x6B\x4C\x96\x7C", 8912 - .rlen = 144, 6062 + "\xF6\xE3\x0F\xC7\x6B\x4C\x96\x7C" 6063 + "\x2D\x12\xA5\x05\x92\xCB\xD7\x4A" 6064 + "\x4D\x1E\x88\x21\xE1\x63\xB4\xFC" 6065 + "\x4A\xF2\xCD\x35\xB9\xD7\x70\x97" 6066 + "\x5A\x5E\x7E\x96\x52\x20\xDC\x25" 6067 + "\xE9\x6B\x36\xB4\xE0\x98\x85\x2C" 6068 + "\x3C\xD2\xF7\x78\x8A\x73\x26\x9B" 6069 + "\xAF\x0B\x11\xE8\x4D\x67\x23\xE9" 6070 + "\x77\xDF\x58\xF6\x6F\x9E\xA4\xC5" 6071 + "\x10\xA1\x82\x0E\x80\xA0\x8F\x4B" 6072 + "\xA1\xC0\x12\x54\x4E\xC9\x20\x92" 6073 + "\x11\x00\x10\x4E\xB3\x7C\xCA\x63" 6074 + "\xE5\x3F\xD3\x41\x37\xCD\x74\xB7" 6075 + "\xA5\x7C\x61\xB8\x0B\x7A\x7F\x4D" 6076 + "\xFE\x96\x7D\x1B\xBE\x60\x37\xB7" 6077 + "\x81\x92\x66\x67\x15\x1E\x39\x98" 6078 + "\x52\xC0\xF4\x69\xC0\x99\x4F\x5A" 6079 + "\x2E\x32\xAD\x7C\x8B\xE9\xAD\x05" 6080 + "\x55\xF9\x0A\x1F\x97\x5C\xFA\x2B" 6081 + "\xF4\x99\x76\x3A\x6E\x4D\xE1\x4C" 6082 + "\x14\x4E\x6F\x87\xEE\x1A\x85\xA3" 6083 + "\x96\xC6\x66\x49\xDA\x0D\x71\xAC" 6084 + "\x04\x05\x46\xD3\x90\x0F\x64\x64" 6085 + "\x01\x66\x2C\x62\x5D\x34\xD1\xCB" 6086 + "\x3A\x24\xCE\x95\xEF\xAE\x2C\x97" 6087 + "\x0E\x0C\x1D\x36\x49\xEB\xE9\x3D" 6088 + "\x62\xA6\x19\x28\x9E\x26\xB4\x3F" 6089 + "\xD7\x55\x42\x3C\xCD\x72\x0A\xF0" 6090 + "\x7D\xE9\x95\x45\x86\xED\xB1\xE0" 6091 + "\x8D\xE9\xC5\x86\x13\x24\x28\x7D" 6092 + "\x74\xEF\xCA\x50\x12\x7E\x64\x8F" 6093 + "\x1B\xF5\x5B\xFE\xE2\xAC\xFA\xE7" 6094 + "\xBD\x38\x8C\x11\x20\xEF\xB1\xAA" 6095 + "\x7B\xE5\xE5\x78\xAD\x9D\x2D\xA2" 6096 + "\x8E\xDD\x48\xB3\xEF\x18\x92\x7E" 6097 + "\xE6\x75\x0D\x54\x64\x11\xA3\x3A" 6098 + "\xDB\x97\x0F\xD3\xDF\x07\xD3\x7E" 6099 + "\x1E\xD1\x87\xE4\x74\xBB\x46\xF4" 6100 + "\xBA\x23\x2D\x8D\x29\x07\x12\xCF" 6101 + "\x34\xCD\x72\x7F\x01\x30\xE7\xA0" 6102 + "\xF8\xDD\xA8\x08\xF0\xBC\xB1\xA2" 6103 + "\xCC\xE1\x6B\x5F\xBE\xEA\xF1\xE4" 6104 + "\x02\xC4\xAF\xFA\xAD\x31\xF4\xBF" 6105 + "\xFC\x66\xAA\x37\xF2\x37\x39\x6B" 6106 + "\xBC\x08\x3A\xA2\x29\xB3\xDF\xD1", 6107 + .rlen = 496, 8913 6108 .also_non_np = 1, 8914 6109 .np = 2, 8915 - .tap = { 144 - 16, 16 }, 6110 + .tap = { 496 - 16, 16 }, 8916 6111 }, 8917 6112 }; 8918 6113 ··· 8986 6093 "\x15\x26\xE1\xDB\xA4\x3D\x74\xD2" 8987 6094 "\x41\x1E\x3F\xA9\xC6\x7D\x2A\xAB" 8988 6095 "\x27\xDF\x89\x1D\x86\x3E\xF7\x5A" 8989 - "\xF6\xE3\x0F\xC7\x6B\x4C\x96\x7C", 8990 - .ilen = 144, 6096 + "\xF6\xE3\x0F\xC7\x6B\x4C\x96\x7C" 6097 + "\x2D\x12\xA5\x05\x92\xCB\xD7\x4A" 6098 + "\x4D\x1E\x88\x21\xE1\x63\xB4\xFC" 6099 + "\x4A\xF2\xCD\x35\xB9\xD7\x70\x97" 6100 + "\x5A\x5E\x7E\x96\x52\x20\xDC\x25" 6101 + "\xE9\x6B\x36\xB4\xE0\x98\x85\x2C" 6102 + "\x3C\xD2\xF7\x78\x8A\x73\x26\x9B" 6103 + "\xAF\x0B\x11\xE8\x4D\x67\x23\xE9" 6104 + "\x77\xDF\x58\xF6\x6F\x9E\xA4\xC5" 6105 + "\x10\xA1\x82\x0E\x80\xA0\x8F\x4B" 6106 + "\xA1\xC0\x12\x54\x4E\xC9\x20\x92" 6107 + "\x11\x00\x10\x4E\xB3\x7C\xCA\x63" 6108 + "\xE5\x3F\xD3\x41\x37\xCD\x74\xB7" 6109 + "\xA5\x7C\x61\xB8\x0B\x7A\x7F\x4D" 6110 + "\xFE\x96\x7D\x1B\xBE\x60\x37\xB7" 6111 + "\x81\x92\x66\x67\x15\x1E\x39\x98" 6112 + "\x52\xC0\xF4\x69\xC0\x99\x4F\x5A" 6113 + "\x2E\x32\xAD\x7C\x8B\xE9\xAD\x05" 6114 + "\x55\xF9\x0A\x1F\x97\x5C\xFA\x2B" 6115 + "\xF4\x99\x76\x3A\x6E\x4D\xE1\x4C" 6116 + "\x14\x4E\x6F\x87\xEE\x1A\x85\xA3" 6117 + "\x96\xC6\x66\x49\xDA\x0D\x71\xAC" 6118 + "\x04\x05\x46\xD3\x90\x0F\x64\x64" 6119 + "\x01\x66\x2C\x62\x5D\x34\xD1\xCB" 6120 + "\x3A\x24\xCE\x95\xEF\xAE\x2C\x97" 6121 + "\x0E\x0C\x1D\x36\x49\xEB\xE9\x3D" 6122 + "\x62\xA6\x19\x28\x9E\x26\xB4\x3F" 6123 + "\xD7\x55\x42\x3C\xCD\x72\x0A\xF0" 6124 + "\x7D\xE9\x95\x45\x86\xED\xB1\xE0" 6125 + "\x8D\xE9\xC5\x86\x13\x24\x28\x7D" 6126 + "\x74\xEF\xCA\x50\x12\x7E\x64\x8F" 6127 + "\x1B\xF5\x5B\xFE\xE2\xAC\xFA\xE7" 6128 + "\xBD\x38\x8C\x11\x20\xEF\xB1\xAA" 6129 + "\x7B\xE5\xE5\x78\xAD\x9D\x2D\xA2" 6130 + "\x8E\xDD\x48\xB3\xEF\x18\x92\x7E" 6131 + "\xE6\x75\x0D\x54\x64\x11\xA3\x3A" 6132 + "\xDB\x97\x0F\xD3\xDF\x07\xD3\x7E" 6133 + "\x1E\xD1\x87\xE4\x74\xBB\x46\xF4" 6134 + "\xBA\x23\x2D\x8D\x29\x07\x12\xCF" 6135 + "\x34\xCD\x72\x7F\x01\x30\xE7\xA0" 6136 + "\xF8\xDD\xA8\x08\xF0\xBC\xB1\xA2" 6137 + "\xCC\xE1\x6B\x5F\xBE\xEA\xF1\xE4" 6138 + "\x02\xC4\xAF\xFA\xAD\x31\xF4\xBF" 6139 + "\xFC\x66\xAA\x37\xF2\x37\x39\x6B" 6140 + "\xBC\x08\x3A\xA2\x29\xB3\xDF\xD1", 6141 + .ilen = 496, 8991 6142 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 8992 6143 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 8993 6144 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" ··· 9049 6112 "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 9050 6113 "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 9051 6114 "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 9052 - "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A", 9053 - .rlen = 144, 6115 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 6116 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 6117 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 6118 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 6119 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 6120 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 6121 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 6122 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 6123 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 6124 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 6125 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 6126 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 6127 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 6128 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 6129 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 6130 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 6131 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 6132 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 6133 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 6134 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 6135 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 6136 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 6137 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 6138 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 6139 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 6140 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 6141 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 6142 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 6143 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 6144 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 6145 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 6146 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 6147 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 6148 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 6149 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 6150 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 6151 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 6152 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 6153 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 6154 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 6155 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 6156 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 6157 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 6158 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 6159 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 6160 + .rlen = 496, 9054 6161 .also_non_np = 1, 9055 6162 .np = 2, 9056 - .tap = { 144 - 16, 16 }, 6163 + .tap = { 496 - 16, 16 }, 9057 6164 }, 9058 6165 }; 9059 6166 ··· 9127 6146 "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 9128 6147 "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 9129 6148 "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 9130 - "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A", 9131 - .ilen = 144, 6149 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 6150 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 6151 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 6152 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 6153 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 6154 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 6155 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 6156 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 6157 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 6158 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 6159 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 6160 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 6161 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 6162 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 6163 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 6164 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 6165 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 6166 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 6167 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 6168 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 6169 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 6170 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 6171 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 6172 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 6173 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 6174 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 6175 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 6176 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 6177 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 6178 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 6179 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 6180 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 6181 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 6182 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 6183 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 6184 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 6185 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 6186 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 6187 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 6188 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 6189 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 6190 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 6191 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 6192 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 6193 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 6194 + .ilen = 496, 9132 6195 .result = "\x84\x68\xEC\xF2\x1C\x88\x20\xCA" 9133 6196 "\x37\x69\xE3\x3A\x22\x85\x48\x46" 9134 6197 "\x70\xAA\x25\xB4\xCD\x8B\x04\x4E" ··· 9190 6165 "\xBA\x58\x2A\x1C\xDF\xC2\x3A\xA5" 9191 6166 "\x7C\xB5\x12\x89\xED\xBF\xB6\x09" 9192 6167 "\x13\x4F\x7D\x61\x3C\x5C\x27\xFC" 9193 - "\x5D\xE1\x4F\xA1\xEA\xB3\xCA\xB9", 9194 - .rlen = 144, 6168 + "\x5D\xE1\x4F\xA1\xEA\xB3\xCA\xB9" 6169 + "\xE6\xD0\x97\x81\xDE\xD1\xFB\x8A" 6170 + "\x30\xDB\xA3\x5D\xEC\x25\x0B\x86" 6171 + "\x71\xC8\xA7\x67\xE8\xBC\x7D\x4C" 6172 + "\xAE\x82\xD3\x73\x31\x09\xCB\xB3" 6173 + "\x4D\xD4\xC0\x8A\x2B\xFA\xA6\x55" 6174 + "\x39\x0A\xBC\x6E\x75\xAB\xC2\xE2" 6175 + "\x8A\xF2\x26\xCD\x63\x38\x35\xF7" 6176 + "\xAE\x12\x83\xCD\x8A\x9E\x7E\x4C" 6177 + "\xFE\x4D\xD7\xCE\x5C\x6E\x4C\xAF" 6178 + "\xE3\xCD\x76\xA7\x87\xA1\x54\x7C" 6179 + "\xEC\x32\xC7\x83\x2A\xFF\xF8\xEA" 6180 + "\x87\xB2\x47\xA3\x9D\xC2\x9C\xA2" 6181 + "\xB7\x2C\x7C\x1A\x24\xCB\x88\x61" 6182 + "\xFF\xA7\x1A\x16\x01\xDD\x4B\xFC" 6183 + "\x2E\xE0\x48\x67\x09\x42\xCC\x91" 6184 + "\xBE\x20\x38\xC0\x5E\x3B\x95\x00" 6185 + "\xA1\x96\x66\x0B\x8A\xE9\x9E\xF7" 6186 + "\x6B\x34\x0A\x51\xC0\x3B\xEB\x71" 6187 + "\x07\x97\x38\x4B\x5C\x56\x98\x67" 6188 + "\x78\x9C\xD0\x0E\x2B\xB5\x67\x90" 6189 + "\x75\xF8\xFE\x6D\x4E\x85\xCC\x0D" 6190 + "\x18\x06\x15\x9D\x5A\x10\x13\x37" 6191 + "\xA3\xD6\x68\xA2\xDF\x7E\xC7\x12" 6192 + "\xC9\x0D\x4D\x91\xB0\x2A\x55\xFF" 6193 + "\x6F\x73\x13\xDF\x28\xB5\x2A\x2C" 6194 + "\xE4\xFC\x20\xD9\xF1\x7A\x82\xB1" 6195 + "\xCB\x57\xB6\x3D\x8C\xF4\x8E\x27" 6196 + "\x37\xDC\x35\xF3\x79\x01\x53\xA4" 6197 + "\x7B\x37\xDE\x7C\x04\xAE\x50\xDB" 6198 + "\x9B\x1E\x8C\x07\xA7\x52\x49\x50" 6199 + "\x34\x25\x65\xDD\xA9\x8F\x7E\xBD" 6200 + "\x7A\xC9\x36\xAE\xDE\x21\x48\x64" 6201 + "\xC2\x02\xBA\xBE\x11\x1E\x3D\x9C" 6202 + "\x98\x52\xCC\x04\xBD\x5E\x61\x26" 6203 + "\x10\xD3\x21\xD9\x6E\x25\x98\x77" 6204 + "\x8E\x98\x63\xF6\xF6\x52\xFB\x13" 6205 + "\xAA\x30\xF2\xB9\xA4\x43\x53\x39" 6206 + "\x1C\x97\x07\x7E\x6B\xFF\x3D\x43" 6207 + "\xA6\x71\x6B\x66\x8F\x58\x3F\x71" 6208 + "\x90\x47\x40\x92\xE6\x69\xD1\x96" 6209 + "\x34\xB3\x3B\xE5\x43\xE4\xD5\x56" 6210 + "\xB2\xE6\x7E\x86\x7A\x12\x17\x5B" 6211 + "\x30\xF3\x9B\x0D\xFA\x57\xE4\x50" 6212 + "\x40\x53\x77\x8C\x15\xF8\x8D\x13", 6213 + .rlen = 496, 9195 6214 }, { /* Generated with Crypto++ */ 9196 6215 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 9197 6216 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 9262 6193 "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 9263 6194 "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 9264 6195 "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 9265 - "\xF1\x65\xFC", 9266 - .ilen = 147, 6196 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 6197 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 6198 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 6199 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 6200 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 6201 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 6202 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 6203 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 6204 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 6205 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 6206 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 6207 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 6208 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 6209 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 6210 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 6211 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 6212 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 6213 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 6214 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 6215 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 6216 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 6217 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 6218 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 6219 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 6220 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 6221 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 6222 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 6223 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 6224 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 6225 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 6226 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 6227 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 6228 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 6229 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 6230 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 6231 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 6232 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 6233 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 6234 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 6235 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 6236 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 6237 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 6238 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 6239 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 6240 + "\x2B\xC2\x59", 6241 + .ilen = 499, 9267 6242 .result = "\x84\x68\xEC\xF2\x1C\x88\x20\xCA" 9268 6243 "\x37\x69\xE3\x3A\x22\x85\x48\x46" 9269 6244 "\x70\xAA\x25\xB4\xCD\x8B\x04\x4E" ··· 9326 6213 "\x7C\xB5\x12\x89\xED\xBF\xB6\x09" 9327 6214 "\x13\x4F\x7D\x61\x3C\x5C\x27\xFC" 9328 6215 "\x5D\xE1\x4F\xA1\xEA\xB3\xCA\xB9" 9329 - "\xE6\xD0\x97", 9330 - .rlen = 147, 6216 + "\xE6\xD0\x97\x81\xDE\xD1\xFB\x8A" 6217 + "\x30\xDB\xA3\x5D\xEC\x25\x0B\x86" 6218 + "\x71\xC8\xA7\x67\xE8\xBC\x7D\x4C" 6219 + "\xAE\x82\xD3\x73\x31\x09\xCB\xB3" 6220 + "\x4D\xD4\xC0\x8A\x2B\xFA\xA6\x55" 6221 + "\x39\x0A\xBC\x6E\x75\xAB\xC2\xE2" 6222 + "\x8A\xF2\x26\xCD\x63\x38\x35\xF7" 6223 + "\xAE\x12\x83\xCD\x8A\x9E\x7E\x4C" 6224 + "\xFE\x4D\xD7\xCE\x5C\x6E\x4C\xAF" 6225 + "\xE3\xCD\x76\xA7\x87\xA1\x54\x7C" 6226 + "\xEC\x32\xC7\x83\x2A\xFF\xF8\xEA" 6227 + "\x87\xB2\x47\xA3\x9D\xC2\x9C\xA2" 6228 + "\xB7\x2C\x7C\x1A\x24\xCB\x88\x61" 6229 + "\xFF\xA7\x1A\x16\x01\xDD\x4B\xFC" 6230 + "\x2E\xE0\x48\x67\x09\x42\xCC\x91" 6231 + "\xBE\x20\x38\xC0\x5E\x3B\x95\x00" 6232 + "\xA1\x96\x66\x0B\x8A\xE9\x9E\xF7" 6233 + "\x6B\x34\x0A\x51\xC0\x3B\xEB\x71" 6234 + "\x07\x97\x38\x4B\x5C\x56\x98\x67" 6235 + "\x78\x9C\xD0\x0E\x2B\xB5\x67\x90" 6236 + "\x75\xF8\xFE\x6D\x4E\x85\xCC\x0D" 6237 + "\x18\x06\x15\x9D\x5A\x10\x13\x37" 6238 + "\xA3\xD6\x68\xA2\xDF\x7E\xC7\x12" 6239 + "\xC9\x0D\x4D\x91\xB0\x2A\x55\xFF" 6240 + "\x6F\x73\x13\xDF\x28\xB5\x2A\x2C" 6241 + "\xE4\xFC\x20\xD9\xF1\x7A\x82\xB1" 6242 + "\xCB\x57\xB6\x3D\x8C\xF4\x8E\x27" 6243 + "\x37\xDC\x35\xF3\x79\x01\x53\xA4" 6244 + "\x7B\x37\xDE\x7C\x04\xAE\x50\xDB" 6245 + "\x9B\x1E\x8C\x07\xA7\x52\x49\x50" 6246 + "\x34\x25\x65\xDD\xA9\x8F\x7E\xBD" 6247 + "\x7A\xC9\x36\xAE\xDE\x21\x48\x64" 6248 + "\xC2\x02\xBA\xBE\x11\x1E\x3D\x9C" 6249 + "\x98\x52\xCC\x04\xBD\x5E\x61\x26" 6250 + "\x10\xD3\x21\xD9\x6E\x25\x98\x77" 6251 + "\x8E\x98\x63\xF6\xF6\x52\xFB\x13" 6252 + "\xAA\x30\xF2\xB9\xA4\x43\x53\x39" 6253 + "\x1C\x97\x07\x7E\x6B\xFF\x3D\x43" 6254 + "\xA6\x71\x6B\x66\x8F\x58\x3F\x71" 6255 + "\x90\x47\x40\x92\xE6\x69\xD1\x96" 6256 + "\x34\xB3\x3B\xE5\x43\xE4\xD5\x56" 6257 + "\xB2\xE6\x7E\x86\x7A\x12\x17\x5B" 6258 + "\x30\xF3\x9B\x0D\xFA\x57\xE4\x50" 6259 + "\x40\x53\x77\x8C\x15\xF8\x8D\x13" 6260 + "\x38\xE2\xE5", 6261 + .rlen = 499, 9331 6262 .also_non_np = 1, 9332 6263 .np = 2, 9333 - .tap = { 147 - 16, 16 }, 6264 + .tap = { 499 - 16, 16 }, 9334 6265 }, { /* Generated with Crypto++ */ 9335 6266 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 9336 6267 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 9538 6381 "\xBA\x58\x2A\x1C\xDF\xC2\x3A\xA5" 9539 6382 "\x7C\xB5\x12\x89\xED\xBF\xB6\x09" 9540 6383 "\x13\x4F\x7D\x61\x3C\x5C\x27\xFC" 9541 - "\x5D\xE1\x4F\xA1\xEA\xB3\xCA\xB9", 9542 - .ilen = 144, 6384 + "\x5D\xE1\x4F\xA1\xEA\xB3\xCA\xB9" 6385 + "\xE6\xD0\x97\x81\xDE\xD1\xFB\x8A" 6386 + "\x30\xDB\xA3\x5D\xEC\x25\x0B\x86" 6387 + "\x71\xC8\xA7\x67\xE8\xBC\x7D\x4C" 6388 + "\xAE\x82\xD3\x73\x31\x09\xCB\xB3" 6389 + "\x4D\xD4\xC0\x8A\x2B\xFA\xA6\x55" 6390 + "\x39\x0A\xBC\x6E\x75\xAB\xC2\xE2" 6391 + "\x8A\xF2\x26\xCD\x63\x38\x35\xF7" 6392 + "\xAE\x12\x83\xCD\x8A\x9E\x7E\x4C" 6393 + "\xFE\x4D\xD7\xCE\x5C\x6E\x4C\xAF" 6394 + "\xE3\xCD\x76\xA7\x87\xA1\x54\x7C" 6395 + "\xEC\x32\xC7\x83\x2A\xFF\xF8\xEA" 6396 + "\x87\xB2\x47\xA3\x9D\xC2\x9C\xA2" 6397 + "\xB7\x2C\x7C\x1A\x24\xCB\x88\x61" 6398 + "\xFF\xA7\x1A\x16\x01\xDD\x4B\xFC" 6399 + "\x2E\xE0\x48\x67\x09\x42\xCC\x91" 6400 + "\xBE\x20\x38\xC0\x5E\x3B\x95\x00" 6401 + "\xA1\x96\x66\x0B\x8A\xE9\x9E\xF7" 6402 + "\x6B\x34\x0A\x51\xC0\x3B\xEB\x71" 6403 + "\x07\x97\x38\x4B\x5C\x56\x98\x67" 6404 + "\x78\x9C\xD0\x0E\x2B\xB5\x67\x90" 6405 + "\x75\xF8\xFE\x6D\x4E\x85\xCC\x0D" 6406 + "\x18\x06\x15\x9D\x5A\x10\x13\x37" 6407 + "\xA3\xD6\x68\xA2\xDF\x7E\xC7\x12" 6408 + "\xC9\x0D\x4D\x91\xB0\x2A\x55\xFF" 6409 + "\x6F\x73\x13\xDF\x28\xB5\x2A\x2C" 6410 + "\xE4\xFC\x20\xD9\xF1\x7A\x82\xB1" 6411 + "\xCB\x57\xB6\x3D\x8C\xF4\x8E\x27" 6412 + "\x37\xDC\x35\xF3\x79\x01\x53\xA4" 6413 + "\x7B\x37\xDE\x7C\x04\xAE\x50\xDB" 6414 + "\x9B\x1E\x8C\x07\xA7\x52\x49\x50" 6415 + "\x34\x25\x65\xDD\xA9\x8F\x7E\xBD" 6416 + "\x7A\xC9\x36\xAE\xDE\x21\x48\x64" 6417 + "\xC2\x02\xBA\xBE\x11\x1E\x3D\x9C" 6418 + "\x98\x52\xCC\x04\xBD\x5E\x61\x26" 6419 + "\x10\xD3\x21\xD9\x6E\x25\x98\x77" 6420 + "\x8E\x98\x63\xF6\xF6\x52\xFB\x13" 6421 + "\xAA\x30\xF2\xB9\xA4\x43\x53\x39" 6422 + "\x1C\x97\x07\x7E\x6B\xFF\x3D\x43" 6423 + "\xA6\x71\x6B\x66\x8F\x58\x3F\x71" 6424 + "\x90\x47\x40\x92\xE6\x69\xD1\x96" 6425 + "\x34\xB3\x3B\xE5\x43\xE4\xD5\x56" 6426 + "\xB2\xE6\x7E\x86\x7A\x12\x17\x5B" 6427 + "\x30\xF3\x9B\x0D\xFA\x57\xE4\x50" 6428 + "\x40\x53\x77\x8C\x15\xF8\x8D\x13", 6429 + .ilen = 496, 9543 6430 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 9544 6431 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 9545 6432 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" ··· 9601 6400 "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 9602 6401 "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 9603 6402 "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 9604 - "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A", 9605 - .rlen = 144, 6403 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 6404 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 6405 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 6406 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 6407 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 6408 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 6409 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 6410 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 6411 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 6412 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 6413 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 6414 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 6415 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 6416 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 6417 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 6418 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 6419 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 6420 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 6421 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 6422 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 6423 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 6424 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 6425 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 6426 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 6427 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 6428 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 6429 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 6430 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 6431 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 6432 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 6433 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 6434 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 6435 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 6436 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 6437 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 6438 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 6439 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 6440 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 6441 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 6442 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 6443 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 6444 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 6445 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 6446 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 6447 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 6448 + .rlen = 496, 9606 6449 }, { /* Generated with Crypto++ */ 9607 6450 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 9608 6451 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 9673 6428 "\x7C\xB5\x12\x89\xED\xBF\xB6\x09" 9674 6429 "\x13\x4F\x7D\x61\x3C\x5C\x27\xFC" 9675 6430 "\x5D\xE1\x4F\xA1\xEA\xB3\xCA\xB9" 9676 - "\xE6\xD0\x97", 9677 - .ilen = 147, 6431 + "\xE6\xD0\x97\x81\xDE\xD1\xFB\x8A" 6432 + "\x30\xDB\xA3\x5D\xEC\x25\x0B\x86" 6433 + "\x71\xC8\xA7\x67\xE8\xBC\x7D\x4C" 6434 + "\xAE\x82\xD3\x73\x31\x09\xCB\xB3" 6435 + "\x4D\xD4\xC0\x8A\x2B\xFA\xA6\x55" 6436 + "\x39\x0A\xBC\x6E\x75\xAB\xC2\xE2" 6437 + "\x8A\xF2\x26\xCD\x63\x38\x35\xF7" 6438 + "\xAE\x12\x83\xCD\x8A\x9E\x7E\x4C" 6439 + "\xFE\x4D\xD7\xCE\x5C\x6E\x4C\xAF" 6440 + "\xE3\xCD\x76\xA7\x87\xA1\x54\x7C" 6441 + "\xEC\x32\xC7\x83\x2A\xFF\xF8\xEA" 6442 + "\x87\xB2\x47\xA3\x9D\xC2\x9C\xA2" 6443 + "\xB7\x2C\x7C\x1A\x24\xCB\x88\x61" 6444 + "\xFF\xA7\x1A\x16\x01\xDD\x4B\xFC" 6445 + "\x2E\xE0\x48\x67\x09\x42\xCC\x91" 6446 + "\xBE\x20\x38\xC0\x5E\x3B\x95\x00" 6447 + "\xA1\x96\x66\x0B\x8A\xE9\x9E\xF7" 6448 + "\x6B\x34\x0A\x51\xC0\x3B\xEB\x71" 6449 + "\x07\x97\x38\x4B\x5C\x56\x98\x67" 6450 + "\x78\x9C\xD0\x0E\x2B\xB5\x67\x90" 6451 + "\x75\xF8\xFE\x6D\x4E\x85\xCC\x0D" 6452 + "\x18\x06\x15\x9D\x5A\x10\x13\x37" 6453 + "\xA3\xD6\x68\xA2\xDF\x7E\xC7\x12" 6454 + "\xC9\x0D\x4D\x91\xB0\x2A\x55\xFF" 6455 + "\x6F\x73\x13\xDF\x28\xB5\x2A\x2C" 6456 + "\xE4\xFC\x20\xD9\xF1\x7A\x82\xB1" 6457 + "\xCB\x57\xB6\x3D\x8C\xF4\x8E\x27" 6458 + "\x37\xDC\x35\xF3\x79\x01\x53\xA4" 6459 + "\x7B\x37\xDE\x7C\x04\xAE\x50\xDB" 6460 + "\x9B\x1E\x8C\x07\xA7\x52\x49\x50" 6461 + "\x34\x25\x65\xDD\xA9\x8F\x7E\xBD" 6462 + "\x7A\xC9\x36\xAE\xDE\x21\x48\x64" 6463 + "\xC2\x02\xBA\xBE\x11\x1E\x3D\x9C" 6464 + "\x98\x52\xCC\x04\xBD\x5E\x61\x26" 6465 + "\x10\xD3\x21\xD9\x6E\x25\x98\x77" 6466 + "\x8E\x98\x63\xF6\xF6\x52\xFB\x13" 6467 + "\xAA\x30\xF2\xB9\xA4\x43\x53\x39" 6468 + "\x1C\x97\x07\x7E\x6B\xFF\x3D\x43" 6469 + "\xA6\x71\x6B\x66\x8F\x58\x3F\x71" 6470 + "\x90\x47\x40\x92\xE6\x69\xD1\x96" 6471 + "\x34\xB3\x3B\xE5\x43\xE4\xD5\x56" 6472 + "\xB2\xE6\x7E\x86\x7A\x12\x17\x5B" 6473 + "\x30\xF3\x9B\x0D\xFA\x57\xE4\x50" 6474 + "\x40\x53\x77\x8C\x15\xF8\x8D\x13" 6475 + "\x38\xE2\xE5", 6476 + .ilen = 499, 9678 6477 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 9679 6478 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 9680 6479 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" ··· 9737 6448 "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 9738 6449 "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 9739 6450 "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 9740 - "\xF1\x65\xFC", 9741 - .rlen = 147, 6451 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 6452 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 6453 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 6454 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 6455 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 6456 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 6457 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 6458 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 6459 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 6460 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 6461 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 6462 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 6463 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 6464 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 6465 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 6466 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 6467 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 6468 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 6469 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 6470 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 6471 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 6472 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 6473 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 6474 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 6475 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 6476 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 6477 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 6478 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 6479 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 6480 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 6481 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 6482 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 6483 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 6484 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 6485 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 6486 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 6487 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 6488 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 6489 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 6490 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 6491 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 6492 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 6493 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 6494 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 6495 + "\x2B\xC2\x59", 6496 + .rlen = 499, 9742 6497 .also_non_np = 1, 9743 6498 .np = 2, 9744 - .tap = { 147 - 16, 16 }, 6499 + .tap = { 499 - 16, 16 }, 9745 6500 }, { /* Generated with Crypto++ */ 9746 6501 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 9747 6502 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 12659 9326 /* 12660 9327 * AES test vectors. 12661 9328 */ 12662 - #define AES_ENC_TEST_VECTORS 3 12663 - #define AES_DEC_TEST_VECTORS 3 12664 - #define AES_CBC_ENC_TEST_VECTORS 4 12665 - #define AES_CBC_DEC_TEST_VECTORS 4 9329 + #define AES_ENC_TEST_VECTORS 4 9330 + #define AES_DEC_TEST_VECTORS 4 9331 + #define AES_CBC_ENC_TEST_VECTORS 5 9332 + #define AES_CBC_DEC_TEST_VECTORS 5 12666 9333 #define HMAC_SHA1_AES_CBC_ENC_TEST_VECTORS 7 12667 9334 #define HMAC_SHA256_AES_CBC_ENC_TEST_VECTORS 7 12668 9335 #define HMAC_SHA512_AES_CBC_ENC_TEST_VECTORS 7 ··· 12670 9337 #define AES_LRW_DEC_TEST_VECTORS 8 12671 9338 #define AES_XTS_ENC_TEST_VECTORS 5 12672 9339 #define AES_XTS_DEC_TEST_VECTORS 5 12673 - #define AES_CTR_ENC_TEST_VECTORS 3 12674 - #define AES_CTR_DEC_TEST_VECTORS 3 9340 + #define AES_CTR_ENC_TEST_VECTORS 5 9341 + #define AES_CTR_DEC_TEST_VECTORS 5 12675 9342 #define AES_OFB_ENC_TEST_VECTORS 1 12676 9343 #define AES_OFB_DEC_TEST_VECTORS 1 12677 9344 #define AES_CTR_3686_ENC_TEST_VECTORS 7 ··· 12719 9386 .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf" 12720 9387 "\xea\xfc\x49\x90\x4b\x49\x60\x89", 12721 9388 .rlen = 16, 9389 + }, { /* Generated with Crypto++ */ 9390 + .key = "\xA6\xC9\x83\xA6\xC9\xEC\x0F\x32" 9391 + "\x55\x0F\x32\x55\x78\x9B\xBE\x78" 9392 + "\x9B\xBE\xE1\x04\x27\xE1\x04\x27" 9393 + "\x4A\x6D\x90\x4A\x6D\x90\xB3\xD6", 9394 + .klen = 32, 9395 + .input = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 9396 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 9397 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 9398 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 9399 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 9400 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 9401 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 9402 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 9403 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 9404 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 9405 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 9406 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 9407 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 9408 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 9409 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 9410 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 9411 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 9412 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 9413 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 9414 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 9415 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 9416 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 9417 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 9418 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 9419 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 9420 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 9421 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 9422 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 9423 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 9424 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 9425 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB" 9426 + "\x54\xE0\x49\xB2\x1B\xA7\x10\x79" 9427 + "\x05\x6E\xD7\x40\xCC\x35\x9E\x07" 9428 + "\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8" 9429 + "\x21\x8A\x16\x7F\xE8\x51\xDD\x46" 9430 + "\xAF\x18\xA4\x0D\x76\x02\x6B\xD4" 9431 + "\x3D\xC9\x32\x9B\x04\x90\xF9\x62" 9432 + "\xEE\x57\xC0\x29\xB5\x1E\x87\x13" 9433 + "\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1" 9434 + "\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F" 9435 + "\x98\x01\x8D\xF6\x5F\xEB\x54\xBD" 9436 + "\x26\xB2\x1B\x84\x10\x79\xE2\x4B" 9437 + "\xD7\x40\xA9\x12\x9E\x07\x70\xFC" 9438 + "\x65\xCE\x37\xC3\x2C\x95\x21\x8A" 9439 + "\xF3\x5C\xE8\x51\xBA\x23\xAF\x18" 9440 + "\x81\x0D\x76\xDF\x48\xD4\x3D\xA6" 9441 + "\x0F\x9B\x04\x6D\xF9\x62\xCB\x34" 9442 + "\xC0\x29\x92\x1E\x87\xF0\x59\xE5" 9443 + "\x4E\xB7\x20\xAC\x15\x7E\x0A\x73" 9444 + "\xDC\x45\xD1\x3A\xA3\x0C\x98\x01" 9445 + "\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F" 9446 + "\x1B\x84\xED\x56\xE2\x4B\xB4\x1D" 9447 + "\xA9\x12\x7B\x07\x70\xD9\x42\xCE" 9448 + "\x37\xA0\x09\x95\xFE\x67\xF3\x5C" 9449 + "\xC5\x2E\xBA\x23\x8C\x18\x81\xEA" 9450 + "\x53\xDF\x48\xB1\x1A\xA6\x0F\x78" 9451 + "\x04\x6D\xD6\x3F\xCB\x34\x9D\x06" 9452 + "\x92\xFB\x64\xF0\x59\xC2\x2B\xB7" 9453 + "\x20\x89\x15\x7E\xE7\x50\xDC\x45" 9454 + "\xAE\x17\xA3\x0C\x75\x01\x6A\xD3" 9455 + "\x3C\xC8\x31\x9A\x03\x8F\xF8\x61" 9456 + "\xED\x56\xBF\x28\xB4\x1D\x86\x12", 9457 + .ilen = 496, 9458 + .result = "\x71\x73\xF7\xDB\x24\x93\x21\x6D" 9459 + "\x61\x1E\xBB\x63\x42\x79\xDB\x64" 9460 + "\x6F\x82\xC0\xCA\xA3\x9B\xFA\x0B" 9461 + "\xD9\x08\xC7\x4A\x90\xAE\x8F\x5F" 9462 + "\x5E\x06\xF0\x5F\x31\x51\x18\x37" 9463 + "\x45\xD7\xCA\x3A\xFD\x6C\x3F\xE1" 9464 + "\xDD\x8D\x22\x65\x2B\x00\x50\xCE" 9465 + "\xBA\x28\x67\xD7\xCE\x0E\x0D\xEA" 9466 + "\x78\x69\x7F\xAE\x8F\x8B\x69\x37" 9467 + "\x75\xE0\xDC\x96\xE0\xB7\xF4\x09" 9468 + "\xCB\x6D\xA2\xFB\xDA\xAF\x09\xF8" 9469 + "\x81\x82\x27\xFA\x45\x9C\x29\xA4" 9470 + "\x22\x8B\x78\x69\x5B\x46\xF9\x39" 9471 + "\x1B\xCC\xF9\x1D\x09\xEB\xBC\x5C" 9472 + "\x41\x72\x51\x97\x1D\x07\x49\xA0" 9473 + "\x1B\x8E\x65\x4B\xB2\x6A\x12\x03" 9474 + "\x6A\x60\x95\xAC\xBD\xAC\x1A\x64" 9475 + "\xDE\x5A\xA5\xF0\x83\x2F\xCB\xCA" 9476 + "\x22\x74\xA6\x6C\x9B\x73\xCE\x3F" 9477 + "\xE1\x8B\x22\x17\x59\x0C\x47\x89" 9478 + "\x33\xA1\xD6\x47\x03\x19\x4F\xA8" 9479 + "\x67\x69\xF0\x5B\xF0\x20\xAD\x06" 9480 + "\x27\x81\x92\xD8\xC5\xBA\x98\x12" 9481 + "\xBE\x24\xB5\x2F\x75\x02\xC2\xAD" 9482 + "\x12\x2F\x07\x32\xEE\x39\xAF\x64" 9483 + "\x05\x8F\xB3\xD4\xEB\x1B\x46\x6E" 9484 + "\xD9\x21\xF9\xC4\xB7\xC9\x45\x68" 9485 + "\xB4\xA1\x74\x9F\x82\x47\xEB\xCC" 9486 + "\xBD\x0A\x14\x95\x0F\x8B\xA8\x2F" 9487 + "\x4B\x1B\xA7\xBF\x82\xA6\x43\x0C" 9488 + "\xB9\x39\x4A\xA8\x10\x6F\x50\x7B" 9489 + "\x25\xFB\x26\x81\xE0\x2F\xF0\x96" 9490 + "\x8D\x8B\xAC\x92\x0F\xF6\xED\x64" 9491 + "\x63\x29\x4C\x8E\x18\x13\xC5\xBF" 9492 + "\xFC\xA0\xD9\xBF\x7C\x3A\x0E\x29" 9493 + "\x6F\xD1\x6C\x6F\xA5\xDA\xBF\xB1" 9494 + "\x30\xEA\x44\x2D\xC3\x8F\x16\xE1" 9495 + "\x66\xFA\xA3\x21\x3E\xFC\x13\xCA" 9496 + "\xF0\xF6\xF0\x59\xBD\x8F\x38\x50" 9497 + "\x31\xCB\x69\x3F\x96\x15\xD6\xF5" 9498 + "\xAE\xFF\xF6\xAA\x41\x85\x4C\x10" 9499 + "\x58\xE3\xF9\x44\xE6\x28\xDA\x9A" 9500 + "\xDC\x6A\x80\x34\x73\x97\x1B\xC5" 9501 + "\xCA\x26\x16\x77\x0E\x60\xAB\x89" 9502 + "\x0F\x04\x27\xBD\xCE\x3E\x71\xB4" 9503 + "\xA0\xD7\x22\x7E\xDB\xEB\x24\x70" 9504 + "\x42\x71\x51\x78\x70\xB3\xE0\x3D" 9505 + "\x84\x8E\x8D\x7B\xD0\x6D\xEA\x92" 9506 + "\x11\x08\x42\x4F\xE5\xAD\x26\x92" 9507 + "\xD2\x00\xAE\xA8\xE3\x4B\x37\x47" 9508 + "\x22\xC1\x95\xC1\x63\x7F\xCB\x03" 9509 + "\xF3\xE3\xD7\x9D\x60\xC7\xBC\xEA" 9510 + "\x35\xA2\xFD\x45\x52\x39\x13\x6F" 9511 + "\xC1\x53\xF3\x53\xDF\x33\x84\xD7" 9512 + "\xD2\xC8\x37\xB0\x75\xE3\x41\x46" 9513 + "\xB3\xC7\x83\x2E\x8A\xBB\xA4\xE5" 9514 + "\x7F\x3C\xFD\x8B\xEB\xEA\x63\xBD" 9515 + "\xB7\x46\xE7\xBF\x09\x9C\x0D\x0F" 9516 + "\x40\x86\x7F\x51\xE1\x11\x9C\xCB" 9517 + "\x88\xE6\x68\x47\xE3\x2B\xC5\xFF" 9518 + "\x09\x79\xA0\x43\x5C\x0D\x08\x58" 9519 + "\x17\xBB\xC0\x6B\x62\x3F\x56\xE9", 9520 + .rlen = 496, 9521 + .also_non_np = 1, 9522 + .np = 2, 9523 + .tap = { 496 - 16, 16 }, 12722 9524 }, 12723 9525 }; 12724 9526 ··· 12891 9423 .result = "\x00\x11\x22\x33\x44\x55\x66\x77" 12892 9424 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff", 12893 9425 .rlen = 16, 9426 + }, { /* Generated with Crypto++ */ 9427 + .key = "\xA6\xC9\x83\xA6\xC9\xEC\x0F\x32" 9428 + "\x55\x0F\x32\x55\x78\x9B\xBE\x78" 9429 + "\x9B\xBE\xE1\x04\x27\xE1\x04\x27" 9430 + "\x4A\x6D\x90\x4A\x6D\x90\xB3\xD6", 9431 + .klen = 32, 9432 + .input = "\x71\x73\xF7\xDB\x24\x93\x21\x6D" 9433 + "\x61\x1E\xBB\x63\x42\x79\xDB\x64" 9434 + "\x6F\x82\xC0\xCA\xA3\x9B\xFA\x0B" 9435 + "\xD9\x08\xC7\x4A\x90\xAE\x8F\x5F" 9436 + "\x5E\x06\xF0\x5F\x31\x51\x18\x37" 9437 + "\x45\xD7\xCA\x3A\xFD\x6C\x3F\xE1" 9438 + "\xDD\x8D\x22\x65\x2B\x00\x50\xCE" 9439 + "\xBA\x28\x67\xD7\xCE\x0E\x0D\xEA" 9440 + "\x78\x69\x7F\xAE\x8F\x8B\x69\x37" 9441 + "\x75\xE0\xDC\x96\xE0\xB7\xF4\x09" 9442 + "\xCB\x6D\xA2\xFB\xDA\xAF\x09\xF8" 9443 + "\x81\x82\x27\xFA\x45\x9C\x29\xA4" 9444 + "\x22\x8B\x78\x69\x5B\x46\xF9\x39" 9445 + "\x1B\xCC\xF9\x1D\x09\xEB\xBC\x5C" 9446 + "\x41\x72\x51\x97\x1D\x07\x49\xA0" 9447 + "\x1B\x8E\x65\x4B\xB2\x6A\x12\x03" 9448 + "\x6A\x60\x95\xAC\xBD\xAC\x1A\x64" 9449 + "\xDE\x5A\xA5\xF0\x83\x2F\xCB\xCA" 9450 + "\x22\x74\xA6\x6C\x9B\x73\xCE\x3F" 9451 + "\xE1\x8B\x22\x17\x59\x0C\x47\x89" 9452 + "\x33\xA1\xD6\x47\x03\x19\x4F\xA8" 9453 + "\x67\x69\xF0\x5B\xF0\x20\xAD\x06" 9454 + "\x27\x81\x92\xD8\xC5\xBA\x98\x12" 9455 + "\xBE\x24\xB5\x2F\x75\x02\xC2\xAD" 9456 + "\x12\x2F\x07\x32\xEE\x39\xAF\x64" 9457 + "\x05\x8F\xB3\xD4\xEB\x1B\x46\x6E" 9458 + "\xD9\x21\xF9\xC4\xB7\xC9\x45\x68" 9459 + "\xB4\xA1\x74\x9F\x82\x47\xEB\xCC" 9460 + "\xBD\x0A\x14\x95\x0F\x8B\xA8\x2F" 9461 + "\x4B\x1B\xA7\xBF\x82\xA6\x43\x0C" 9462 + "\xB9\x39\x4A\xA8\x10\x6F\x50\x7B" 9463 + "\x25\xFB\x26\x81\xE0\x2F\xF0\x96" 9464 + "\x8D\x8B\xAC\x92\x0F\xF6\xED\x64" 9465 + "\x63\x29\x4C\x8E\x18\x13\xC5\xBF" 9466 + "\xFC\xA0\xD9\xBF\x7C\x3A\x0E\x29" 9467 + "\x6F\xD1\x6C\x6F\xA5\xDA\xBF\xB1" 9468 + "\x30\xEA\x44\x2D\xC3\x8F\x16\xE1" 9469 + "\x66\xFA\xA3\x21\x3E\xFC\x13\xCA" 9470 + "\xF0\xF6\xF0\x59\xBD\x8F\x38\x50" 9471 + "\x31\xCB\x69\x3F\x96\x15\xD6\xF5" 9472 + "\xAE\xFF\xF6\xAA\x41\x85\x4C\x10" 9473 + "\x58\xE3\xF9\x44\xE6\x28\xDA\x9A" 9474 + "\xDC\x6A\x80\x34\x73\x97\x1B\xC5" 9475 + "\xCA\x26\x16\x77\x0E\x60\xAB\x89" 9476 + "\x0F\x04\x27\xBD\xCE\x3E\x71\xB4" 9477 + "\xA0\xD7\x22\x7E\xDB\xEB\x24\x70" 9478 + "\x42\x71\x51\x78\x70\xB3\xE0\x3D" 9479 + "\x84\x8E\x8D\x7B\xD0\x6D\xEA\x92" 9480 + "\x11\x08\x42\x4F\xE5\xAD\x26\x92" 9481 + "\xD2\x00\xAE\xA8\xE3\x4B\x37\x47" 9482 + "\x22\xC1\x95\xC1\x63\x7F\xCB\x03" 9483 + "\xF3\xE3\xD7\x9D\x60\xC7\xBC\xEA" 9484 + "\x35\xA2\xFD\x45\x52\x39\x13\x6F" 9485 + "\xC1\x53\xF3\x53\xDF\x33\x84\xD7" 9486 + "\xD2\xC8\x37\xB0\x75\xE3\x41\x46" 9487 + "\xB3\xC7\x83\x2E\x8A\xBB\xA4\xE5" 9488 + "\x7F\x3C\xFD\x8B\xEB\xEA\x63\xBD" 9489 + "\xB7\x46\xE7\xBF\x09\x9C\x0D\x0F" 9490 + "\x40\x86\x7F\x51\xE1\x11\x9C\xCB" 9491 + "\x88\xE6\x68\x47\xE3\x2B\xC5\xFF" 9492 + "\x09\x79\xA0\x43\x5C\x0D\x08\x58" 9493 + "\x17\xBB\xC0\x6B\x62\x3F\x56\xE9", 9494 + .ilen = 496, 9495 + .result = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 9496 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 9497 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 9498 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 9499 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 9500 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 9501 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 9502 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 9503 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 9504 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 9505 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 9506 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 9507 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 9508 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 9509 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 9510 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 9511 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 9512 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 9513 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 9514 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 9515 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 9516 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 9517 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 9518 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 9519 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 9520 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 9521 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 9522 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 9523 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 9524 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 9525 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB" 9526 + "\x54\xE0\x49\xB2\x1B\xA7\x10\x79" 9527 + "\x05\x6E\xD7\x40\xCC\x35\x9E\x07" 9528 + "\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8" 9529 + "\x21\x8A\x16\x7F\xE8\x51\xDD\x46" 9530 + "\xAF\x18\xA4\x0D\x76\x02\x6B\xD4" 9531 + "\x3D\xC9\x32\x9B\x04\x90\xF9\x62" 9532 + "\xEE\x57\xC0\x29\xB5\x1E\x87\x13" 9533 + "\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1" 9534 + "\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F" 9535 + "\x98\x01\x8D\xF6\x5F\xEB\x54\xBD" 9536 + "\x26\xB2\x1B\x84\x10\x79\xE2\x4B" 9537 + "\xD7\x40\xA9\x12\x9E\x07\x70\xFC" 9538 + "\x65\xCE\x37\xC3\x2C\x95\x21\x8A" 9539 + "\xF3\x5C\xE8\x51\xBA\x23\xAF\x18" 9540 + "\x81\x0D\x76\xDF\x48\xD4\x3D\xA6" 9541 + "\x0F\x9B\x04\x6D\xF9\x62\xCB\x34" 9542 + "\xC0\x29\x92\x1E\x87\xF0\x59\xE5" 9543 + "\x4E\xB7\x20\xAC\x15\x7E\x0A\x73" 9544 + "\xDC\x45\xD1\x3A\xA3\x0C\x98\x01" 9545 + "\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F" 9546 + "\x1B\x84\xED\x56\xE2\x4B\xB4\x1D" 9547 + "\xA9\x12\x7B\x07\x70\xD9\x42\xCE" 9548 + "\x37\xA0\x09\x95\xFE\x67\xF3\x5C" 9549 + "\xC5\x2E\xBA\x23\x8C\x18\x81\xEA" 9550 + "\x53\xDF\x48\xB1\x1A\xA6\x0F\x78" 9551 + "\x04\x6D\xD6\x3F\xCB\x34\x9D\x06" 9552 + "\x92\xFB\x64\xF0\x59\xC2\x2B\xB7" 9553 + "\x20\x89\x15\x7E\xE7\x50\xDC\x45" 9554 + "\xAE\x17\xA3\x0C\x75\x01\x6A\xD3" 9555 + "\x3C\xC8\x31\x9A\x03\x8F\xF8\x61" 9556 + "\xED\x56\xBF\x28\xB4\x1D\x86\x12", 9557 + .rlen = 496, 9558 + .also_non_np = 1, 9559 + .np = 2, 9560 + .tap = { 496 - 16, 16 }, 12894 9561 }, 12895 9562 }; 12896 9563 ··· 13108 9505 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc" 13109 9506 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b", 13110 9507 .rlen = 64, 9508 + }, { /* Generated with Crypto++ */ 9509 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55" 9510 + "\x0F\x32\x55\x78\x9B\xBE\x78\x9B" 9511 + "\xBE\xE1\x04\x27\xE1\x04\x27\x4A" 9512 + "\x6D\x90\x4A\x6D\x90\xB3\xD6\xF9", 9513 + .klen = 32, 9514 + .iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47" 9515 + "\xE2\x7D\x18\xD6\x71\x0C\xA7\x42", 9516 + .input = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 9517 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 9518 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 9519 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 9520 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 9521 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 9522 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 9523 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 9524 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 9525 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 9526 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 9527 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 9528 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 9529 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 9530 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 9531 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 9532 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 9533 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 9534 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 9535 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 9536 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 9537 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 9538 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 9539 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 9540 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 9541 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 9542 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 9543 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 9544 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 9545 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 9546 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB" 9547 + "\x54\xE0\x49\xB2\x1B\xA7\x10\x79" 9548 + "\x05\x6E\xD7\x40\xCC\x35\x9E\x07" 9549 + "\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8" 9550 + "\x21\x8A\x16\x7F\xE8\x51\xDD\x46" 9551 + "\xAF\x18\xA4\x0D\x76\x02\x6B\xD4" 9552 + "\x3D\xC9\x32\x9B\x04\x90\xF9\x62" 9553 + "\xEE\x57\xC0\x29\xB5\x1E\x87\x13" 9554 + "\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1" 9555 + "\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F" 9556 + "\x98\x01\x8D\xF6\x5F\xEB\x54\xBD" 9557 + "\x26\xB2\x1B\x84\x10\x79\xE2\x4B" 9558 + "\xD7\x40\xA9\x12\x9E\x07\x70\xFC" 9559 + "\x65\xCE\x37\xC3\x2C\x95\x21\x8A" 9560 + "\xF3\x5C\xE8\x51\xBA\x23\xAF\x18" 9561 + "\x81\x0D\x76\xDF\x48\xD4\x3D\xA6" 9562 + "\x0F\x9B\x04\x6D\xF9\x62\xCB\x34" 9563 + "\xC0\x29\x92\x1E\x87\xF0\x59\xE5" 9564 + "\x4E\xB7\x20\xAC\x15\x7E\x0A\x73" 9565 + "\xDC\x45\xD1\x3A\xA3\x0C\x98\x01" 9566 + "\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F" 9567 + "\x1B\x84\xED\x56\xE2\x4B\xB4\x1D" 9568 + "\xA9\x12\x7B\x07\x70\xD9\x42\xCE" 9569 + "\x37\xA0\x09\x95\xFE\x67\xF3\x5C" 9570 + "\xC5\x2E\xBA\x23\x8C\x18\x81\xEA" 9571 + "\x53\xDF\x48\xB1\x1A\xA6\x0F\x78" 9572 + "\x04\x6D\xD6\x3F\xCB\x34\x9D\x06" 9573 + "\x92\xFB\x64\xF0\x59\xC2\x2B\xB7" 9574 + "\x20\x89\x15\x7E\xE7\x50\xDC\x45" 9575 + "\xAE\x17\xA3\x0C\x75\x01\x6A\xD3" 9576 + "\x3C\xC8\x31\x9A\x03\x8F\xF8\x61" 9577 + "\xED\x56\xBF\x28\xB4\x1D\x86\x12", 9578 + .ilen = 496, 9579 + .result = "\xEA\x65\x8A\x19\xB0\x66\xC1\x3F" 9580 + "\xCE\xF1\x97\x75\xC1\xFD\xB5\xAF" 9581 + "\x52\x65\xF7\xFF\xBC\xD8\x2D\x9F" 9582 + "\x2F\xB9\x26\x9B\x6F\x10\xB7\xB8" 9583 + "\x26\xA1\x02\x46\xA2\xAD\xC6\xC0" 9584 + "\x11\x15\xFF\x6D\x1E\x82\x04\xA6" 9585 + "\xB1\x74\xD1\x08\x13\xFD\x90\x7C" 9586 + "\xF5\xED\xD3\xDB\x5A\x0A\x0C\x2F" 9587 + "\x0A\x70\xF1\x88\x07\xCF\x21\x26" 9588 + "\x40\x40\x8A\xF5\x53\xF7\x24\x4F" 9589 + "\x83\x38\x43\x5F\x08\x99\xEB\xE3" 9590 + "\xDC\x02\x64\x67\x50\x6E\x15\xC3" 9591 + "\x01\x1A\xA0\x81\x13\x65\xA6\x73" 9592 + "\x71\xA6\x3B\x91\x83\x77\xBE\xFA" 9593 + "\xDB\x71\x73\xA6\xC1\xAE\x43\xC3" 9594 + "\x36\xCE\xD6\xEB\xF9\x30\x1C\x4F" 9595 + "\x80\x38\x5E\x9C\x6E\xAB\x98\x2F" 9596 + "\x53\xAF\xCF\xC8\x9A\xB8\x86\x43" 9597 + "\x3E\x86\xE7\xA1\xF4\x2F\x30\x40" 9598 + "\x03\xA8\x6C\x50\x42\x9F\x77\x59" 9599 + "\x89\xA0\xC5\xEC\x9A\xB8\xDD\x99" 9600 + "\x16\x24\x02\x07\x48\xAE\xF2\x31" 9601 + "\x34\x0E\xC3\x85\xFE\x1C\x95\x99" 9602 + "\x87\x58\x98\x8B\xE7\xC6\xC5\x70" 9603 + "\x73\x81\x07\x7C\x56\x2F\xD8\x1B" 9604 + "\xB7\xB9\x2B\xAB\xE3\x01\x87\x0F" 9605 + "\xD8\xBB\xC0\x0D\xAC\x2C\x2F\x98" 9606 + "\x3C\x0B\xA2\x99\x4A\x8C\xF7\x04" 9607 + "\xE0\xE0\xCF\xD1\x81\x5B\xFE\xF5" 9608 + "\x24\x04\xFD\xB8\xDF\x13\xD8\xCD" 9609 + "\xF1\xE3\x3D\x98\x50\x02\x77\x9E" 9610 + "\xBC\x22\xAB\xFA\xC2\x43\x1F\x66" 9611 + "\x20\x02\x23\xDA\xDF\xA0\x89\xF6" 9612 + "\xD8\xF3\x45\x24\x53\x6F\x16\x77" 9613 + "\x02\x3E\x7B\x36\x5F\xA0\x3B\x78" 9614 + "\x63\xA2\xBD\xB5\xA4\xCA\x1E\xD3" 9615 + "\x57\xBC\x0B\x9F\x43\x51\x28\x4F" 9616 + "\x07\x50\x6C\x68\x12\x07\xCF\xFA" 9617 + "\x6B\x72\x0B\xEB\xF8\x88\x90\x2C" 9618 + "\x7E\xF5\x91\xD1\x03\xD8\xD5\xBD" 9619 + "\x22\x39\x7B\x16\x03\x01\x69\xAF" 9620 + "\x3D\x38\x66\x28\x0C\xBE\x5B\xC5" 9621 + "\x03\xB4\x2F\x51\x8A\x56\x17\x2B" 9622 + "\x88\x42\x6D\x40\x68\x8F\xD0\x11" 9623 + "\x19\xF9\x1F\x43\x79\x95\x31\xFA" 9624 + "\x28\x7A\x3D\xF7\x66\xEB\xEF\xAC" 9625 + "\x06\xB2\x01\xAD\xDB\x68\xDB\xEC" 9626 + "\x8D\x53\x6E\x72\x68\xA3\xC7\x63" 9627 + "\x43\x2B\x78\xE0\x04\x29\x8F\x72" 9628 + "\xB2\x2C\xE6\x84\x03\x30\x6D\xCD" 9629 + "\x26\x92\x37\xE1\x2F\xBB\x8B\x9D" 9630 + "\xE4\x4C\xF6\x93\xBC\xD9\xAD\x44" 9631 + "\x52\x65\xC7\xB0\x0E\x3F\x0E\x61" 9632 + "\x56\x5D\x1C\x6D\xA7\x05\x2E\xBC" 9633 + "\x58\x08\x15\xAB\x12\xAB\x17\x4A" 9634 + "\x5E\x1C\xF2\xCD\xB8\xA2\xAE\xFB" 9635 + "\x9B\x2E\x0E\x85\x34\x80\x0E\x3F" 9636 + "\x4C\xB8\xDB\xCE\x1C\x90\xA1\x61" 9637 + "\x6C\x69\x09\x35\x9E\xD4\xF4\xAD" 9638 + "\xBC\x06\x41\xE3\x01\xB4\x4E\x0A" 9639 + "\xE0\x1F\x91\xF8\x82\x96\x2D\x65" 9640 + "\xA3\xAA\x13\xCC\x50\xFF\x7B\x02", 9641 + .rlen = 496, 9642 + .also_non_np = 1, 9643 + .np = 2, 9644 + .tap = { 496 - 16, 16 }, 13111 9645 }, 13112 9646 }; 13113 9647 ··· 13327 9587 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" 13328 9588 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", 13329 9589 .rlen = 64, 9590 + }, { /* Generated with Crypto++ */ 9591 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55" 9592 + "\x0F\x32\x55\x78\x9B\xBE\x78\x9B" 9593 + "\xBE\xE1\x04\x27\xE1\x04\x27\x4A" 9594 + "\x6D\x90\x4A\x6D\x90\xB3\xD6\xF9", 9595 + .klen = 32, 9596 + .iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47" 9597 + "\xE2\x7D\x18\xD6\x71\x0C\xA7\x42", 9598 + .input = "\xEA\x65\x8A\x19\xB0\x66\xC1\x3F" 9599 + "\xCE\xF1\x97\x75\xC1\xFD\xB5\xAF" 9600 + "\x52\x65\xF7\xFF\xBC\xD8\x2D\x9F" 9601 + "\x2F\xB9\x26\x9B\x6F\x10\xB7\xB8" 9602 + "\x26\xA1\x02\x46\xA2\xAD\xC6\xC0" 9603 + "\x11\x15\xFF\x6D\x1E\x82\x04\xA6" 9604 + "\xB1\x74\xD1\x08\x13\xFD\x90\x7C" 9605 + "\xF5\xED\xD3\xDB\x5A\x0A\x0C\x2F" 9606 + "\x0A\x70\xF1\x88\x07\xCF\x21\x26" 9607 + "\x40\x40\x8A\xF5\x53\xF7\x24\x4F" 9608 + "\x83\x38\x43\x5F\x08\x99\xEB\xE3" 9609 + "\xDC\x02\x64\x67\x50\x6E\x15\xC3" 9610 + "\x01\x1A\xA0\x81\x13\x65\xA6\x73" 9611 + "\x71\xA6\x3B\x91\x83\x77\xBE\xFA" 9612 + "\xDB\x71\x73\xA6\xC1\xAE\x43\xC3" 9613 + "\x36\xCE\xD6\xEB\xF9\x30\x1C\x4F" 9614 + "\x80\x38\x5E\x9C\x6E\xAB\x98\x2F" 9615 + "\x53\xAF\xCF\xC8\x9A\xB8\x86\x43" 9616 + "\x3E\x86\xE7\xA1\xF4\x2F\x30\x40" 9617 + "\x03\xA8\x6C\x50\x42\x9F\x77\x59" 9618 + "\x89\xA0\xC5\xEC\x9A\xB8\xDD\x99" 9619 + "\x16\x24\x02\x07\x48\xAE\xF2\x31" 9620 + "\x34\x0E\xC3\x85\xFE\x1C\x95\x99" 9621 + "\x87\x58\x98\x8B\xE7\xC6\xC5\x70" 9622 + "\x73\x81\x07\x7C\x56\x2F\xD8\x1B" 9623 + "\xB7\xB9\x2B\xAB\xE3\x01\x87\x0F" 9624 + "\xD8\xBB\xC0\x0D\xAC\x2C\x2F\x98" 9625 + "\x3C\x0B\xA2\x99\x4A\x8C\xF7\x04" 9626 + "\xE0\xE0\xCF\xD1\x81\x5B\xFE\xF5" 9627 + "\x24\x04\xFD\xB8\xDF\x13\xD8\xCD" 9628 + "\xF1\xE3\x3D\x98\x50\x02\x77\x9E" 9629 + "\xBC\x22\xAB\xFA\xC2\x43\x1F\x66" 9630 + "\x20\x02\x23\xDA\xDF\xA0\x89\xF6" 9631 + "\xD8\xF3\x45\x24\x53\x6F\x16\x77" 9632 + "\x02\x3E\x7B\x36\x5F\xA0\x3B\x78" 9633 + "\x63\xA2\xBD\xB5\xA4\xCA\x1E\xD3" 9634 + "\x57\xBC\x0B\x9F\x43\x51\x28\x4F" 9635 + "\x07\x50\x6C\x68\x12\x07\xCF\xFA" 9636 + "\x6B\x72\x0B\xEB\xF8\x88\x90\x2C" 9637 + "\x7E\xF5\x91\xD1\x03\xD8\xD5\xBD" 9638 + "\x22\x39\x7B\x16\x03\x01\x69\xAF" 9639 + "\x3D\x38\x66\x28\x0C\xBE\x5B\xC5" 9640 + "\x03\xB4\x2F\x51\x8A\x56\x17\x2B" 9641 + "\x88\x42\x6D\x40\x68\x8F\xD0\x11" 9642 + "\x19\xF9\x1F\x43\x79\x95\x31\xFA" 9643 + "\x28\x7A\x3D\xF7\x66\xEB\xEF\xAC" 9644 + "\x06\xB2\x01\xAD\xDB\x68\xDB\xEC" 9645 + "\x8D\x53\x6E\x72\x68\xA3\xC7\x63" 9646 + "\x43\x2B\x78\xE0\x04\x29\x8F\x72" 9647 + "\xB2\x2C\xE6\x84\x03\x30\x6D\xCD" 9648 + "\x26\x92\x37\xE1\x2F\xBB\x8B\x9D" 9649 + "\xE4\x4C\xF6\x93\xBC\xD9\xAD\x44" 9650 + "\x52\x65\xC7\xB0\x0E\x3F\x0E\x61" 9651 + "\x56\x5D\x1C\x6D\xA7\x05\x2E\xBC" 9652 + "\x58\x08\x15\xAB\x12\xAB\x17\x4A" 9653 + "\x5E\x1C\xF2\xCD\xB8\xA2\xAE\xFB" 9654 + "\x9B\x2E\x0E\x85\x34\x80\x0E\x3F" 9655 + "\x4C\xB8\xDB\xCE\x1C\x90\xA1\x61" 9656 + "\x6C\x69\x09\x35\x9E\xD4\xF4\xAD" 9657 + "\xBC\x06\x41\xE3\x01\xB4\x4E\x0A" 9658 + "\xE0\x1F\x91\xF8\x82\x96\x2D\x65" 9659 + "\xA3\xAA\x13\xCC\x50\xFF\x7B\x02", 9660 + .ilen = 496, 9661 + .result = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 9662 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 9663 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 9664 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 9665 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 9666 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 9667 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 9668 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 9669 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 9670 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 9671 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 9672 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 9673 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 9674 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 9675 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 9676 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 9677 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 9678 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 9679 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 9680 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 9681 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 9682 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 9683 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 9684 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 9685 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 9686 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 9687 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 9688 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 9689 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 9690 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 9691 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB" 9692 + "\x54\xE0\x49\xB2\x1B\xA7\x10\x79" 9693 + "\x05\x6E\xD7\x40\xCC\x35\x9E\x07" 9694 + "\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8" 9695 + "\x21\x8A\x16\x7F\xE8\x51\xDD\x46" 9696 + "\xAF\x18\xA4\x0D\x76\x02\x6B\xD4" 9697 + "\x3D\xC9\x32\x9B\x04\x90\xF9\x62" 9698 + "\xEE\x57\xC0\x29\xB5\x1E\x87\x13" 9699 + "\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1" 9700 + "\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F" 9701 + "\x98\x01\x8D\xF6\x5F\xEB\x54\xBD" 9702 + "\x26\xB2\x1B\x84\x10\x79\xE2\x4B" 9703 + "\xD7\x40\xA9\x12\x9E\x07\x70\xFC" 9704 + "\x65\xCE\x37\xC3\x2C\x95\x21\x8A" 9705 + "\xF3\x5C\xE8\x51\xBA\x23\xAF\x18" 9706 + "\x81\x0D\x76\xDF\x48\xD4\x3D\xA6" 9707 + "\x0F\x9B\x04\x6D\xF9\x62\xCB\x34" 9708 + "\xC0\x29\x92\x1E\x87\xF0\x59\xE5" 9709 + "\x4E\xB7\x20\xAC\x15\x7E\x0A\x73" 9710 + "\xDC\x45\xD1\x3A\xA3\x0C\x98\x01" 9711 + "\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F" 9712 + "\x1B\x84\xED\x56\xE2\x4B\xB4\x1D" 9713 + "\xA9\x12\x7B\x07\x70\xD9\x42\xCE" 9714 + "\x37\xA0\x09\x95\xFE\x67\xF3\x5C" 9715 + "\xC5\x2E\xBA\x23\x8C\x18\x81\xEA" 9716 + "\x53\xDF\x48\xB1\x1A\xA6\x0F\x78" 9717 + "\x04\x6D\xD6\x3F\xCB\x34\x9D\x06" 9718 + "\x92\xFB\x64\xF0\x59\xC2\x2B\xB7" 9719 + "\x20\x89\x15\x7E\xE7\x50\xDC\x45" 9720 + "\xAE\x17\xA3\x0C\x75\x01\x6A\xD3" 9721 + "\x3C\xC8\x31\x9A\x03\x8F\xF8\x61" 9722 + "\xED\x56\xBF\x28\xB4\x1D\x86\x12", 9723 + .rlen = 496, 9724 + .also_non_np = 1, 9725 + .np = 2, 9726 + .tap = { 496 - 16, 16 }, 13330 9727 }, 13331 9728 }; 13332 9729 ··· 15011 11134 .klen = 64, 15012 11135 .iv = "\xff\x00\x00\x00\x00\x00\x00\x00" 15013 11136 "\x00\x00\x00\x00\x00\x00\x00\x00", 15014 - "\x00\x00\x00\x00\x00\x00\x00\x00", 15015 - "\x00\x00\x00\x00\x00\x00\x00\x00", 15016 11137 .input = "\x00\x01\x02\x03\x04\x05\x06\x07" 15017 11138 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" 15018 11139 "\x10\x11\x12\x13\x14\x15\x16\x17" ··· 15353 11478 .klen = 64, 15354 11479 .iv = "\xff\x00\x00\x00\x00\x00\x00\x00" 15355 11480 "\x00\x00\x00\x00\x00\x00\x00\x00", 15356 - "\x00\x00\x00\x00\x00\x00\x00\x00", 15357 - "\x00\x00\x00\x00\x00\x00\x00\x00", 15358 11481 .input = "\x1c\x3b\x3a\x10\x2f\x77\x03\x86" 15359 11482 "\xe4\x83\x6c\x99\xe3\x70\xcf\x9b" 15360 11483 "\xea\x00\x80\x3f\x5e\x48\x23\x57" ··· 15566 11693 "\xdf\xc9\xc5\x8d\xb6\x7a\xad\xa6" 15567 11694 "\x13\xc2\xdd\x08\x45\x79\x41\xa6", 15568 11695 .rlen = 64, 15569 - } 11696 + }, { /* Generated with Crypto++ */ 11697 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55" 11698 + "\x0F\x32\x55\x78\x9B\xBE\x78\x9B" 11699 + "\xBE\xE1\x04\x27\xE1\x04\x27\x4A" 11700 + "\x6D\x90\x4A\x6D\x90\xB3\xD6\xF9", 11701 + .klen = 32, 11702 + .iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" 11703 + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD", 11704 + .input = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 11705 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 11706 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 11707 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 11708 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 11709 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 11710 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 11711 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 11712 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 11713 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 11714 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 11715 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 11716 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 11717 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 11718 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 11719 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 11720 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 11721 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 11722 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 11723 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 11724 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 11725 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 11726 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 11727 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 11728 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 11729 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 11730 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 11731 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 11732 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 11733 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 11734 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB" 11735 + "\x54\xE0\x49\xB2\x1B\xA7\x10\x79" 11736 + "\x05\x6E\xD7\x40\xCC\x35\x9E\x07" 11737 + "\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8" 11738 + "\x21\x8A\x16\x7F\xE8\x51\xDD\x46" 11739 + "\xAF\x18\xA4\x0D\x76\x02\x6B\xD4" 11740 + "\x3D\xC9\x32\x9B\x04\x90\xF9\x62" 11741 + "\xEE\x57\xC0\x29\xB5\x1E\x87\x13" 11742 + "\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1" 11743 + "\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F" 11744 + "\x98\x01\x8D\xF6\x5F\xEB\x54\xBD" 11745 + "\x26\xB2\x1B\x84\x10\x79\xE2\x4B" 11746 + "\xD7\x40\xA9\x12\x9E\x07\x70\xFC" 11747 + "\x65\xCE\x37\xC3\x2C\x95\x21\x8A" 11748 + "\xF3\x5C\xE8\x51\xBA\x23\xAF\x18" 11749 + "\x81\x0D\x76\xDF\x48\xD4\x3D\xA6" 11750 + "\x0F\x9B\x04\x6D\xF9\x62\xCB\x34" 11751 + "\xC0\x29\x92\x1E\x87\xF0\x59\xE5" 11752 + "\x4E\xB7\x20\xAC\x15\x7E\x0A\x73" 11753 + "\xDC\x45\xD1\x3A\xA3\x0C\x98\x01" 11754 + "\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F" 11755 + "\x1B\x84\xED\x56\xE2\x4B\xB4\x1D" 11756 + "\xA9\x12\x7B\x07\x70\xD9\x42\xCE" 11757 + "\x37\xA0\x09\x95\xFE\x67\xF3\x5C" 11758 + "\xC5\x2E\xBA\x23\x8C\x18\x81\xEA" 11759 + "\x53\xDF\x48\xB1\x1A\xA6\x0F\x78" 11760 + "\x04\x6D\xD6\x3F\xCB\x34\x9D\x06" 11761 + "\x92\xFB\x64\xF0\x59\xC2\x2B\xB7" 11762 + "\x20\x89\x15\x7E\xE7\x50\xDC\x45" 11763 + "\xAE\x17\xA3\x0C\x75\x01\x6A\xD3" 11764 + "\x3C\xC8\x31\x9A\x03\x8F\xF8\x61" 11765 + "\xED\x56\xBF\x28\xB4\x1D\x86\x12", 11766 + .ilen = 496, 11767 + .result = "\x04\xF3\xD3\x88\x17\xEF\xDC\xEF" 11768 + "\x8B\x04\xF8\x3A\x66\x8D\x1A\x53" 11769 + "\x57\x1F\x4B\x23\xE4\xA0\xAF\xF9" 11770 + "\x69\x95\x35\x98\x8D\x4D\x8C\xC1" 11771 + "\xF0\xB2\x7F\x80\xBB\x54\x28\xA2" 11772 + "\x7A\x1B\x9F\x77\xEC\x0E\x6E\xDE" 11773 + "\xF0\xEC\xB8\xE4\x20\x62\xEE\xDB" 11774 + "\x5D\xF5\xDD\xE3\x54\xFC\xDD\xEB" 11775 + "\x6A\xEE\x65\xA1\x21\xD6\xD7\x81" 11776 + "\x47\x61\x12\x4D\xC2\x8C\xFA\x78" 11777 + "\x1F\x28\x02\x01\xC3\xFC\x1F\xEC" 11778 + "\x0F\x10\x4F\xB3\x12\x45\xC6\x3B" 11779 + "\x7E\x08\xF9\x5A\xD0\x5D\x73\x2D" 11780 + "\x58\xA4\xE5\xCB\x1C\xB4\xCE\x74" 11781 + "\x32\x41\x1F\x31\x9C\x08\xA2\x5D" 11782 + "\x67\xEB\x72\x1D\xF8\xE7\x70\x54" 11783 + "\x34\x4B\x31\x69\x84\x66\x96\x44" 11784 + "\x56\xCC\x1E\xD9\xE6\x13\x6A\xB9" 11785 + "\x2D\x0A\x05\x45\x2D\x90\xCC\xDF" 11786 + "\x16\x5C\x5F\x79\x34\x52\x54\xFE" 11787 + "\xFE\xCD\xAD\x04\x2E\xAD\x86\x06" 11788 + "\x1F\x37\xE8\x28\xBC\xD3\x8F\x5B" 11789 + "\x92\x66\x87\x3B\x8A\x0A\x1A\xCC" 11790 + "\x6E\xAB\x9F\x0B\xFA\x5C\xE6\xFD" 11791 + "\x3C\x98\x08\x12\xEC\xAA\x9E\x11" 11792 + "\xCA\xB2\x1F\xCE\x5E\x5B\xB2\x72" 11793 + "\x9C\xCC\x5D\xC5\xE0\x32\xC0\x56" 11794 + "\xD5\x45\x16\xD2\xAF\x13\x66\xF7" 11795 + "\x8C\x67\xAC\x79\xB2\xAF\x56\x27" 11796 + "\x3F\xCC\xFE\xCB\x1E\xC0\x75\xF1" 11797 + "\xA7\xC9\xC3\x1D\x8E\xDD\xF9\xD4" 11798 + "\x42\xC8\x21\x08\x16\xF7\x01\xD7" 11799 + "\xAC\x8E\x3F\x1D\x56\xC1\x06\xE4" 11800 + "\x9C\x62\xD6\xA5\x6A\x50\x44\xB3" 11801 + "\x35\x1C\x82\xB9\x10\xF9\x42\xA1" 11802 + "\xFC\x74\x9B\x44\x4F\x25\x02\xE3" 11803 + "\x08\xF5\xD4\x32\x39\x08\x11\xE8" 11804 + "\xD2\x6B\x50\x53\xD4\x08\xD1\x6B" 11805 + "\x3A\x4A\x68\x7B\x7C\xCD\x46\x5E" 11806 + "\x0D\x07\x19\xDB\x67\xD7\x98\x91" 11807 + "\xD7\x17\x10\x9B\x7B\x8A\x9B\x33" 11808 + "\xAE\xF3\x00\xA6\xD4\x15\xD9\xEA" 11809 + "\x85\x99\x22\xE8\x91\x38\x70\x83" 11810 + "\x93\x01\x24\x6C\xFA\x9A\xB9\x07" 11811 + "\xEA\x8D\x3B\xD9\x2A\x43\x59\x16" 11812 + "\x2F\x69\xEE\x84\x36\x44\x76\x98" 11813 + "\xF3\x04\x2A\x7C\x74\x3D\x29\x2B" 11814 + "\x0D\xAD\x8F\x44\x82\x9E\x57\x8D" 11815 + "\xAC\xED\x18\x1F\x50\xA4\xF5\x98" 11816 + "\x1F\xBD\x92\x91\x1B\x2D\xA6\xD6" 11817 + "\xD2\xE3\x02\xAA\x92\x3B\xC6\xB3" 11818 + "\x1B\x39\x72\xD5\x26\xCA\x04\xE0" 11819 + "\xFC\x58\x78\xBB\xB1\x3F\xA1\x9C" 11820 + "\x42\x24\x3E\x2E\x22\xBB\x4B\xBA" 11821 + "\xF4\x52\x0A\xE6\xAE\x47\xB4\x7D" 11822 + "\x1D\xA8\xBE\x81\x1A\x75\xDA\xAC" 11823 + "\xA6\x25\x1E\xEF\x3A\xC0\x6C\x63" 11824 + "\xEF\xDC\xC9\x79\x10\x26\xE8\x61" 11825 + "\x29\xFC\xA4\x05\xDF\x7D\x5C\x63" 11826 + "\x10\x09\x9B\x46\x9B\xF2\x2C\x2B" 11827 + "\xFA\x3A\x05\x4C\xFA\xD1\xFF\xFE" 11828 + "\xF1\x4C\xE5\xB2\x91\x64\x0C\x51", 11829 + .rlen = 496, 11830 + .also_non_np = 1, 11831 + .np = 2, 11832 + .tap = { 496 - 16, 16 }, 11833 + }, { /* Generated with Crypto++ */ 11834 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55" 11835 + "\x0F\x32\x55\x78\x9B\xBE\x78\x9B" 11836 + "\xBE\xE1\x04\x27\xE1\x04\x27\x4A" 11837 + "\x6D\x90\x4A\x6D\x90\xB3\xD6\xF9", 11838 + .klen = 32, 11839 + .iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47" 11840 + "\xE2\x7D\x18\xD6\x71\x0C\xA7\x42", 11841 + .input = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 11842 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 11843 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 11844 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 11845 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 11846 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 11847 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 11848 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 11849 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 11850 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 11851 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 11852 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 11853 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 11854 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 11855 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 11856 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 11857 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 11858 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 11859 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 11860 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 11861 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 11862 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 11863 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 11864 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 11865 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 11866 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 11867 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 11868 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 11869 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 11870 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 11871 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB" 11872 + "\x54\xE0\x49\xB2\x1B\xA7\x10\x79" 11873 + "\x05\x6E\xD7\x40\xCC\x35\x9E\x07" 11874 + "\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8" 11875 + "\x21\x8A\x16\x7F\xE8\x51\xDD\x46" 11876 + "\xAF\x18\xA4\x0D\x76\x02\x6B\xD4" 11877 + "\x3D\xC9\x32\x9B\x04\x90\xF9\x62" 11878 + "\xEE\x57\xC0\x29\xB5\x1E\x87\x13" 11879 + "\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1" 11880 + "\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F" 11881 + "\x98\x01\x8D\xF6\x5F\xEB\x54\xBD" 11882 + "\x26\xB2\x1B\x84\x10\x79\xE2\x4B" 11883 + "\xD7\x40\xA9\x12\x9E\x07\x70\xFC" 11884 + "\x65\xCE\x37\xC3\x2C\x95\x21\x8A" 11885 + "\xF3\x5C\xE8\x51\xBA\x23\xAF\x18" 11886 + "\x81\x0D\x76\xDF\x48\xD4\x3D\xA6" 11887 + "\x0F\x9B\x04\x6D\xF9\x62\xCB\x34" 11888 + "\xC0\x29\x92\x1E\x87\xF0\x59\xE5" 11889 + "\x4E\xB7\x20\xAC\x15\x7E\x0A\x73" 11890 + "\xDC\x45\xD1\x3A\xA3\x0C\x98\x01" 11891 + "\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F" 11892 + "\x1B\x84\xED\x56\xE2\x4B\xB4\x1D" 11893 + "\xA9\x12\x7B\x07\x70\xD9\x42\xCE" 11894 + "\x37\xA0\x09\x95\xFE\x67\xF3\x5C" 11895 + "\xC5\x2E\xBA\x23\x8C\x18\x81\xEA" 11896 + "\x53\xDF\x48\xB1\x1A\xA6\x0F\x78" 11897 + "\x04\x6D\xD6\x3F\xCB\x34\x9D\x06" 11898 + "\x92\xFB\x64\xF0\x59\xC2\x2B\xB7" 11899 + "\x20\x89\x15\x7E\xE7\x50\xDC\x45" 11900 + "\xAE\x17\xA3\x0C\x75\x01\x6A\xD3" 11901 + "\x3C\xC8\x31\x9A\x03\x8F\xF8\x61" 11902 + "\xED\x56\xBF\x28\xB4\x1D\x86\x12" 11903 + "\x7B\xE4\x4D", 11904 + .ilen = 499, 11905 + .result = "\xDA\x4E\x3F\xBC\xE8\xB6\x3A\xA2" 11906 + "\xD5\x4D\x84\x4A\xA9\x0C\xE1\xA5" 11907 + "\xB8\x73\xBC\xF9\xBB\x59\x2F\x44" 11908 + "\x8B\xAB\x82\x6C\xB4\x32\x9A\xDE" 11909 + "\x5A\x0B\xDB\x7A\x6B\xF2\x38\x9F" 11910 + "\x06\xF7\xF7\xFF\xFF\xC0\x8A\x2E" 11911 + "\x76\xEA\x06\x32\x23\xF3\x59\x2E" 11912 + "\x75\xDE\x71\x86\x3C\x98\x23\x44" 11913 + "\x5B\xF2\xFA\x6A\x00\xBB\xC1\xAD" 11914 + "\x58\xBD\x3E\x6F\x2E\xB4\x19\x04" 11915 + "\x70\x8B\x92\x55\x23\xE9\x6A\x3A" 11916 + "\x78\x7A\x1B\x10\x85\x52\x9C\x12" 11917 + "\xE4\x55\x81\x21\xCE\x53\xD0\x3B" 11918 + "\x63\x77\x2C\x74\xD1\xF5\x60\xF3" 11919 + "\xA1\xDE\x44\x3C\x8F\x4D\x2F\xDD" 11920 + "\x8A\xFE\x3C\x42\x8E\xD3\xF2\x8E" 11921 + "\xA8\x28\x69\x65\x31\xE1\x45\x83" 11922 + "\xE4\x49\xC4\x9C\xA7\x28\xAA\x21" 11923 + "\xCD\x5D\x0F\x15\xB7\x93\x07\x26" 11924 + "\xB0\x65\x6D\x91\x90\x23\x7A\xC6" 11925 + "\xDB\x68\xB0\xA1\x8E\xA4\x76\x4E" 11926 + "\xC6\x91\x83\x20\x92\x4D\x63\x7A" 11927 + "\x45\x18\x18\x74\x19\xAD\x71\x01" 11928 + "\x6B\x23\xAD\x9D\x4E\xE4\x6E\x46" 11929 + "\xC9\x73\x7A\xF9\x02\x95\xF4\x07" 11930 + "\x0E\x7A\xA6\xC5\xAE\xFA\x15\x2C" 11931 + "\x51\x71\xF1\xDC\x22\xB6\xAC\xD8" 11932 + "\x19\x24\x44\xBC\x0C\xFB\x3C\x2D" 11933 + "\xB1\x50\x47\x15\x0E\xDB\xB6\xD7" 11934 + "\xE8\x61\xE5\x95\x52\x1E\x3E\x49" 11935 + "\x70\xE9\x66\x04\x4C\xE1\xAF\xBD" 11936 + "\xDD\x15\x3B\x20\x59\x24\xFF\xB0" 11937 + "\x39\xAA\xE7\xBF\x23\xA3\x6E\xD5" 11938 + "\x15\xF0\x61\x4F\xAE\x89\x10\x58" 11939 + "\x5A\x33\x95\x52\x2A\xB5\x77\x9C" 11940 + "\xA5\x43\x80\x40\x27\x2D\xAE\xD9" 11941 + "\x3F\xE0\x80\x94\x78\x79\xCB\x7E" 11942 + "\xAD\x12\x44\x4C\xEC\x27\xB0\xEE" 11943 + "\x0B\x05\x2A\x82\x99\x58\xBB\x7A" 11944 + "\x8D\x6D\x9D\x8E\xE2\x8E\xE7\x93" 11945 + "\x2F\xB3\x09\x8D\x06\xD5\xEE\x70" 11946 + "\x16\xAE\x35\xC5\x52\x0F\x46\x1F" 11947 + "\x71\xF9\x5E\xF2\x67\xDC\x98\x2F" 11948 + "\xA3\x23\xAA\xD5\xD0\x49\xF4\xA6" 11949 + "\xF6\xB8\x32\xCD\xD6\x85\x73\x60" 11950 + "\x59\x20\xE7\x55\x0E\x91\xE2\x0C" 11951 + "\x3F\x1C\xEB\x3D\xDF\x52\x64\xF2" 11952 + "\x7D\x8B\x5D\x63\x16\xB9\xB2\x5D" 11953 + "\x5E\xAB\xB2\x97\xAB\x78\x44\xE7" 11954 + "\xC6\x72\x20\xC5\x90\x9B\xDC\x5D" 11955 + "\xB0\xEF\x44\xEF\x87\x31\x8D\xF4" 11956 + "\xFB\x81\x5D\xF7\x96\x96\xD4\x50" 11957 + "\x89\xA7\xF6\xB9\x67\x76\x40\x9E" 11958 + "\x9D\x40\xD5\x2C\x30\xB8\x01\x8F" 11959 + "\xE4\x7B\x71\x48\xA9\xA0\xA0\x1D" 11960 + "\x87\x52\xA4\x91\xA9\xD7\xA9\x51" 11961 + "\xD9\x59\xF7\xCC\x63\x22\xC1\x8D" 11962 + "\x84\x7B\xD8\x22\x32\x5C\x6F\x1D" 11963 + "\x6E\x9F\xFA\xDD\x49\x40\xDC\x37" 11964 + "\x14\x8C\xE1\x80\x1B\xDD\x36\x2A" 11965 + "\xD0\xE9\x54\x99\x5D\xBA\x3B\x11" 11966 + "\xD8\xFE\xC9\x5B\x5C\x25\xE5\x76" 11967 + "\xFB\xF2\x3F", 11968 + .rlen = 499, 11969 + .also_non_np = 1, 11970 + .np = 2, 11971 + .tap = { 499 - 16, 16 }, 11972 + }, 15570 11973 }; 15571 11974 15572 11975 static struct cipher_testvec aes_ctr_dec_tv_template[] = { ··· 15921 11772 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" 15922 11773 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", 15923 11774 .rlen = 64, 15924 - } 11775 + }, { /* Generated with Crypto++ */ 11776 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55" 11777 + "\x0F\x32\x55\x78\x9B\xBE\x78\x9B" 11778 + "\xBE\xE1\x04\x27\xE1\x04\x27\x4A" 11779 + "\x6D\x90\x4A\x6D\x90\xB3\xD6\xF9", 11780 + .klen = 32, 11781 + .iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" 11782 + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD", 11783 + .input = "\x04\xF3\xD3\x88\x17\xEF\xDC\xEF" 11784 + "\x8B\x04\xF8\x3A\x66\x8D\x1A\x53" 11785 + "\x57\x1F\x4B\x23\xE4\xA0\xAF\xF9" 11786 + "\x69\x95\x35\x98\x8D\x4D\x8C\xC1" 11787 + "\xF0\xB2\x7F\x80\xBB\x54\x28\xA2" 11788 + "\x7A\x1B\x9F\x77\xEC\x0E\x6E\xDE" 11789 + "\xF0\xEC\xB8\xE4\x20\x62\xEE\xDB" 11790 + "\x5D\xF5\xDD\xE3\x54\xFC\xDD\xEB" 11791 + "\x6A\xEE\x65\xA1\x21\xD6\xD7\x81" 11792 + "\x47\x61\x12\x4D\xC2\x8C\xFA\x78" 11793 + "\x1F\x28\x02\x01\xC3\xFC\x1F\xEC" 11794 + "\x0F\x10\x4F\xB3\x12\x45\xC6\x3B" 11795 + "\x7E\x08\xF9\x5A\xD0\x5D\x73\x2D" 11796 + "\x58\xA4\xE5\xCB\x1C\xB4\xCE\x74" 11797 + "\x32\x41\x1F\x31\x9C\x08\xA2\x5D" 11798 + "\x67\xEB\x72\x1D\xF8\xE7\x70\x54" 11799 + "\x34\x4B\x31\x69\x84\x66\x96\x44" 11800 + "\x56\xCC\x1E\xD9\xE6\x13\x6A\xB9" 11801 + "\x2D\x0A\x05\x45\x2D\x90\xCC\xDF" 11802 + "\x16\x5C\x5F\x79\x34\x52\x54\xFE" 11803 + "\xFE\xCD\xAD\x04\x2E\xAD\x86\x06" 11804 + "\x1F\x37\xE8\x28\xBC\xD3\x8F\x5B" 11805 + "\x92\x66\x87\x3B\x8A\x0A\x1A\xCC" 11806 + "\x6E\xAB\x9F\x0B\xFA\x5C\xE6\xFD" 11807 + "\x3C\x98\x08\x12\xEC\xAA\x9E\x11" 11808 + "\xCA\xB2\x1F\xCE\x5E\x5B\xB2\x72" 11809 + "\x9C\xCC\x5D\xC5\xE0\x32\xC0\x56" 11810 + "\xD5\x45\x16\xD2\xAF\x13\x66\xF7" 11811 + "\x8C\x67\xAC\x79\xB2\xAF\x56\x27" 11812 + "\x3F\xCC\xFE\xCB\x1E\xC0\x75\xF1" 11813 + "\xA7\xC9\xC3\x1D\x8E\xDD\xF9\xD4" 11814 + "\x42\xC8\x21\x08\x16\xF7\x01\xD7" 11815 + "\xAC\x8E\x3F\x1D\x56\xC1\x06\xE4" 11816 + "\x9C\x62\xD6\xA5\x6A\x50\x44\xB3" 11817 + "\x35\x1C\x82\xB9\x10\xF9\x42\xA1" 11818 + "\xFC\x74\x9B\x44\x4F\x25\x02\xE3" 11819 + "\x08\xF5\xD4\x32\x39\x08\x11\xE8" 11820 + "\xD2\x6B\x50\x53\xD4\x08\xD1\x6B" 11821 + "\x3A\x4A\x68\x7B\x7C\xCD\x46\x5E" 11822 + "\x0D\x07\x19\xDB\x67\xD7\x98\x91" 11823 + "\xD7\x17\x10\x9B\x7B\x8A\x9B\x33" 11824 + "\xAE\xF3\x00\xA6\xD4\x15\xD9\xEA" 11825 + "\x85\x99\x22\xE8\x91\x38\x70\x83" 11826 + "\x93\x01\x24\x6C\xFA\x9A\xB9\x07" 11827 + "\xEA\x8D\x3B\xD9\x2A\x43\x59\x16" 11828 + "\x2F\x69\xEE\x84\x36\x44\x76\x98" 11829 + "\xF3\x04\x2A\x7C\x74\x3D\x29\x2B" 11830 + "\x0D\xAD\x8F\x44\x82\x9E\x57\x8D" 11831 + "\xAC\xED\x18\x1F\x50\xA4\xF5\x98" 11832 + "\x1F\xBD\x92\x91\x1B\x2D\xA6\xD6" 11833 + "\xD2\xE3\x02\xAA\x92\x3B\xC6\xB3" 11834 + "\x1B\x39\x72\xD5\x26\xCA\x04\xE0" 11835 + "\xFC\x58\x78\xBB\xB1\x3F\xA1\x9C" 11836 + "\x42\x24\x3E\x2E\x22\xBB\x4B\xBA" 11837 + "\xF4\x52\x0A\xE6\xAE\x47\xB4\x7D" 11838 + "\x1D\xA8\xBE\x81\x1A\x75\xDA\xAC" 11839 + "\xA6\x25\x1E\xEF\x3A\xC0\x6C\x63" 11840 + "\xEF\xDC\xC9\x79\x10\x26\xE8\x61" 11841 + "\x29\xFC\xA4\x05\xDF\x7D\x5C\x63" 11842 + "\x10\x09\x9B\x46\x9B\xF2\x2C\x2B" 11843 + "\xFA\x3A\x05\x4C\xFA\xD1\xFF\xFE" 11844 + "\xF1\x4C\xE5\xB2\x91\x64\x0C\x51", 11845 + .ilen = 496, 11846 + .result = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 11847 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 11848 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 11849 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 11850 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 11851 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 11852 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 11853 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 11854 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 11855 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 11856 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 11857 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 11858 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 11859 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 11860 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 11861 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 11862 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 11863 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 11864 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 11865 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 11866 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 11867 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 11868 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 11869 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 11870 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 11871 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 11872 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 11873 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 11874 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 11875 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 11876 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB" 11877 + "\x54\xE0\x49\xB2\x1B\xA7\x10\x79" 11878 + "\x05\x6E\xD7\x40\xCC\x35\x9E\x07" 11879 + "\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8" 11880 + "\x21\x8A\x16\x7F\xE8\x51\xDD\x46" 11881 + "\xAF\x18\xA4\x0D\x76\x02\x6B\xD4" 11882 + "\x3D\xC9\x32\x9B\x04\x90\xF9\x62" 11883 + "\xEE\x57\xC0\x29\xB5\x1E\x87\x13" 11884 + "\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1" 11885 + "\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F" 11886 + "\x98\x01\x8D\xF6\x5F\xEB\x54\xBD" 11887 + "\x26\xB2\x1B\x84\x10\x79\xE2\x4B" 11888 + "\xD7\x40\xA9\x12\x9E\x07\x70\xFC" 11889 + "\x65\xCE\x37\xC3\x2C\x95\x21\x8A" 11890 + "\xF3\x5C\xE8\x51\xBA\x23\xAF\x18" 11891 + "\x81\x0D\x76\xDF\x48\xD4\x3D\xA6" 11892 + "\x0F\x9B\x04\x6D\xF9\x62\xCB\x34" 11893 + "\xC0\x29\x92\x1E\x87\xF0\x59\xE5" 11894 + "\x4E\xB7\x20\xAC\x15\x7E\x0A\x73" 11895 + "\xDC\x45\xD1\x3A\xA3\x0C\x98\x01" 11896 + "\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F" 11897 + "\x1B\x84\xED\x56\xE2\x4B\xB4\x1D" 11898 + "\xA9\x12\x7B\x07\x70\xD9\x42\xCE" 11899 + "\x37\xA0\x09\x95\xFE\x67\xF3\x5C" 11900 + "\xC5\x2E\xBA\x23\x8C\x18\x81\xEA" 11901 + "\x53\xDF\x48\xB1\x1A\xA6\x0F\x78" 11902 + "\x04\x6D\xD6\x3F\xCB\x34\x9D\x06" 11903 + "\x92\xFB\x64\xF0\x59\xC2\x2B\xB7" 11904 + "\x20\x89\x15\x7E\xE7\x50\xDC\x45" 11905 + "\xAE\x17\xA3\x0C\x75\x01\x6A\xD3" 11906 + "\x3C\xC8\x31\x9A\x03\x8F\xF8\x61" 11907 + "\xED\x56\xBF\x28\xB4\x1D\x86\x12", 11908 + .rlen = 496, 11909 + .also_non_np = 1, 11910 + .np = 2, 11911 + .tap = { 496 - 16, 16 }, 11912 + }, { /* Generated with Crypto++ */ 11913 + .key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55" 11914 + "\x0F\x32\x55\x78\x9B\xBE\x78\x9B" 11915 + "\xBE\xE1\x04\x27\xE1\x04\x27\x4A" 11916 + "\x6D\x90\x4A\x6D\x90\xB3\xD6\xF9", 11917 + .klen = 32, 11918 + .iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47" 11919 + "\xE2\x7D\x18\xD6\x71\x0C\xA7\x42", 11920 + .input = "\xDA\x4E\x3F\xBC\xE8\xB6\x3A\xA2" 11921 + "\xD5\x4D\x84\x4A\xA9\x0C\xE1\xA5" 11922 + "\xB8\x73\xBC\xF9\xBB\x59\x2F\x44" 11923 + "\x8B\xAB\x82\x6C\xB4\x32\x9A\xDE" 11924 + "\x5A\x0B\xDB\x7A\x6B\xF2\x38\x9F" 11925 + "\x06\xF7\xF7\xFF\xFF\xC0\x8A\x2E" 11926 + "\x76\xEA\x06\x32\x23\xF3\x59\x2E" 11927 + "\x75\xDE\x71\x86\x3C\x98\x23\x44" 11928 + "\x5B\xF2\xFA\x6A\x00\xBB\xC1\xAD" 11929 + "\x58\xBD\x3E\x6F\x2E\xB4\x19\x04" 11930 + "\x70\x8B\x92\x55\x23\xE9\x6A\x3A" 11931 + "\x78\x7A\x1B\x10\x85\x52\x9C\x12" 11932 + "\xE4\x55\x81\x21\xCE\x53\xD0\x3B" 11933 + "\x63\x77\x2C\x74\xD1\xF5\x60\xF3" 11934 + "\xA1\xDE\x44\x3C\x8F\x4D\x2F\xDD" 11935 + "\x8A\xFE\x3C\x42\x8E\xD3\xF2\x8E" 11936 + "\xA8\x28\x69\x65\x31\xE1\x45\x83" 11937 + "\xE4\x49\xC4\x9C\xA7\x28\xAA\x21" 11938 + "\xCD\x5D\x0F\x15\xB7\x93\x07\x26" 11939 + "\xB0\x65\x6D\x91\x90\x23\x7A\xC6" 11940 + "\xDB\x68\xB0\xA1\x8E\xA4\x76\x4E" 11941 + "\xC6\x91\x83\x20\x92\x4D\x63\x7A" 11942 + "\x45\x18\x18\x74\x19\xAD\x71\x01" 11943 + "\x6B\x23\xAD\x9D\x4E\xE4\x6E\x46" 11944 + "\xC9\x73\x7A\xF9\x02\x95\xF4\x07" 11945 + "\x0E\x7A\xA6\xC5\xAE\xFA\x15\x2C" 11946 + "\x51\x71\xF1\xDC\x22\xB6\xAC\xD8" 11947 + "\x19\x24\x44\xBC\x0C\xFB\x3C\x2D" 11948 + "\xB1\x50\x47\x15\x0E\xDB\xB6\xD7" 11949 + "\xE8\x61\xE5\x95\x52\x1E\x3E\x49" 11950 + "\x70\xE9\x66\x04\x4C\xE1\xAF\xBD" 11951 + "\xDD\x15\x3B\x20\x59\x24\xFF\xB0" 11952 + "\x39\xAA\xE7\xBF\x23\xA3\x6E\xD5" 11953 + "\x15\xF0\x61\x4F\xAE\x89\x10\x58" 11954 + "\x5A\x33\x95\x52\x2A\xB5\x77\x9C" 11955 + "\xA5\x43\x80\x40\x27\x2D\xAE\xD9" 11956 + "\x3F\xE0\x80\x94\x78\x79\xCB\x7E" 11957 + "\xAD\x12\x44\x4C\xEC\x27\xB0\xEE" 11958 + "\x0B\x05\x2A\x82\x99\x58\xBB\x7A" 11959 + "\x8D\x6D\x9D\x8E\xE2\x8E\xE7\x93" 11960 + "\x2F\xB3\x09\x8D\x06\xD5\xEE\x70" 11961 + "\x16\xAE\x35\xC5\x52\x0F\x46\x1F" 11962 + "\x71\xF9\x5E\xF2\x67\xDC\x98\x2F" 11963 + "\xA3\x23\xAA\xD5\xD0\x49\xF4\xA6" 11964 + "\xF6\xB8\x32\xCD\xD6\x85\x73\x60" 11965 + "\x59\x20\xE7\x55\x0E\x91\xE2\x0C" 11966 + "\x3F\x1C\xEB\x3D\xDF\x52\x64\xF2" 11967 + "\x7D\x8B\x5D\x63\x16\xB9\xB2\x5D" 11968 + "\x5E\xAB\xB2\x97\xAB\x78\x44\xE7" 11969 + "\xC6\x72\x20\xC5\x90\x9B\xDC\x5D" 11970 + "\xB0\xEF\x44\xEF\x87\x31\x8D\xF4" 11971 + "\xFB\x81\x5D\xF7\x96\x96\xD4\x50" 11972 + "\x89\xA7\xF6\xB9\x67\x76\x40\x9E" 11973 + "\x9D\x40\xD5\x2C\x30\xB8\x01\x8F" 11974 + "\xE4\x7B\x71\x48\xA9\xA0\xA0\x1D" 11975 + "\x87\x52\xA4\x91\xA9\xD7\xA9\x51" 11976 + "\xD9\x59\xF7\xCC\x63\x22\xC1\x8D" 11977 + "\x84\x7B\xD8\x22\x32\x5C\x6F\x1D" 11978 + "\x6E\x9F\xFA\xDD\x49\x40\xDC\x37" 11979 + "\x14\x8C\xE1\x80\x1B\xDD\x36\x2A" 11980 + "\xD0\xE9\x54\x99\x5D\xBA\x3B\x11" 11981 + "\xD8\xFE\xC9\x5B\x5C\x25\xE5\x76" 11982 + "\xFB\xF2\x3F", 11983 + .ilen = 499, 11984 + .result = "\x50\xB9\x22\xAE\x17\x80\x0C\x75" 11985 + "\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03" 11986 + "\x6C\xF8\x61\xCA\x33\xBF\x28\x91" 11987 + "\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F" 11988 + "\xAB\x14\x7D\x09\x72\xDB\x44\xD0" 11989 + "\x39\xA2\x0B\x97\x00\x69\xF5\x5E" 11990 + "\xC7\x30\xBC\x25\x8E\x1A\x83\xEC" 11991 + "\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A" 11992 + "\x06\x6F\xD8\x41\xCD\x36\x9F\x08" 11993 + "\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9" 11994 + "\x22\x8B\x17\x80\xE9\x52\xDE\x47" 11995 + "\xB0\x19\xA5\x0E\x77\x03\x6C\xD5" 11996 + "\x3E\xCA\x33\x9C\x05\x91\xFA\x63" 11997 + "\xEF\x58\xC1\x2A\xB6\x1F\x88\x14" 11998 + "\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2" 11999 + "\x0B\x74\x00\x69\xD2\x3B\xC7\x30" 12000 + "\x99\x02\x8E\xF7\x60\xEC\x55\xBE" 12001 + "\x27\xB3\x1C\x85\x11\x7A\xE3\x4C" 12002 + "\xD8\x41\xAA\x13\x9F\x08\x71\xFD" 12003 + "\x66\xCF\x38\xC4\x2D\x96\x22\x8B" 12004 + "\xF4\x5D\xE9\x52\xBB\x24\xB0\x19" 12005 + "\x82\x0E\x77\xE0\x49\xD5\x3E\xA7" 12006 + "\x10\x9C\x05\x6E\xFA\x63\xCC\x35" 12007 + "\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6" 12008 + "\x4F\xB8\x21\xAD\x16\x7F\x0B\x74" 12009 + "\xDD\x46\xD2\x3B\xA4\x0D\x99\x02" 12010 + "\x6B\xF7\x60\xC9\x32\xBE\x27\x90" 12011 + "\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E" 12012 + "\xAA\x13\x7C\x08\x71\xDA\x43\xCF" 12013 + "\x38\xA1\x0A\x96\xFF\x68\xF4\x5D" 12014 + "\xC6\x2F\xBB\x24\x8D\x19\x82\xEB" 12015 + "\x54\xE0\x49\xB2\x1B\xA7\x10\x79" 12016 + "\x05\x6E\xD7\x40\xCC\x35\x9E\x07" 12017 + "\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8" 12018 + "\x21\x8A\x16\x7F\xE8\x51\xDD\x46" 12019 + "\xAF\x18\xA4\x0D\x76\x02\x6B\xD4" 12020 + "\x3D\xC9\x32\x9B\x04\x90\xF9\x62" 12021 + "\xEE\x57\xC0\x29\xB5\x1E\x87\x13" 12022 + "\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1" 12023 + "\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F" 12024 + "\x98\x01\x8D\xF6\x5F\xEB\x54\xBD" 12025 + "\x26\xB2\x1B\x84\x10\x79\xE2\x4B" 12026 + "\xD7\x40\xA9\x12\x9E\x07\x70\xFC" 12027 + "\x65\xCE\x37\xC3\x2C\x95\x21\x8A" 12028 + "\xF3\x5C\xE8\x51\xBA\x23\xAF\x18" 12029 + "\x81\x0D\x76\xDF\x48\xD4\x3D\xA6" 12030 + "\x0F\x9B\x04\x6D\xF9\x62\xCB\x34" 12031 + "\xC0\x29\x92\x1E\x87\xF0\x59\xE5" 12032 + "\x4E\xB7\x20\xAC\x15\x7E\x0A\x73" 12033 + "\xDC\x45\xD1\x3A\xA3\x0C\x98\x01" 12034 + "\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F" 12035 + "\x1B\x84\xED\x56\xE2\x4B\xB4\x1D" 12036 + "\xA9\x12\x7B\x07\x70\xD9\x42\xCE" 12037 + "\x37\xA0\x09\x95\xFE\x67\xF3\x5C" 12038 + "\xC5\x2E\xBA\x23\x8C\x18\x81\xEA" 12039 + "\x53\xDF\x48\xB1\x1A\xA6\x0F\x78" 12040 + "\x04\x6D\xD6\x3F\xCB\x34\x9D\x06" 12041 + "\x92\xFB\x64\xF0\x59\xC2\x2B\xB7" 12042 + "\x20\x89\x15\x7E\xE7\x50\xDC\x45" 12043 + "\xAE\x17\xA3\x0C\x75\x01\x6A\xD3" 12044 + "\x3C\xC8\x31\x9A\x03\x8F\xF8\x61" 12045 + "\xED\x56\xBF\x28\xB4\x1D\x86\x12" 12046 + "\x7B\xE4\x4D", 12047 + .rlen = 499, 12048 + .also_non_np = 1, 12049 + .np = 2, 12050 + .tap = { 499 - 16, 16 }, 12051 + }, 15925 12052 }; 15926 12053 15927 12054 static struct cipher_testvec aes_ctr_rfc3686_enc_tv_template[] = { ··· 20716 16291 .result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c" 20717 16292 "\x20\xef\x7c\x91\x9e\x3a\x75\x09", 20718 16293 .rlen = 16, 20719 - }, 20720 - { /* Generated with Crypto++ */ 16294 + }, { /* Generated with Crypto++ */ 20721 16295 .key = "\x3F\x85\x62\x3F\x1C\xF9\xD6\x1C" 20722 16296 "\xF9\xD6\xB3\x90\x6D\x4A\x90\x6D" 20723 16297 "\x4A\x27\x04\xE1\x27\x04\xE1\xBE" ··· 20727 16303 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 20728 16304 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 20729 16305 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 20730 - "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48", 20731 - .ilen = 48, 16306 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 16307 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 16308 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 16309 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 16310 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 16311 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 16312 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 16313 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 16314 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 16315 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 16316 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 16317 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 16318 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 16319 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 16320 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 16321 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 16322 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 16323 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 16324 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 16325 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 16326 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 16327 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 16328 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 16329 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 16330 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 16331 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 16332 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 16333 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 16334 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 16335 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 16336 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 16337 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 16338 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 16339 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 16340 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 16341 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 16342 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 16343 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 16344 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 16345 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 16346 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 16347 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 16348 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 16349 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 16350 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 16351 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 16352 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 16353 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 16354 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 16355 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 16356 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 16357 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 16358 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 16359 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 16360 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 16361 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 16362 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 16363 + .ilen = 496, 20732 16364 .result = "\xED\xCD\xDB\xB8\x68\xCE\xBD\xEA" 20733 16365 "\x9D\x9D\xCD\x9F\x4F\xFC\x4D\xB7" 20734 16366 "\xA5\xFF\x6F\x43\x0F\xBA\x32\x04" 20735 16367 "\xB3\xC2\xB9\x03\xAA\x91\x56\x29" 20736 16368 "\x0D\xD0\xFD\xC4\x65\xA5\x69\xB9" 20737 - "\xF1\xF6\xB1\xA5\xB2\x75\x4F\x8A", 20738 - .rlen = 48, 16369 + "\xF1\xF6\xB1\xA5\xB2\x75\x4F\x8A" 16370 + "\x8D\x7D\x1B\x9B\xC7\x68\x72\xF8" 16371 + "\x01\x9B\x17\x0A\x29\xE7\x61\x28" 16372 + "\x7F\xA7\x50\xCA\x20\x2C\x96\x3B" 16373 + "\x6E\x5C\x5D\x3F\xB5\x7F\xF3\x2B" 16374 + "\x04\xEF\x9D\xD4\xCE\x41\x28\x8E" 16375 + "\x83\x54\xAE\x7C\x82\x46\x10\xC9" 16376 + "\xC4\x8A\x1E\x1F\x4C\xA9\xFC\xEC" 16377 + "\x3C\x8C\x30\xFC\x59\xD2\x54\xC4" 16378 + "\x6F\x50\xC6\xCA\x8C\x14\x5B\x9C" 16379 + "\x18\x56\x5B\xF8\x33\x0E\x4A\xDB" 16380 + "\xEC\xB5\x6E\x5B\x31\xC4\x0E\x98" 16381 + "\x9F\x32\xBA\xA2\x18\xCF\x55\x43" 16382 + "\xFE\x80\x8F\x60\xCF\x05\x30\x9B" 16383 + "\x70\x50\x1E\x9C\x08\x87\xE6\x20" 16384 + "\xD2\xF3\x27\xF8\x2A\x8D\x12\xB2" 16385 + "\xBC\x5F\xFE\x52\x52\xF6\x7F\xB6" 16386 + "\xB8\x30\x86\x3B\x0F\x94\x1E\x79" 16387 + "\x13\x94\x35\xA2\xB1\x35\x5B\x05" 16388 + "\x2A\x98\x6B\x96\x4C\xB1\x20\xBE" 16389 + "\xB6\x14\xC2\x06\xBF\xFD\x5F\x2A" 16390 + "\xF5\x33\xC8\x19\x45\x14\x44\x5D" 16391 + "\xFE\x94\x7B\xBB\x63\x13\x57\xC3" 16392 + "\x2A\x8F\x6C\x11\x2A\x07\xA7\x6A" 16393 + "\xBF\x20\xD3\x99\xC6\x00\x0B\xBF" 16394 + "\x83\x46\x25\x3A\xB0\xF6\xC5\xC8" 16395 + "\x00\xCA\xE5\x28\x4A\x7C\x95\x9C" 16396 + "\x7B\x43\xAB\xF9\xE4\xF8\x74\xAB" 16397 + "\xA7\xB8\x9C\x0F\x53\x7B\xB6\x74" 16398 + "\x60\x64\x0D\x1C\x80\xD1\x20\x9E" 16399 + "\xDC\x14\x27\x9B\xFC\xBD\x5C\x96" 16400 + "\xD2\x51\xDC\x96\xEE\xE5\xEA\x2B" 16401 + "\x02\x7C\xAA\x3C\xDC\x9D\x7B\x01" 16402 + "\x20\xC3\xE1\x0B\xDD\xAB\xF3\x1E" 16403 + "\x19\xA8\x84\x29\x5F\xCC\xC3\x5B" 16404 + "\xE4\x33\x59\xDC\x12\xEB\x2B\x4D" 16405 + "\x5B\x55\x23\xB7\x40\x31\xDE\xEE" 16406 + "\x18\xC9\x3C\x4D\xBC\xED\xE0\x42" 16407 + "\xAD\xDE\xA0\xA3\xC3\xFE\x44\xD3" 16408 + "\xE1\x9A\xDA\xAB\x32\xFC\x1A\xBF" 16409 + "\x63\xA9\xF0\x6A\x08\x46\xBD\x48" 16410 + "\x83\x06\xAB\x82\x99\x01\x16\x1A" 16411 + "\x03\x36\xC5\x59\x6B\xB8\x8C\x9F" 16412 + "\xC6\x51\x3D\xE5\x7F\xBF\xAB\xBC" 16413 + "\xC9\xA1\x88\x34\x5F\xA9\x7C\x3B" 16414 + "\x9F\x1B\x98\x2B\x4F\xFB\x9B\xF0" 16415 + "\xCD\xB6\x45\xB2\x29\x2E\x34\x23" 16416 + "\xA9\x97\xC0\x22\x8C\x42\x9B\x5F" 16417 + "\x40\xC8\xD7\x3D\x82\x9A\x6F\xAA" 16418 + "\x74\x83\x29\x05\xE8\xC4\x4D\x01" 16419 + "\xB5\xE5\x84\x3F\x7F\xD3\xE0\x99" 16420 + "\xDA\xE7\x6F\x30\xFD\xAA\x92\x30" 16421 + "\xA5\x46\x8B\xA2\xE6\x58\x62\x7C" 16422 + "\x2C\x35\x1B\x38\x85\x7D\xE8\xF3" 16423 + "\x87\x4F\xDA\xD8\x5F\xFC\xB6\x44" 16424 + "\xD0\xE3\x9B\x8B\xBF\xD6\xB8\xC4" 16425 + "\x73\xAE\x1D\x8B\x5B\x74\x8B\xCB", 16426 + .rlen = 496, 20739 16427 .also_non_np = 1, 20740 16428 .np = 2, 20741 - .tap = { 48 - 16, 16 }, 16429 + .tap = { 496 - 16, 16 }, 20742 16430 }, 20743 16431 }; 20744 16432 ··· 20888 16352 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef" 20889 16353 "\xfe\xdc\xba\x98\x76\x54\x32\x10", 20890 16354 .rlen = 16, 20891 - }, 20892 - { /* Generated with Crypto++ */ 16355 + }, { /* Generated with Crypto++ */ 20893 16356 .key = "\x3F\x85\x62\x3F\x1C\xF9\xD6\x1C" 20894 16357 "\xF9\xD6\xB3\x90\x6D\x4A\x90\x6D" 20895 16358 "\x4A\x27\x04\xE1\x27\x04\xE1\xBE" ··· 20899 16364 "\xA5\xFF\x6F\x43\x0F\xBA\x32\x04" 20900 16365 "\xB3\xC2\xB9\x03\xAA\x91\x56\x29" 20901 16366 "\x0D\xD0\xFD\xC4\x65\xA5\x69\xB9" 20902 - "\xF1\xF6\xB1\xA5\xB2\x75\x4F\x8A", 20903 - .ilen = 48, 16367 + "\xF1\xF6\xB1\xA5\xB2\x75\x4F\x8A" 16368 + "\x8D\x7D\x1B\x9B\xC7\x68\x72\xF8" 16369 + "\x01\x9B\x17\x0A\x29\xE7\x61\x28" 16370 + "\x7F\xA7\x50\xCA\x20\x2C\x96\x3B" 16371 + "\x6E\x5C\x5D\x3F\xB5\x7F\xF3\x2B" 16372 + "\x04\xEF\x9D\xD4\xCE\x41\x28\x8E" 16373 + "\x83\x54\xAE\x7C\x82\x46\x10\xC9" 16374 + "\xC4\x8A\x1E\x1F\x4C\xA9\xFC\xEC" 16375 + "\x3C\x8C\x30\xFC\x59\xD2\x54\xC4" 16376 + "\x6F\x50\xC6\xCA\x8C\x14\x5B\x9C" 16377 + "\x18\x56\x5B\xF8\x33\x0E\x4A\xDB" 16378 + "\xEC\xB5\x6E\x5B\x31\xC4\x0E\x98" 16379 + "\x9F\x32\xBA\xA2\x18\xCF\x55\x43" 16380 + "\xFE\x80\x8F\x60\xCF\x05\x30\x9B" 16381 + "\x70\x50\x1E\x9C\x08\x87\xE6\x20" 16382 + "\xD2\xF3\x27\xF8\x2A\x8D\x12\xB2" 16383 + "\xBC\x5F\xFE\x52\x52\xF6\x7F\xB6" 16384 + "\xB8\x30\x86\x3B\x0F\x94\x1E\x79" 16385 + "\x13\x94\x35\xA2\xB1\x35\x5B\x05" 16386 + "\x2A\x98\x6B\x96\x4C\xB1\x20\xBE" 16387 + "\xB6\x14\xC2\x06\xBF\xFD\x5F\x2A" 16388 + "\xF5\x33\xC8\x19\x45\x14\x44\x5D" 16389 + "\xFE\x94\x7B\xBB\x63\x13\x57\xC3" 16390 + "\x2A\x8F\x6C\x11\x2A\x07\xA7\x6A" 16391 + "\xBF\x20\xD3\x99\xC6\x00\x0B\xBF" 16392 + "\x83\x46\x25\x3A\xB0\xF6\xC5\xC8" 16393 + "\x00\xCA\xE5\x28\x4A\x7C\x95\x9C" 16394 + "\x7B\x43\xAB\xF9\xE4\xF8\x74\xAB" 16395 + "\xA7\xB8\x9C\x0F\x53\x7B\xB6\x74" 16396 + "\x60\x64\x0D\x1C\x80\xD1\x20\x9E" 16397 + "\xDC\x14\x27\x9B\xFC\xBD\x5C\x96" 16398 + "\xD2\x51\xDC\x96\xEE\xE5\xEA\x2B" 16399 + "\x02\x7C\xAA\x3C\xDC\x9D\x7B\x01" 16400 + "\x20\xC3\xE1\x0B\xDD\xAB\xF3\x1E" 16401 + "\x19\xA8\x84\x29\x5F\xCC\xC3\x5B" 16402 + "\xE4\x33\x59\xDC\x12\xEB\x2B\x4D" 16403 + "\x5B\x55\x23\xB7\x40\x31\xDE\xEE" 16404 + "\x18\xC9\x3C\x4D\xBC\xED\xE0\x42" 16405 + "\xAD\xDE\xA0\xA3\xC3\xFE\x44\xD3" 16406 + "\xE1\x9A\xDA\xAB\x32\xFC\x1A\xBF" 16407 + "\x63\xA9\xF0\x6A\x08\x46\xBD\x48" 16408 + "\x83\x06\xAB\x82\x99\x01\x16\x1A" 16409 + "\x03\x36\xC5\x59\x6B\xB8\x8C\x9F" 16410 + "\xC6\x51\x3D\xE5\x7F\xBF\xAB\xBC" 16411 + "\xC9\xA1\x88\x34\x5F\xA9\x7C\x3B" 16412 + "\x9F\x1B\x98\x2B\x4F\xFB\x9B\xF0" 16413 + "\xCD\xB6\x45\xB2\x29\x2E\x34\x23" 16414 + "\xA9\x97\xC0\x22\x8C\x42\x9B\x5F" 16415 + "\x40\xC8\xD7\x3D\x82\x9A\x6F\xAA" 16416 + "\x74\x83\x29\x05\xE8\xC4\x4D\x01" 16417 + "\xB5\xE5\x84\x3F\x7F\xD3\xE0\x99" 16418 + "\xDA\xE7\x6F\x30\xFD\xAA\x92\x30" 16419 + "\xA5\x46\x8B\xA2\xE6\x58\x62\x7C" 16420 + "\x2C\x35\x1B\x38\x85\x7D\xE8\xF3" 16421 + "\x87\x4F\xDA\xD8\x5F\xFC\xB6\x44" 16422 + "\xD0\xE3\x9B\x8B\xBF\xD6\xB8\xC4" 16423 + "\x73\xAE\x1D\x8B\x5B\x74\x8B\xCB", 16424 + .ilen = 496, 20904 16425 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 20905 16426 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 20906 16427 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 20907 16428 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 20908 16429 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 20909 - "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48", 20910 - .rlen = 48, 16430 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 16431 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 16432 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 16433 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 16434 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 16435 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 16436 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 16437 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 16438 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 16439 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 16440 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 16441 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 16442 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 16443 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 16444 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 16445 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 16446 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 16447 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 16448 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 16449 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 16450 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 16451 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 16452 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 16453 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 16454 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 16455 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 16456 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 16457 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 16458 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 16459 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 16460 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 16461 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 16462 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 16463 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 16464 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 16465 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 16466 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 16467 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 16468 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 16469 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 16470 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 16471 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 16472 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 16473 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 16474 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 16475 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 16476 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 16477 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 16478 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 16479 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 16480 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 16481 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 16482 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 16483 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 16484 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 16485 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 16486 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 16487 + .rlen = 496, 20911 16488 .also_non_np = 1, 20912 16489 .np = 2, 20913 - .tap = { 48 - 16, 16 }, 16490 + .tap = { 496 - 16, 16 }, 20914 16491 }, 20915 16492 }; 20916 16493 ··· 21054 16407 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0" 21055 16408 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16", 21056 16409 .rlen = 32, 21057 - }, 21058 - { /* Generated with Crypto++ */ 16410 + }, { /* Generated with Crypto++ */ 21059 16411 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 21060 16412 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" 21061 16413 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B" ··· 21067 16421 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 21068 16422 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 21069 16423 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 21070 - "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48", 21071 - .ilen = 48, 16424 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 16425 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 16426 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 16427 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 16428 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 16429 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 16430 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 16431 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 16432 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 16433 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 16434 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 16435 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 16436 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 16437 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 16438 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 16439 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 16440 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 16441 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 16442 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 16443 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 16444 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 16445 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 16446 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 16447 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 16448 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 16449 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 16450 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 16451 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 16452 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 16453 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 16454 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 16455 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 16456 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 16457 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 16458 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 16459 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 16460 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 16461 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 16462 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 16463 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 16464 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 16465 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 16466 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 16467 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 16468 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 16469 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 16470 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 16471 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 16472 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 16473 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 16474 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 16475 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 16476 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 16477 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 16478 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 16479 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 16480 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 16481 + .ilen = 496, 21072 16482 .result = "\xCD\x3E\x2A\x3B\x3E\x94\xC5\x77" 21073 16483 "\xBA\xBB\x5B\xB1\xDE\x7B\xA4\x40" 21074 16484 "\x88\x39\xE3\xFD\x94\x4B\x25\x58" 21075 16485 "\xE1\x4B\xC4\x18\x7A\xFD\x17\x2B" 21076 16486 "\xB9\xF9\xC2\x27\x6A\xB6\x31\x27" 21077 - "\xA6\xAD\xEF\xE5\x5D\xE4\x02\x01", 21078 - .rlen = 48, 16487 + "\xA6\xAD\xEF\xE5\x5D\xE4\x02\x01" 16488 + "\x56\x2E\x10\xC2\x2C\xFF\xC6\x83" 16489 + "\xB5\xDC\x4F\x63\xAD\x0E\x63\x5E" 16490 + "\x56\xC8\x18\x3D\x79\x86\x97\xEF" 16491 + "\x57\x0E\x63\xA1\xC1\x41\x48\xB8" 16492 + "\x98\xB7\x51\x6D\x18\xF6\x19\x82" 16493 + "\x37\x49\x88\xA4\xEF\x91\x21\x47" 16494 + "\x03\x28\xEA\x42\xF4\xFB\x7A\x58" 16495 + "\x28\x90\x77\x46\xD8\xD2\x35\x16" 16496 + "\x44\xA9\x9E\x49\x52\x2A\xE4\x16" 16497 + "\x5D\xF7\x65\xEB\x0F\xC9\x29\xE6" 16498 + "\xCF\x76\x91\x89\x8A\x94\x39\xFA" 16499 + "\x6B\x5F\x63\x53\x74\x43\x91\xF5" 16500 + "\x3F\xBC\x88\x53\xB2\x1A\x02\x3F" 16501 + "\x9D\x32\x84\xEB\x56\x28\xD6\x06" 16502 + "\xD5\xB2\x20\xA9\xFC\xC3\x76\x62" 16503 + "\x32\xCC\x86\xC8\x36\x67\x5E\x7E" 16504 + "\xA4\xAA\x15\x63\x6B\xA9\x86\xAF" 16505 + "\x1A\x52\x82\x36\x5F\xF4\x3F\x7A" 16506 + "\x9B\x78\x62\x3B\x02\x28\x60\xB3" 16507 + "\xBA\x82\xB1\xDD\xC9\x60\x8F\x47" 16508 + "\xF1\x6B\xFE\xE5\x39\x34\xA0\x28" 16509 + "\xA4\xB3\xC9\x7E\xED\x28\x8D\x70" 16510 + "\xB2\x1D\xFD\xC6\x00\xCF\x1A\x94" 16511 + "\x28\xF8\xC1\x34\xB7\x58\xA5\x6C" 16512 + "\x1A\x9D\xE4\xE4\xF6\xB9\xB4\xB0" 16513 + "\x5D\x51\x54\x9A\x53\xA0\xF9\x32" 16514 + "\xBD\x31\x54\x14\x7B\x33\xEE\x17" 16515 + "\xD3\xC7\x1F\x48\xBF\x0B\x22\xA2" 16516 + "\x7D\x0C\xDF\xD0\x2E\x98\xFA\xD2" 16517 + "\xFA\xCF\x24\x1D\x99\x9B\xD0\x7E" 16518 + "\xF4\x4F\x88\xFF\x45\x99\x4A\xF4" 16519 + "\xF2\x0A\x5B\x3B\x21\xAB\x92\xAE" 16520 + "\x40\x78\x91\x95\xC4\x2F\xA3\xE8" 16521 + "\x18\xC7\x07\xA6\xC8\xC0\x66\x33" 16522 + "\x35\xC0\xB4\xA0\xF8\xEE\x1E\xF3" 16523 + "\x40\xF5\x40\x54\xF1\x84\x8C\xEA" 16524 + "\x27\x38\x1F\xF8\x77\xC7\xDF\xD8" 16525 + "\x1D\xE2\xD9\x59\x40\x4F\x59\xD4" 16526 + "\xF8\x17\x99\x8D\x58\x2D\x72\x44" 16527 + "\x9D\x1D\x91\x64\xD6\x3F\x0A\x82" 16528 + "\xC7\x57\x3D\xEF\xD3\x41\xFA\xA7" 16529 + "\x68\xA3\xB8\xA5\x93\x74\x2E\x85" 16530 + "\x4C\x9D\x69\x59\xCE\x15\xAE\xBF" 16531 + "\x9C\x8F\x14\x64\x5D\x7F\xCF\x0B" 16532 + "\xCE\x43\x5D\x28\xC0\x2F\xFB\x18" 16533 + "\x79\x9A\xFC\x43\x16\x7C\x6B\x7B" 16534 + "\x38\xB8\x48\x36\x66\x4E\x20\x43" 16535 + "\xBA\x76\x13\x9A\xC3\xF2\xEB\x52" 16536 + "\xD7\xDC\xB2\x67\x63\x14\x25\xCD" 16537 + "\xB1\x13\x4B\xDE\x8C\x59\x21\x84" 16538 + "\x81\x8D\x97\x23\x45\x33\x7C\xF3" 16539 + "\xC5\xBC\x79\x95\xAA\x84\x68\x31" 16540 + "\x2D\x1A\x68\xFE\xEC\x92\x94\xDA" 16541 + "\x94\x2A\x6F\xD6\xFE\xE5\x76\x97" 16542 + "\xF4\x6E\xEE\xCB\x2B\x95\x4E\x36" 16543 + "\x5F\x74\x8C\x86\x5B\x71\xD0\x20", 16544 + .rlen = 496, 21079 16545 .also_non_np = 1, 21080 16546 .np = 2, 21081 - .tap = { 48 - 16, 16 }, 16547 + .tap = { 496 - 16, 16 }, 21082 16548 }, 21083 16549 }; 21084 16550 ··· 21222 16464 "\x10\x11\x12\x13\x14\x15\x16\x17" 21223 16465 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", 21224 16466 .rlen = 32, 21225 - }, 21226 - { /* Generated with Crypto++ */ 16467 + }, { /* Generated with Crypto++ */ 21227 16468 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 21228 16469 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" 21229 16470 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B" ··· 21235 16478 "\x88\x39\xE3\xFD\x94\x4B\x25\x58" 21236 16479 "\xE1\x4B\xC4\x18\x7A\xFD\x17\x2B" 21237 16480 "\xB9\xF9\xC2\x27\x6A\xB6\x31\x27" 21238 - "\xA6\xAD\xEF\xE5\x5D\xE4\x02\x01", 21239 - .ilen = 48, 16481 + "\xA6\xAD\xEF\xE5\x5D\xE4\x02\x01" 16482 + "\x56\x2E\x10\xC2\x2C\xFF\xC6\x83" 16483 + "\xB5\xDC\x4F\x63\xAD\x0E\x63\x5E" 16484 + "\x56\xC8\x18\x3D\x79\x86\x97\xEF" 16485 + "\x57\x0E\x63\xA1\xC1\x41\x48\xB8" 16486 + "\x98\xB7\x51\x6D\x18\xF6\x19\x82" 16487 + "\x37\x49\x88\xA4\xEF\x91\x21\x47" 16488 + "\x03\x28\xEA\x42\xF4\xFB\x7A\x58" 16489 + "\x28\x90\x77\x46\xD8\xD2\x35\x16" 16490 + "\x44\xA9\x9E\x49\x52\x2A\xE4\x16" 16491 + "\x5D\xF7\x65\xEB\x0F\xC9\x29\xE6" 16492 + "\xCF\x76\x91\x89\x8A\x94\x39\xFA" 16493 + "\x6B\x5F\x63\x53\x74\x43\x91\xF5" 16494 + "\x3F\xBC\x88\x53\xB2\x1A\x02\x3F" 16495 + "\x9D\x32\x84\xEB\x56\x28\xD6\x06" 16496 + "\xD5\xB2\x20\xA9\xFC\xC3\x76\x62" 16497 + "\x32\xCC\x86\xC8\x36\x67\x5E\x7E" 16498 + "\xA4\xAA\x15\x63\x6B\xA9\x86\xAF" 16499 + "\x1A\x52\x82\x36\x5F\xF4\x3F\x7A" 16500 + "\x9B\x78\x62\x3B\x02\x28\x60\xB3" 16501 + "\xBA\x82\xB1\xDD\xC9\x60\x8F\x47" 16502 + "\xF1\x6B\xFE\xE5\x39\x34\xA0\x28" 16503 + "\xA4\xB3\xC9\x7E\xED\x28\x8D\x70" 16504 + "\xB2\x1D\xFD\xC6\x00\xCF\x1A\x94" 16505 + "\x28\xF8\xC1\x34\xB7\x58\xA5\x6C" 16506 + "\x1A\x9D\xE4\xE4\xF6\xB9\xB4\xB0" 16507 + "\x5D\x51\x54\x9A\x53\xA0\xF9\x32" 16508 + "\xBD\x31\x54\x14\x7B\x33\xEE\x17" 16509 + "\xD3\xC7\x1F\x48\xBF\x0B\x22\xA2" 16510 + "\x7D\x0C\xDF\xD0\x2E\x98\xFA\xD2" 16511 + "\xFA\xCF\x24\x1D\x99\x9B\xD0\x7E" 16512 + "\xF4\x4F\x88\xFF\x45\x99\x4A\xF4" 16513 + "\xF2\x0A\x5B\x3B\x21\xAB\x92\xAE" 16514 + "\x40\x78\x91\x95\xC4\x2F\xA3\xE8" 16515 + "\x18\xC7\x07\xA6\xC8\xC0\x66\x33" 16516 + "\x35\xC0\xB4\xA0\xF8\xEE\x1E\xF3" 16517 + "\x40\xF5\x40\x54\xF1\x84\x8C\xEA" 16518 + "\x27\x38\x1F\xF8\x77\xC7\xDF\xD8" 16519 + "\x1D\xE2\xD9\x59\x40\x4F\x59\xD4" 16520 + "\xF8\x17\x99\x8D\x58\x2D\x72\x44" 16521 + "\x9D\x1D\x91\x64\xD6\x3F\x0A\x82" 16522 + "\xC7\x57\x3D\xEF\xD3\x41\xFA\xA7" 16523 + "\x68\xA3\xB8\xA5\x93\x74\x2E\x85" 16524 + "\x4C\x9D\x69\x59\xCE\x15\xAE\xBF" 16525 + "\x9C\x8F\x14\x64\x5D\x7F\xCF\x0B" 16526 + "\xCE\x43\x5D\x28\xC0\x2F\xFB\x18" 16527 + "\x79\x9A\xFC\x43\x16\x7C\x6B\x7B" 16528 + "\x38\xB8\x48\x36\x66\x4E\x20\x43" 16529 + "\xBA\x76\x13\x9A\xC3\xF2\xEB\x52" 16530 + "\xD7\xDC\xB2\x67\x63\x14\x25\xCD" 16531 + "\xB1\x13\x4B\xDE\x8C\x59\x21\x84" 16532 + "\x81\x8D\x97\x23\x45\x33\x7C\xF3" 16533 + "\xC5\xBC\x79\x95\xAA\x84\x68\x31" 16534 + "\x2D\x1A\x68\xFE\xEC\x92\x94\xDA" 16535 + "\x94\x2A\x6F\xD6\xFE\xE5\x76\x97" 16536 + "\xF4\x6E\xEE\xCB\x2B\x95\x4E\x36" 16537 + "\x5F\x74\x8C\x86\x5B\x71\xD0\x20", 16538 + .ilen = 496, 21240 16539 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 21241 16540 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 21242 16541 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 21243 16542 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 21244 16543 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 21245 - "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48", 21246 - .rlen = 48, 16544 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 16545 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 16546 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 16547 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 16548 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 16549 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 16550 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 16551 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 16552 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 16553 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 16554 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 16555 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 16556 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 16557 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 16558 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 16559 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 16560 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 16561 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 16562 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 16563 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 16564 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 16565 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 16566 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 16567 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 16568 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 16569 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 16570 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 16571 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 16572 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 16573 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 16574 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 16575 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 16576 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 16577 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 16578 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 16579 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 16580 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 16581 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 16582 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 16583 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 16584 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 16585 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 16586 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 16587 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 16588 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 16589 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 16590 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 16591 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 16592 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 16593 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 16594 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 16595 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 16596 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 16597 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 16598 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 16599 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 16600 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 16601 + .rlen = 496, 21247 16602 .also_non_np = 1, 21248 16603 .np = 2, 21249 - .tap = { 48 - 16, 16 }, 16604 + .tap = { 496 - 16, 16 }, 21250 16605 }, 21251 16606 }; 21252 16607 ··· 21376 16507 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 21377 16508 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 21378 16509 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 21379 - "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48", 21380 - .ilen = 48, 16510 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 16511 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 16512 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 16513 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 16514 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 16515 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 16516 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 16517 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 16518 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 16519 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 16520 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 16521 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 16522 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 16523 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 16524 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 16525 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 16526 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 16527 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 16528 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 16529 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 16530 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 16531 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 16532 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 16533 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 16534 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 16535 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 16536 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 16537 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 16538 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 16539 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 16540 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 16541 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 16542 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 16543 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 16544 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 16545 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 16546 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 16547 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 16548 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 16549 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 16550 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 16551 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 16552 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 16553 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 16554 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 16555 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 16556 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 16557 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 16558 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 16559 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 16560 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 16561 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 16562 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 16563 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 16564 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 16565 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 16566 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 16567 + .ilen = 496, 21381 16568 .result = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11" 21382 16569 "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE" 21383 16570 "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4" 21384 16571 "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6" 21385 16572 "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85" 21386 - "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C", 21387 - .rlen = 48, 21388 - }, 21389 - { /* Generated with Crypto++ */ 16573 + "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C" 16574 + "\x1E\x43\xEF\x6C\xE9\x98\xC5\xA0" 16575 + "\x7B\x13\xE5\x7F\xF8\x49\x9A\x8C" 16576 + "\xE6\x7B\x08\xC3\x32\x66\x55\x4E" 16577 + "\xA5\x44\x1D\x2C\x18\xC7\x29\x1F" 16578 + "\x61\x28\x4A\xE3\xCD\xE5\x47\xB2" 16579 + "\x82\x2F\x66\x83\x91\x51\xAE\xD7" 16580 + "\x1C\x91\x3C\x57\xE3\x1D\x5A\xC9" 16581 + "\xFD\xC5\x58\x58\xEF\xCC\x33\xC9" 16582 + "\x0F\xEA\x26\x32\xD1\x15\x19\x2D" 16583 + "\x25\xB4\x7F\xB0\xDF\xFB\x88\x60" 16584 + "\x4E\x4D\x06\x7D\xCC\x1F\xED\x3B" 16585 + "\x68\x84\xD5\xB3\x1B\xE7\xB9\xA1" 16586 + "\x68\x8B\x2C\x1A\x44\xDA\x63\xD3" 16587 + "\x29\xE9\x59\x32\x1F\x30\x1C\x43" 16588 + "\xEA\x3A\xA3\x6B\x54\x3C\xAA\x11" 16589 + "\xAD\x38\x20\xC9\xB9\x8A\x64\x66" 16590 + "\x5A\x07\x49\xDF\xA1\x9C\xF9\x76" 16591 + "\x36\x65\xB6\x81\x8F\x76\x09\xE5" 16592 + "\xEB\xD1\x29\xA4\xE4\xF4\x4C\xCD" 16593 + "\xAF\xFC\xB9\x16\xD9\xC3\x73\x6A" 16594 + "\x33\x12\xF8\x7E\xBC\xCC\x7D\x80" 16595 + "\xBF\x3C\x25\x06\x13\x84\xFA\x35" 16596 + "\xF7\x40\xFA\xA1\x44\x13\x70\xD8" 16597 + "\x01\xF9\x85\x15\x63\xEC\x7D\xB9" 16598 + "\x02\xD8\xBA\x41\x6C\x92\x68\x66" 16599 + "\x95\xDD\xD6\x42\xE7\xBB\xE1\xFD" 16600 + "\x28\x3E\x94\xB6\xBD\xA7\xBF\x47" 16601 + "\x58\x8D\xFF\x19\x30\x75\x0D\x48" 16602 + "\x94\xE9\xA6\xCD\xB3\x8E\x1E\xCD" 16603 + "\x59\xBC\x1A\xAC\x3C\x4F\xA9\xEB" 16604 + "\xF4\xA7\xE4\x75\x4A\x18\x40\xC9" 16605 + "\x1E\xEC\x06\x9C\x28\x4B\xF7\x2B" 16606 + "\xE2\xEF\xD6\x42\x2E\xBB\xFC\x0A" 16607 + "\x79\xA2\x99\x28\x93\x1B\x00\x57" 16608 + "\x35\x1E\x1A\x93\x90\xA4\x68\x95" 16609 + "\x5E\x57\x40\xD5\xA9\xAA\x19\x48" 16610 + "\xEC\xFF\x76\x77\xDC\x78\x89\x76" 16611 + "\xE5\x3B\x00\xEC\x58\x4D\xD1\xE3" 16612 + "\xC8\x6C\x2C\x45\x5E\x5F\xD9\x4E" 16613 + "\x71\xA5\x36\x6D\x03\xF1\xC7\xD5" 16614 + "\xF3\x63\xC0\xD8\xCB\x2B\xF1\xA8" 16615 + "\xB9\x2B\xE6\x0B\xB9\x65\x78\xA0" 16616 + "\xC4\x46\xE6\x9B\x8B\x43\x2D\xAB" 16617 + "\x70\xA6\xE0\x59\x1E\xAC\x9D\xE0" 16618 + "\x76\x44\x45\xF3\x24\x11\x57\x98" 16619 + "\x9A\x86\xB4\x12\x80\x28\x86\x20" 16620 + "\x23\x9D\x2D\xE9\x38\x32\xB1\xE1" 16621 + "\xCF\x0A\x23\x73\x7D\xC5\x80\x3D" 16622 + "\x9F\x6D\xA0\xD0\xEE\x93\x8A\x79" 16623 + "\x3A\xDD\x1D\xBB\x9E\x26\x5D\x01" 16624 + "\x44\xD0\xD4\x4E\xC3\xF1\xE4\x38" 16625 + "\x09\x62\x0A\x1A\x4E\xD2\x63\x0F" 16626 + "\x6E\x3E\xD2\xA4\x3A\xF4\xF3\xFF" 16627 + "\x7E\x42\xEC\xB6\x6F\x4D\x6B\x48" 16628 + "\xE6\xA6\x50\x80\x78\x9E\xF1\xB0" 16629 + "\x4D\xB2\x0D\x3D\xFC\x40\x25\x4D", 16630 + .rlen = 496, 16631 + }, { /* Generated with Crypto++ */ 21390 16632 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 21391 16633 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" 21392 16634 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B" ··· 21511 16531 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 21512 16532 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 21513 16533 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 21514 - "\xDF\x76\x0D", 21515 - .ilen = 51, 16534 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 16535 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 16536 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 16537 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 16538 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 16539 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 16540 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 16541 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 16542 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 16543 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 16544 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 16545 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 16546 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 16547 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 16548 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 16549 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 16550 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 16551 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 16552 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 16553 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 16554 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 16555 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 16556 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 16557 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 16558 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 16559 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 16560 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 16561 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 16562 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 16563 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 16564 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 16565 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 16566 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 16567 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 16568 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 16569 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 16570 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 16571 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 16572 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 16573 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 16574 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 16575 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 16576 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 16577 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 16578 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 16579 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 16580 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 16581 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 16582 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 16583 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 16584 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 16585 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 16586 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 16587 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 16588 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 16589 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 16590 + "\x2B\xC2\x59", 16591 + .ilen = 499, 21516 16592 .result = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11" 21517 16593 "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE" 21518 16594 "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4" 21519 16595 "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6" 21520 16596 "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85" 21521 16597 "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C" 21522 - "\x1E\x43\xEF", 21523 - .rlen = 51, 16598 + "\x1E\x43\xEF\x6C\xE9\x98\xC5\xA0" 16599 + "\x7B\x13\xE5\x7F\xF8\x49\x9A\x8C" 16600 + "\xE6\x7B\x08\xC3\x32\x66\x55\x4E" 16601 + "\xA5\x44\x1D\x2C\x18\xC7\x29\x1F" 16602 + "\x61\x28\x4A\xE3\xCD\xE5\x47\xB2" 16603 + "\x82\x2F\x66\x83\x91\x51\xAE\xD7" 16604 + "\x1C\x91\x3C\x57\xE3\x1D\x5A\xC9" 16605 + "\xFD\xC5\x58\x58\xEF\xCC\x33\xC9" 16606 + "\x0F\xEA\x26\x32\xD1\x15\x19\x2D" 16607 + "\x25\xB4\x7F\xB0\xDF\xFB\x88\x60" 16608 + "\x4E\x4D\x06\x7D\xCC\x1F\xED\x3B" 16609 + "\x68\x84\xD5\xB3\x1B\xE7\xB9\xA1" 16610 + "\x68\x8B\x2C\x1A\x44\xDA\x63\xD3" 16611 + "\x29\xE9\x59\x32\x1F\x30\x1C\x43" 16612 + "\xEA\x3A\xA3\x6B\x54\x3C\xAA\x11" 16613 + "\xAD\x38\x20\xC9\xB9\x8A\x64\x66" 16614 + "\x5A\x07\x49\xDF\xA1\x9C\xF9\x76" 16615 + "\x36\x65\xB6\x81\x8F\x76\x09\xE5" 16616 + "\xEB\xD1\x29\xA4\xE4\xF4\x4C\xCD" 16617 + "\xAF\xFC\xB9\x16\xD9\xC3\x73\x6A" 16618 + "\x33\x12\xF8\x7E\xBC\xCC\x7D\x80" 16619 + "\xBF\x3C\x25\x06\x13\x84\xFA\x35" 16620 + "\xF7\x40\xFA\xA1\x44\x13\x70\xD8" 16621 + "\x01\xF9\x85\x15\x63\xEC\x7D\xB9" 16622 + "\x02\xD8\xBA\x41\x6C\x92\x68\x66" 16623 + "\x95\xDD\xD6\x42\xE7\xBB\xE1\xFD" 16624 + "\x28\x3E\x94\xB6\xBD\xA7\xBF\x47" 16625 + "\x58\x8D\xFF\x19\x30\x75\x0D\x48" 16626 + "\x94\xE9\xA6\xCD\xB3\x8E\x1E\xCD" 16627 + "\x59\xBC\x1A\xAC\x3C\x4F\xA9\xEB" 16628 + "\xF4\xA7\xE4\x75\x4A\x18\x40\xC9" 16629 + "\x1E\xEC\x06\x9C\x28\x4B\xF7\x2B" 16630 + "\xE2\xEF\xD6\x42\x2E\xBB\xFC\x0A" 16631 + "\x79\xA2\x99\x28\x93\x1B\x00\x57" 16632 + "\x35\x1E\x1A\x93\x90\xA4\x68\x95" 16633 + "\x5E\x57\x40\xD5\xA9\xAA\x19\x48" 16634 + "\xEC\xFF\x76\x77\xDC\x78\x89\x76" 16635 + "\xE5\x3B\x00\xEC\x58\x4D\xD1\xE3" 16636 + "\xC8\x6C\x2C\x45\x5E\x5F\xD9\x4E" 16637 + "\x71\xA5\x36\x6D\x03\xF1\xC7\xD5" 16638 + "\xF3\x63\xC0\xD8\xCB\x2B\xF1\xA8" 16639 + "\xB9\x2B\xE6\x0B\xB9\x65\x78\xA0" 16640 + "\xC4\x46\xE6\x9B\x8B\x43\x2D\xAB" 16641 + "\x70\xA6\xE0\x59\x1E\xAC\x9D\xE0" 16642 + "\x76\x44\x45\xF3\x24\x11\x57\x98" 16643 + "\x9A\x86\xB4\x12\x80\x28\x86\x20" 16644 + "\x23\x9D\x2D\xE9\x38\x32\xB1\xE1" 16645 + "\xCF\x0A\x23\x73\x7D\xC5\x80\x3D" 16646 + "\x9F\x6D\xA0\xD0\xEE\x93\x8A\x79" 16647 + "\x3A\xDD\x1D\xBB\x9E\x26\x5D\x01" 16648 + "\x44\xD0\xD4\x4E\xC3\xF1\xE4\x38" 16649 + "\x09\x62\x0A\x1A\x4E\xD2\x63\x0F" 16650 + "\x6E\x3E\xD2\xA4\x3A\xF4\xF3\xFF" 16651 + "\x7E\x42\xEC\xB6\x6F\x4D\x6B\x48" 16652 + "\xE6\xA6\x50\x80\x78\x9E\xF1\xB0" 16653 + "\x4D\xB2\x0D\x3D\xFC\x40\x25\x4D" 16654 + "\x93\x11\x1C", 16655 + .rlen = 499, 21524 16656 .also_non_np = 1, 21525 16657 .np = 2, 21526 - .tap = { 51 - 16, 16 }, 16658 + .tap = { 499 - 16, 16 }, 21527 16659 }, { /* Generated with Crypto++ */ 21528 16660 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 21529 16661 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 21787 16695 "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4" 21788 16696 "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6" 21789 16697 "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85" 21790 - "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C", 21791 - .ilen = 48, 16698 + "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C" 16699 + "\x1E\x43\xEF\x6C\xE9\x98\xC5\xA0" 16700 + "\x7B\x13\xE5\x7F\xF8\x49\x9A\x8C" 16701 + "\xE6\x7B\x08\xC3\x32\x66\x55\x4E" 16702 + "\xA5\x44\x1D\x2C\x18\xC7\x29\x1F" 16703 + "\x61\x28\x4A\xE3\xCD\xE5\x47\xB2" 16704 + "\x82\x2F\x66\x83\x91\x51\xAE\xD7" 16705 + "\x1C\x91\x3C\x57\xE3\x1D\x5A\xC9" 16706 + "\xFD\xC5\x58\x58\xEF\xCC\x33\xC9" 16707 + "\x0F\xEA\x26\x32\xD1\x15\x19\x2D" 16708 + "\x25\xB4\x7F\xB0\xDF\xFB\x88\x60" 16709 + "\x4E\x4D\x06\x7D\xCC\x1F\xED\x3B" 16710 + "\x68\x84\xD5\xB3\x1B\xE7\xB9\xA1" 16711 + "\x68\x8B\x2C\x1A\x44\xDA\x63\xD3" 16712 + "\x29\xE9\x59\x32\x1F\x30\x1C\x43" 16713 + "\xEA\x3A\xA3\x6B\x54\x3C\xAA\x11" 16714 + "\xAD\x38\x20\xC9\xB9\x8A\x64\x66" 16715 + "\x5A\x07\x49\xDF\xA1\x9C\xF9\x76" 16716 + "\x36\x65\xB6\x81\x8F\x76\x09\xE5" 16717 + "\xEB\xD1\x29\xA4\xE4\xF4\x4C\xCD" 16718 + "\xAF\xFC\xB9\x16\xD9\xC3\x73\x6A" 16719 + "\x33\x12\xF8\x7E\xBC\xCC\x7D\x80" 16720 + "\xBF\x3C\x25\x06\x13\x84\xFA\x35" 16721 + "\xF7\x40\xFA\xA1\x44\x13\x70\xD8" 16722 + "\x01\xF9\x85\x15\x63\xEC\x7D\xB9" 16723 + "\x02\xD8\xBA\x41\x6C\x92\x68\x66" 16724 + "\x95\xDD\xD6\x42\xE7\xBB\xE1\xFD" 16725 + "\x28\x3E\x94\xB6\xBD\xA7\xBF\x47" 16726 + "\x58\x8D\xFF\x19\x30\x75\x0D\x48" 16727 + "\x94\xE9\xA6\xCD\xB3\x8E\x1E\xCD" 16728 + "\x59\xBC\x1A\xAC\x3C\x4F\xA9\xEB" 16729 + "\xF4\xA7\xE4\x75\x4A\x18\x40\xC9" 16730 + "\x1E\xEC\x06\x9C\x28\x4B\xF7\x2B" 16731 + "\xE2\xEF\xD6\x42\x2E\xBB\xFC\x0A" 16732 + "\x79\xA2\x99\x28\x93\x1B\x00\x57" 16733 + "\x35\x1E\x1A\x93\x90\xA4\x68\x95" 16734 + "\x5E\x57\x40\xD5\xA9\xAA\x19\x48" 16735 + "\xEC\xFF\x76\x77\xDC\x78\x89\x76" 16736 + "\xE5\x3B\x00\xEC\x58\x4D\xD1\xE3" 16737 + "\xC8\x6C\x2C\x45\x5E\x5F\xD9\x4E" 16738 + "\x71\xA5\x36\x6D\x03\xF1\xC7\xD5" 16739 + "\xF3\x63\xC0\xD8\xCB\x2B\xF1\xA8" 16740 + "\xB9\x2B\xE6\x0B\xB9\x65\x78\xA0" 16741 + "\xC4\x46\xE6\x9B\x8B\x43\x2D\xAB" 16742 + "\x70\xA6\xE0\x59\x1E\xAC\x9D\xE0" 16743 + "\x76\x44\x45\xF3\x24\x11\x57\x98" 16744 + "\x9A\x86\xB4\x12\x80\x28\x86\x20" 16745 + "\x23\x9D\x2D\xE9\x38\x32\xB1\xE1" 16746 + "\xCF\x0A\x23\x73\x7D\xC5\x80\x3D" 16747 + "\x9F\x6D\xA0\xD0\xEE\x93\x8A\x79" 16748 + "\x3A\xDD\x1D\xBB\x9E\x26\x5D\x01" 16749 + "\x44\xD0\xD4\x4E\xC3\xF1\xE4\x38" 16750 + "\x09\x62\x0A\x1A\x4E\xD2\x63\x0F" 16751 + "\x6E\x3E\xD2\xA4\x3A\xF4\xF3\xFF" 16752 + "\x7E\x42\xEC\xB6\x6F\x4D\x6B\x48" 16753 + "\xE6\xA6\x50\x80\x78\x9E\xF1\xB0" 16754 + "\x4D\xB2\x0D\x3D\xFC\x40\x25\x4D", 16755 + .ilen = 496, 21792 16756 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 21793 16757 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 21794 16758 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 21795 16759 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 21796 16760 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 21797 - "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48", 21798 - .rlen = 48, 21799 - }, 21800 - { /* Generated with Crypto++ */ 16761 + "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 16762 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 16763 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 16764 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 16765 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 16766 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 16767 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 16768 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 16769 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 16770 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 16771 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 16772 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 16773 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 16774 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 16775 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 16776 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 16777 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 16778 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 16779 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 16780 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 16781 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 16782 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 16783 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 16784 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 16785 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 16786 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 16787 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 16788 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 16789 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 16790 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 16791 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 16792 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 16793 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 16794 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 16795 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 16796 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 16797 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 16798 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 16799 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 16800 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 16801 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 16802 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 16803 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 16804 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 16805 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 16806 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 16807 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 16808 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 16809 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 16810 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 16811 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 16812 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 16813 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 16814 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 16815 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 16816 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 16817 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 16818 + .rlen = 496, 16819 + }, { /* Generated with Crypto++ */ 21801 16820 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 21802 16821 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" 21803 16822 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B" ··· 21922 16719 "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6" 21923 16720 "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85" 21924 16721 "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C" 21925 - "\x1E\x43\xEF", 21926 - .ilen = 51, 16722 + "\x1E\x43\xEF\x6C\xE9\x98\xC5\xA0" 16723 + "\x7B\x13\xE5\x7F\xF8\x49\x9A\x8C" 16724 + "\xE6\x7B\x08\xC3\x32\x66\x55\x4E" 16725 + "\xA5\x44\x1D\x2C\x18\xC7\x29\x1F" 16726 + "\x61\x28\x4A\xE3\xCD\xE5\x47\xB2" 16727 + "\x82\x2F\x66\x83\x91\x51\xAE\xD7" 16728 + "\x1C\x91\x3C\x57\xE3\x1D\x5A\xC9" 16729 + "\xFD\xC5\x58\x58\xEF\xCC\x33\xC9" 16730 + "\x0F\xEA\x26\x32\xD1\x15\x19\x2D" 16731 + "\x25\xB4\x7F\xB0\xDF\xFB\x88\x60" 16732 + "\x4E\x4D\x06\x7D\xCC\x1F\xED\x3B" 16733 + "\x68\x84\xD5\xB3\x1B\xE7\xB9\xA1" 16734 + "\x68\x8B\x2C\x1A\x44\xDA\x63\xD3" 16735 + "\x29\xE9\x59\x32\x1F\x30\x1C\x43" 16736 + "\xEA\x3A\xA3\x6B\x54\x3C\xAA\x11" 16737 + "\xAD\x38\x20\xC9\xB9\x8A\x64\x66" 16738 + "\x5A\x07\x49\xDF\xA1\x9C\xF9\x76" 16739 + "\x36\x65\xB6\x81\x8F\x76\x09\xE5" 16740 + "\xEB\xD1\x29\xA4\xE4\xF4\x4C\xCD" 16741 + "\xAF\xFC\xB9\x16\xD9\xC3\x73\x6A" 16742 + "\x33\x12\xF8\x7E\xBC\xCC\x7D\x80" 16743 + "\xBF\x3C\x25\x06\x13\x84\xFA\x35" 16744 + "\xF7\x40\xFA\xA1\x44\x13\x70\xD8" 16745 + "\x01\xF9\x85\x15\x63\xEC\x7D\xB9" 16746 + "\x02\xD8\xBA\x41\x6C\x92\x68\x66" 16747 + "\x95\xDD\xD6\x42\xE7\xBB\xE1\xFD" 16748 + "\x28\x3E\x94\xB6\xBD\xA7\xBF\x47" 16749 + "\x58\x8D\xFF\x19\x30\x75\x0D\x48" 16750 + "\x94\xE9\xA6\xCD\xB3\x8E\x1E\xCD" 16751 + "\x59\xBC\x1A\xAC\x3C\x4F\xA9\xEB" 16752 + "\xF4\xA7\xE4\x75\x4A\x18\x40\xC9" 16753 + "\x1E\xEC\x06\x9C\x28\x4B\xF7\x2B" 16754 + "\xE2\xEF\xD6\x42\x2E\xBB\xFC\x0A" 16755 + "\x79\xA2\x99\x28\x93\x1B\x00\x57" 16756 + "\x35\x1E\x1A\x93\x90\xA4\x68\x95" 16757 + "\x5E\x57\x40\xD5\xA9\xAA\x19\x48" 16758 + "\xEC\xFF\x76\x77\xDC\x78\x89\x76" 16759 + "\xE5\x3B\x00\xEC\x58\x4D\xD1\xE3" 16760 + "\xC8\x6C\x2C\x45\x5E\x5F\xD9\x4E" 16761 + "\x71\xA5\x36\x6D\x03\xF1\xC7\xD5" 16762 + "\xF3\x63\xC0\xD8\xCB\x2B\xF1\xA8" 16763 + "\xB9\x2B\xE6\x0B\xB9\x65\x78\xA0" 16764 + "\xC4\x46\xE6\x9B\x8B\x43\x2D\xAB" 16765 + "\x70\xA6\xE0\x59\x1E\xAC\x9D\xE0" 16766 + "\x76\x44\x45\xF3\x24\x11\x57\x98" 16767 + "\x9A\x86\xB4\x12\x80\x28\x86\x20" 16768 + "\x23\x9D\x2D\xE9\x38\x32\xB1\xE1" 16769 + "\xCF\x0A\x23\x73\x7D\xC5\x80\x3D" 16770 + "\x9F\x6D\xA0\xD0\xEE\x93\x8A\x79" 16771 + "\x3A\xDD\x1D\xBB\x9E\x26\x5D\x01" 16772 + "\x44\xD0\xD4\x4E\xC3\xF1\xE4\x38" 16773 + "\x09\x62\x0A\x1A\x4E\xD2\x63\x0F" 16774 + "\x6E\x3E\xD2\xA4\x3A\xF4\xF3\xFF" 16775 + "\x7E\x42\xEC\xB6\x6F\x4D\x6B\x48" 16776 + "\xE6\xA6\x50\x80\x78\x9E\xF1\xB0" 16777 + "\x4D\xB2\x0D\x3D\xFC\x40\x25\x4D" 16778 + "\x93\x11\x1C", 16779 + .ilen = 499, 21927 16780 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 21928 16781 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 21929 16782 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 21930 16783 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87" 21931 16784 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9" 21932 16785 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48" 21933 - "\xDF\x76\x0D", 21934 - .rlen = 51, 16786 + "\xDF\x76\x0D\x81\x18\xAF\x23\xBA" 16787 + "\x51\xE8\x5C\xF3\x8A\x21\x95\x2C" 16788 + "\xC3\x37\xCE\x65\xFC\x70\x07\x9E" 16789 + "\x12\xA9\x40\xD7\x4B\xE2\x79\x10" 16790 + "\x84\x1B\xB2\x26\xBD\x54\xEB\x5F" 16791 + "\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1" 16792 + "\x68\xFF\x73\x0A\xA1\x15\xAC\x43" 16793 + "\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5" 16794 + "\x29\xC0\x57\xEE\x62\xF9\x90\x04" 16795 + "\x9B\x32\xC9\x3D\xD4\x6B\x02\x76" 16796 + "\x0D\xA4\x18\xAF\x46\xDD\x51\xE8" 16797 + "\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A" 16798 + "\xF1\x65\xFC\x93\x07\x9E\x35\xCC" 16799 + "\x40\xD7\x6E\x05\x79\x10\xA7\x1B" 16800 + "\xB2\x49\xE0\x54\xEB\x82\x19\x8D" 16801 + "\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF" 16802 + "\x96\x0A\xA1\x38\xCF\x43\xDA\x71" 16803 + "\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3" 16804 + "\x57\xEE\x85\x1C\x90\x27\xBE\x32" 16805 + "\xC9\x60\xF7\x6B\x02\x99\x0D\xA4" 16806 + "\x3B\xD2\x46\xDD\x74\x0B\x7F\x16" 16807 + "\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88" 16808 + "\x1F\x93\x2A\xC1\x35\xCC\x63\xFA" 16809 + "\x6E\x05\x9C\x10\xA7\x3E\xD5\x49" 16810 + "\xE0\x77\x0E\x82\x19\xB0\x24\xBB" 16811 + "\x52\xE9\x5D\xF4\x8B\x22\x96\x2D" 16812 + "\xC4\x38\xCF\x66\xFD\x71\x08\x9F" 16813 + "\x13\xAA\x41\xD8\x4C\xE3\x7A\x11" 16814 + "\x85\x1C\xB3\x27\xBE\x55\xEC\x60" 16815 + "\xF7\x8E\x02\x99\x30\xC7\x3B\xD2" 16816 + "\x69\x00\x74\x0B\xA2\x16\xAD\x44" 16817 + "\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6" 16818 + "\x2A\xC1\x58\xEF\x63\xFA\x91\x05" 16819 + "\x9C\x33\xCA\x3E\xD5\x6C\x03\x77" 16820 + "\x0E\xA5\x19\xB0\x47\xDE\x52\xE9" 16821 + "\x80\x17\x8B\x22\xB9\x2D\xC4\x5B" 16822 + "\xF2\x66\xFD\x94\x08\x9F\x36\xCD" 16823 + "\x41\xD8\x6F\x06\x7A\x11\xA8\x1C" 16824 + "\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E" 16825 + "\x25\xBC\x30\xC7\x5E\xF5\x69\x00" 16826 + "\x97\x0B\xA2\x39\xD0\x44\xDB\x72" 16827 + "\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4" 16828 + "\x58\xEF\x86\x1D\x91\x28\xBF\x33" 16829 + "\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5" 16830 + "\x3C\xD3\x47\xDE\x75\x0C\x80\x17" 16831 + "\xAE\x22\xB9\x50\xE7\x5B\xF2\x89" 16832 + "\x20\x94\x2B\xC2\x36\xCD\x64\xFB" 16833 + "\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A" 16834 + "\xE1\x78\x0F\x83\x1A\xB1\x25\xBC" 16835 + "\x53\xEA\x5E\xF5\x8C\x00\x97\x2E" 16836 + "\xC5\x39\xD0\x67\xFE\x72\x09\xA0" 16837 + "\x14\xAB\x42\xD9\x4D\xE4\x7B\x12" 16838 + "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 16839 + "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 16840 + "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 16841 + "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 16842 + "\x2B\xC2\x59", 16843 + .rlen = 499, 21935 16844 .also_non_np = 1, 21936 16845 .np = 2, 21937 - .tap = { 51 - 16, 16 }, 16846 + .tap = { 499 - 16, 16 }, 21938 16847 }, { /* Generated with Crypto++ */ 21939 16848 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 21940 16849 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" ··· 25210 19895 /* 25211 19896 * CRC32C test vectors 25212 19897 */ 25213 - #define CRC32C_TEST_VECTORS 14 19898 + #define CRC32C_TEST_VECTORS 15 25214 19899 25215 19900 static struct hash_testvec crc32c_tv_template[] = { 25216 19901 { ··· 25381 20066 .digest = "\x75\xd3\xc5\x24", 25382 20067 .np = 2, 25383 20068 .tap = { 31, 209 } 25384 - }, 20069 + }, { 20070 + .key = "\xff\xff\xff\xff", 20071 + .ksize = 4, 20072 + .plaintext = "\x6e\x05\x79\x10\xa7\x1b\xb2\x49" 20073 + "\xe0\x54\xeb\x82\x19\x8d\x24\xbb" 20074 + "\x2f\xc6\x5d\xf4\x68\xff\x96\x0a" 20075 + "\xa1\x38\xcf\x43\xda\x71\x08\x7c" 20076 + "\x13\xaa\x1e\xb5\x4c\xe3\x57\xee" 20077 + "\x85\x1c\x90\x27\xbe\x32\xc9\x60" 20078 + "\xf7\x6b\x02\x99\x0d\xa4\x3b\xd2" 20079 + "\x46\xdd\x74\x0b\x7f\x16\xad\x21" 20080 + "\xb8\x4f\xe6\x5a\xf1\x88\x1f\x93" 20081 + "\x2a\xc1\x35\xcc\x63\xfa\x6e\x05" 20082 + "\x9c\x10\xa7\x3e\xd5\x49\xe0\x77" 20083 + "\x0e\x82\x19\xb0\x24\xbb\x52\xe9" 20084 + "\x5d\xf4\x8b\x22\x96\x2d\xc4\x38" 20085 + "\xcf\x66\xfd\x71\x08\x9f\x13\xaa" 20086 + "\x41\xd8\x4c\xe3\x7a\x11\x85\x1c" 20087 + "\xb3\x27\xbe\x55\xec\x60\xf7\x8e" 20088 + "\x02\x99\x30\xc7\x3b\xd2\x69\x00" 20089 + "\x74\x0b\xa2\x16\xad\x44\xdb\x4f" 20090 + "\xe6\x7d\x14\x88\x1f\xb6\x2a\xc1" 20091 + "\x58\xef\x63\xfa\x91\x05\x9c\x33" 20092 + "\xca\x3e\xd5\x6c\x03\x77\x0e\xa5" 20093 + "\x19\xb0\x47\xde\x52\xe9\x80\x17" 20094 + "\x8b\x22\xb9\x2d\xc4\x5b\xf2\x66" 20095 + "\xfd\x94\x08\x9f\x36\xcd\x41\xd8" 20096 + "\x6f\x06\x7a\x11\xa8\x1c\xb3\x4a" 20097 + "\xe1\x55\xec\x83\x1a\x8e\x25\xbc" 20098 + "\x30\xc7\x5e\xf5\x69\x00\x97\x0b" 20099 + "\xa2\x39\xd0\x44\xdb\x72\x09\x7d" 20100 + "\x14\xab\x1f\xb6\x4d\xe4\x58\xef" 20101 + "\x86\x1d\x91\x28\xbf\x33\xca\x61" 20102 + "\xf8\x6c\x03\x9a\x0e\xa5\x3c\xd3" 20103 + "\x47\xde\x75\x0c\x80\x17\xae\x22" 20104 + "\xb9\x50\xe7\x5b\xf2\x89\x20\x94" 20105 + "\x2b\xc2\x36\xcd\x64\xfb\x6f\x06" 20106 + "\x9d\x11\xa8\x3f\xd6\x4a\xe1\x78" 20107 + "\x0f\x83\x1a\xb1\x25\xbc\x53\xea" 20108 + "\x5e\xf5\x8c\x00\x97\x2e\xc5\x39" 20109 + "\xd0\x67\xfe\x72\x09\xa0\x14\xab" 20110 + "\x42\xd9\x4d\xe4\x7b\x12\x86\x1d" 20111 + "\xb4\x28\xbf\x56\xed\x61\xf8\x8f" 20112 + "\x03\x9a\x31\xc8\x3c\xd3\x6a\x01" 20113 + "\x75\x0c\xa3\x17\xae\x45\xdc\x50" 20114 + "\xe7\x7e\x15\x89\x20\xb7\x2b\xc2" 20115 + "\x59\xf0\x64\xfb\x92\x06\x9d\x34" 20116 + "\xcb\x3f\xd6\x6d\x04\x78\x0f\xa6" 20117 + "\x1a\xb1\x48\xdf\x53\xea\x81\x18" 20118 + "\x8c\x23\xba\x2e\xc5\x5c\xf3\x67" 20119 + "\xfe\x95\x09\xa0\x37\xce\x42\xd9" 20120 + "\x70\x07\x7b\x12\xa9\x1d\xb4\x4b" 20121 + "\xe2\x56\xed\x84\x1b\x8f\x26\xbd" 20122 + "\x31\xc8\x5f\xf6\x6a\x01\x98\x0c" 20123 + "\xa3\x3a\xd1\x45\xdc\x73\x0a\x7e" 20124 + "\x15\xac\x20\xb7\x4e\xe5\x59\xf0" 20125 + "\x87\x1e\x92\x29\xc0\x34\xcb\x62" 20126 + "\xf9\x6d\x04\x9b\x0f\xa6\x3d\xd4" 20127 + "\x48\xdf\x76\x0d\x81\x18\xaf\x23" 20128 + "\xba\x51\xe8\x5c\xf3\x8a\x21\x95" 20129 + "\x2c\xc3\x37\xce\x65\xfc\x70\x07" 20130 + "\x9e\x12\xa9\x40\xd7\x4b\xe2\x79" 20131 + "\x10\x84\x1b\xb2\x26\xbd\x54\xeb" 20132 + "\x5f\xf6\x8d\x01\x98\x2f\xc6\x3a" 20133 + "\xd1\x68\xff\x73\x0a\xa1\x15\xac" 20134 + "\x43\xda\x4e\xe5\x7c\x13\x87\x1e" 20135 + "\xb5\x29\xc0\x57\xee\x62\xf9\x90" 20136 + "\x04\x9b\x32\xc9\x3d\xd4\x6b\x02" 20137 + "\x76\x0d\xa4\x18\xaf\x46\xdd\x51" 20138 + "\xe8\x7f\x16\x8a\x21\xb8\x2c\xc3" 20139 + "\x5a\xf1\x65\xfc\x93\x07\x9e\x35" 20140 + "\xcc\x40\xd7\x6e\x05\x79\x10\xa7" 20141 + "\x1b\xb2\x49\xe0\x54\xeb\x82\x19" 20142 + "\x8d\x24\xbb\x2f\xc6\x5d\xf4\x68" 20143 + "\xff\x96\x0a\xa1\x38\xcf\x43\xda" 20144 + "\x71\x08\x7c\x13\xaa\x1e\xb5\x4c" 20145 + "\xe3\x57\xee\x85\x1c\x90\x27\xbe" 20146 + "\x32\xc9\x60\xf7\x6b\x02\x99\x0d" 20147 + "\xa4\x3b\xd2\x46\xdd\x74\x0b\x7f" 20148 + "\x16\xad\x21\xb8\x4f\xe6\x5a\xf1" 20149 + "\x88\x1f\x93\x2a\xc1\x35\xcc\x63" 20150 + "\xfa\x6e\x05\x9c\x10\xa7\x3e\xd5" 20151 + "\x49\xe0\x77\x0e\x82\x19\xb0\x24" 20152 + "\xbb\x52\xe9\x5d\xf4\x8b\x22\x96" 20153 + "\x2d\xc4\x38\xcf\x66\xfd\x71\x08" 20154 + "\x9f\x13\xaa\x41\xd8\x4c\xe3\x7a" 20155 + "\x11\x85\x1c\xb3\x27\xbe\x55\xec" 20156 + "\x60\xf7\x8e\x02\x99\x30\xc7\x3b" 20157 + "\xd2\x69\x00\x74\x0b\xa2\x16\xad" 20158 + "\x44\xdb\x4f\xe6\x7d\x14\x88\x1f" 20159 + "\xb6\x2a\xc1\x58\xef\x63\xfa\x91" 20160 + "\x05\x9c\x33\xca\x3e\xd5\x6c\x03" 20161 + "\x77\x0e\xa5\x19\xb0\x47\xde\x52" 20162 + "\xe9\x80\x17\x8b\x22\xb9\x2d\xc4" 20163 + "\x5b\xf2\x66\xfd\x94\x08\x9f\x36" 20164 + "\xcd\x41\xd8\x6f\x06\x7a\x11\xa8" 20165 + "\x1c\xb3\x4a\xe1\x55\xec\x83\x1a" 20166 + "\x8e\x25\xbc\x30\xc7\x5e\xf5\x69" 20167 + "\x00\x97\x0b\xa2\x39\xd0\x44\xdb" 20168 + "\x72\x09\x7d\x14\xab\x1f\xb6\x4d" 20169 + "\xe4\x58\xef\x86\x1d\x91\x28\xbf" 20170 + "\x33\xca\x61\xf8\x6c\x03\x9a\x0e" 20171 + "\xa5\x3c\xd3\x47\xde\x75\x0c\x80" 20172 + "\x17\xae\x22\xb9\x50\xe7\x5b\xf2" 20173 + "\x89\x20\x94\x2b\xc2\x36\xcd\x64" 20174 + "\xfb\x6f\x06\x9d\x11\xa8\x3f\xd6" 20175 + "\x4a\xe1\x78\x0f\x83\x1a\xb1\x25" 20176 + "\xbc\x53\xea\x5e\xf5\x8c\x00\x97" 20177 + "\x2e\xc5\x39\xd0\x67\xfe\x72\x09" 20178 + "\xa0\x14\xab\x42\xd9\x4d\xe4\x7b" 20179 + "\x12\x86\x1d\xb4\x28\xbf\x56\xed" 20180 + "\x61\xf8\x8f\x03\x9a\x31\xc8\x3c" 20181 + "\xd3\x6a\x01\x75\x0c\xa3\x17\xae" 20182 + "\x45\xdc\x50\xe7\x7e\x15\x89\x20" 20183 + "\xb7\x2b\xc2\x59\xf0\x64\xfb\x92" 20184 + "\x06\x9d\x34\xcb\x3f\xd6\x6d\x04" 20185 + "\x78\x0f\xa6\x1a\xb1\x48\xdf\x53" 20186 + "\xea\x81\x18\x8c\x23\xba\x2e\xc5" 20187 + "\x5c\xf3\x67\xfe\x95\x09\xa0\x37" 20188 + "\xce\x42\xd9\x70\x07\x7b\x12\xa9" 20189 + "\x1d\xb4\x4b\xe2\x56\xed\x84\x1b" 20190 + "\x8f\x26\xbd\x31\xc8\x5f\xf6\x6a" 20191 + "\x01\x98\x0c\xa3\x3a\xd1\x45\xdc" 20192 + "\x73\x0a\x7e\x15\xac\x20\xb7\x4e" 20193 + "\xe5\x59\xf0\x87\x1e\x92\x29\xc0" 20194 + "\x34\xcb\x62\xf9\x6d\x04\x9b\x0f" 20195 + "\xa6\x3d\xd4\x48\xdf\x76\x0d\x81" 20196 + "\x18\xaf\x23\xba\x51\xe8\x5c\xf3" 20197 + "\x8a\x21\x95\x2c\xc3\x37\xce\x65" 20198 + "\xfc\x70\x07\x9e\x12\xa9\x40\xd7" 20199 + "\x4b\xe2\x79\x10\x84\x1b\xb2\x26" 20200 + "\xbd\x54\xeb\x5f\xf6\x8d\x01\x98" 20201 + "\x2f\xc6\x3a\xd1\x68\xff\x73\x0a" 20202 + "\xa1\x15\xac\x43\xda\x4e\xe5\x7c" 20203 + "\x13\x87\x1e\xb5\x29\xc0\x57\xee" 20204 + "\x62\xf9\x90\x04\x9b\x32\xc9\x3d" 20205 + "\xd4\x6b\x02\x76\x0d\xa4\x18\xaf" 20206 + "\x46\xdd\x51\xe8\x7f\x16\x8a\x21" 20207 + "\xb8\x2c\xc3\x5a\xf1\x65\xfc\x93" 20208 + "\x07\x9e\x35\xcc\x40\xd7\x6e\x05" 20209 + "\x79\x10\xa7\x1b\xb2\x49\xe0\x54" 20210 + "\xeb\x82\x19\x8d\x24\xbb\x2f\xc6" 20211 + "\x5d\xf4\x68\xff\x96\x0a\xa1\x38" 20212 + "\xcf\x43\xda\x71\x08\x7c\x13\xaa" 20213 + "\x1e\xb5\x4c\xe3\x57\xee\x85\x1c" 20214 + "\x90\x27\xbe\x32\xc9\x60\xf7\x6b" 20215 + "\x02\x99\x0d\xa4\x3b\xd2\x46\xdd" 20216 + "\x74\x0b\x7f\x16\xad\x21\xb8\x4f" 20217 + "\xe6\x5a\xf1\x88\x1f\x93\x2a\xc1" 20218 + "\x35\xcc\x63\xfa\x6e\x05\x9c\x10" 20219 + "\xa7\x3e\xd5\x49\xe0\x77\x0e\x82" 20220 + "\x19\xb0\x24\xbb\x52\xe9\x5d\xf4" 20221 + "\x8b\x22\x96\x2d\xc4\x38\xcf\x66" 20222 + "\xfd\x71\x08\x9f\x13\xaa\x41\xd8" 20223 + "\x4c\xe3\x7a\x11\x85\x1c\xb3\x27" 20224 + "\xbe\x55\xec\x60\xf7\x8e\x02\x99" 20225 + "\x30\xc7\x3b\xd2\x69\x00\x74\x0b" 20226 + "\xa2\x16\xad\x44\xdb\x4f\xe6\x7d" 20227 + "\x14\x88\x1f\xb6\x2a\xc1\x58\xef" 20228 + "\x63\xfa\x91\x05\x9c\x33\xca\x3e" 20229 + "\xd5\x6c\x03\x77\x0e\xa5\x19\xb0" 20230 + "\x47\xde\x52\xe9\x80\x17\x8b\x22" 20231 + "\xb9\x2d\xc4\x5b\xf2\x66\xfd\x94" 20232 + "\x08\x9f\x36\xcd\x41\xd8\x6f\x06" 20233 + "\x7a\x11\xa8\x1c\xb3\x4a\xe1\x55" 20234 + "\xec\x83\x1a\x8e\x25\xbc\x30\xc7" 20235 + "\x5e\xf5\x69\x00\x97\x0b\xa2\x39" 20236 + "\xd0\x44\xdb\x72\x09\x7d\x14\xab" 20237 + "\x1f\xb6\x4d\xe4\x58\xef\x86\x1d" 20238 + "\x91\x28\xbf\x33\xca\x61\xf8\x6c" 20239 + "\x03\x9a\x0e\xa5\x3c\xd3\x47\xde" 20240 + "\x75\x0c\x80\x17\xae\x22\xb9\x50" 20241 + "\xe7\x5b\xf2\x89\x20\x94\x2b\xc2" 20242 + "\x36\xcd\x64\xfb\x6f\x06\x9d\x11" 20243 + "\xa8\x3f\xd6\x4a\xe1\x78\x0f\x83" 20244 + "\x1a\xb1\x25\xbc\x53\xea\x5e\xf5" 20245 + "\x8c\x00\x97\x2e\xc5\x39\xd0\x67" 20246 + "\xfe\x72\x09\xa0\x14\xab\x42\xd9" 20247 + "\x4d\xe4\x7b\x12\x86\x1d\xb4\x28" 20248 + "\xbf\x56\xed\x61\xf8\x8f\x03\x9a" 20249 + "\x31\xc8\x3c\xd3\x6a\x01\x75\x0c" 20250 + "\xa3\x17\xae\x45\xdc\x50\xe7\x7e" 20251 + "\x15\x89\x20\xb7\x2b\xc2\x59\xf0" 20252 + "\x64\xfb\x92\x06\x9d\x34\xcb\x3f" 20253 + "\xd6\x6d\x04\x78\x0f\xa6\x1a\xb1" 20254 + "\x48\xdf\x53\xea\x81\x18\x8c\x23" 20255 + "\xba\x2e\xc5\x5c\xf3\x67\xfe\x95" 20256 + "\x09\xa0\x37\xce\x42\xd9\x70\x07" 20257 + "\x7b\x12\xa9\x1d\xb4\x4b\xe2\x56" 20258 + "\xed\x84\x1b\x8f\x26\xbd\x31\xc8" 20259 + "\x5f\xf6\x6a\x01\x98\x0c\xa3\x3a" 20260 + "\xd1\x45\xdc\x73\x0a\x7e\x15\xac" 20261 + "\x20\xb7\x4e\xe5\x59\xf0\x87\x1e" 20262 + "\x92\x29\xc0\x34\xcb\x62\xf9\x6d" 20263 + "\x04\x9b\x0f\xa6\x3d\xd4\x48\xdf" 20264 + "\x76\x0d\x81\x18\xaf\x23\xba\x51" 20265 + "\xe8\x5c\xf3\x8a\x21\x95\x2c\xc3" 20266 + "\x37\xce\x65\xfc\x70\x07\x9e\x12" 20267 + "\xa9\x40\xd7\x4b\xe2\x79\x10\x84" 20268 + "\x1b\xb2\x26\xbd\x54\xeb\x5f\xf6" 20269 + "\x8d\x01\x98\x2f\xc6\x3a\xd1\x68" 20270 + "\xff\x73\x0a\xa1\x15\xac\x43\xda" 20271 + "\x4e\xe5\x7c\x13\x87\x1e\xb5\x29" 20272 + "\xc0\x57\xee\x62\xf9\x90\x04\x9b" 20273 + "\x32\xc9\x3d\xd4\x6b\x02\x76\x0d" 20274 + "\xa4\x18\xaf\x46\xdd\x51\xe8\x7f" 20275 + "\x16\x8a\x21\xb8\x2c\xc3\x5a\xf1" 20276 + "\x65\xfc\x93\x07\x9e\x35\xcc\x40" 20277 + "\xd7\x6e\x05\x79\x10\xa7\x1b\xb2" 20278 + "\x49\xe0\x54\xeb\x82\x19\x8d\x24" 20279 + "\xbb\x2f\xc6\x5d\xf4\x68\xff\x96" 20280 + "\x0a\xa1\x38\xcf\x43\xda\x71\x08" 20281 + "\x7c\x13\xaa\x1e\xb5\x4c\xe3\x57" 20282 + "\xee\x85\x1c\x90\x27\xbe\x32\xc9" 20283 + "\x60\xf7\x6b\x02\x99\x0d\xa4\x3b" 20284 + "\xd2\x46\xdd\x74\x0b\x7f\x16\xad" 20285 + "\x21\xb8\x4f\xe6\x5a\xf1\x88\x1f" 20286 + "\x93\x2a\xc1\x35\xcc\x63\xfa\x6e" 20287 + "\x05\x9c\x10\xa7\x3e\xd5\x49\xe0" 20288 + "\x77\x0e\x82\x19\xb0\x24\xbb\x52" 20289 + "\xe9\x5d\xf4\x8b\x22\x96\x2d\xc4" 20290 + "\x38\xcf\x66\xfd\x71\x08\x9f\x13" 20291 + "\xaa\x41\xd8\x4c\xe3\x7a\x11\x85" 20292 + "\x1c\xb3\x27\xbe\x55\xec\x60\xf7" 20293 + "\x8e\x02\x99\x30\xc7\x3b\xd2\x69" 20294 + "\x00\x74\x0b\xa2\x16\xad\x44\xdb" 20295 + "\x4f\xe6\x7d\x14\x88\x1f\xb6\x2a" 20296 + "\xc1\x58\xef\x63\xfa\x91\x05\x9c" 20297 + "\x33\xca\x3e\xd5\x6c\x03\x77\x0e" 20298 + "\xa5\x19\xb0\x47\xde\x52\xe9\x80" 20299 + "\x17\x8b\x22\xb9\x2d\xc4\x5b\xf2" 20300 + "\x66\xfd\x94\x08\x9f\x36\xcd\x41" 20301 + "\xd8\x6f\x06\x7a\x11\xa8\x1c\xb3" 20302 + "\x4a\xe1\x55\xec\x83\x1a\x8e\x25" 20303 + "\xbc\x30\xc7\x5e\xf5\x69\x00\x97" 20304 + "\x0b\xa2\x39\xd0\x44\xdb\x72\x09" 20305 + "\x7d\x14\xab\x1f\xb6\x4d\xe4\x58" 20306 + "\xef\x86\x1d\x91\x28\xbf\x33\xca" 20307 + "\x61\xf8\x6c\x03\x9a\x0e\xa5\x3c" 20308 + "\xd3\x47\xde\x75\x0c\x80\x17\xae" 20309 + "\x22\xb9\x50\xe7\x5b\xf2\x89\x20" 20310 + "\x94\x2b\xc2\x36\xcd\x64\xfb\x6f" 20311 + "\x06\x9d\x11\xa8\x3f\xd6\x4a\xe1" 20312 + "\x78\x0f\x83\x1a\xb1\x25\xbc\x53" 20313 + "\xea\x5e\xf5\x8c\x00\x97\x2e\xc5" 20314 + "\x39\xd0\x67\xfe\x72\x09\xa0\x14" 20315 + "\xab\x42\xd9\x4d\xe4\x7b\x12\x86" 20316 + "\x1d\xb4\x28\xbf\x56\xed\x61\xf8" 20317 + "\x8f\x03\x9a\x31\xc8\x3c\xd3\x6a" 20318 + "\x01\x75\x0c\xa3\x17\xae\x45\xdc" 20319 + "\x50\xe7\x7e\x15\x89\x20\xb7\x2b" 20320 + "\xc2\x59\xf0\x64\xfb\x92\x06\x9d" 20321 + "\x34\xcb\x3f\xd6\x6d\x04\x78\x0f" 20322 + "\xa6\x1a\xb1\x48\xdf\x53\xea\x81" 20323 + "\x18\x8c\x23\xba\x2e\xc5\x5c\xf3" 20324 + "\x67\xfe\x95\x09\xa0\x37\xce\x42" 20325 + "\xd9\x70\x07\x7b\x12\xa9\x1d\xb4" 20326 + "\x4b\xe2\x56\xed\x84\x1b\x8f\x26" 20327 + "\xbd\x31\xc8\x5f\xf6\x6a\x01\x98", 20328 + .psize = 2048, 20329 + .digest = "\xec\x26\x4d\x95", 20330 + } 25385 20331 }; 25386 20332 25387 20333 /*
+43 -4
crypto/vmac.c
··· 375 375 u64 pkh = ctx->polykey[0]; 376 376 u64 pkl = ctx->polykey[1]; 377 377 378 + if (!mbytes) 379 + return; 380 + 381 + BUG_ON(mbytes % VMAC_NHBYTES); 382 + 378 383 mptr = (u64 *)m; 379 384 i = mbytes / VMAC_NHBYTES; /* Must be non-zero */ 380 385 ··· 459 454 } 460 455 461 456 static u64 vmac(unsigned char m[], unsigned int mbytes, 462 - unsigned char n[16], u64 *tagl, 457 + const unsigned char n[16], u64 *tagl, 463 458 struct vmac_ctx_t *ctx) 464 459 { 465 460 u64 *in_n, *out_p; ··· 564 559 { 565 560 struct crypto_shash *parent = pdesc->tfm; 566 561 struct vmac_ctx_t *ctx = crypto_shash_ctx(parent); 562 + int expand; 563 + int min; 567 564 568 - vhash_update(p, len, &ctx->__vmac_ctx); 565 + expand = VMAC_NHBYTES - ctx->partial_size > 0 ? 566 + VMAC_NHBYTES - ctx->partial_size : 0; 567 + 568 + min = len < expand ? len : expand; 569 + 570 + memcpy(ctx->partial + ctx->partial_size, p, min); 571 + ctx->partial_size += min; 572 + 573 + if (len < expand) 574 + return 0; 575 + 576 + vhash_update(ctx->partial, VMAC_NHBYTES, &ctx->__vmac_ctx); 577 + ctx->partial_size = 0; 578 + 579 + len -= expand; 580 + p += expand; 581 + 582 + if (len % VMAC_NHBYTES) { 583 + memcpy(ctx->partial, p + len - (len % VMAC_NHBYTES), 584 + len % VMAC_NHBYTES); 585 + ctx->partial_size = len % VMAC_NHBYTES; 586 + } 587 + 588 + vhash_update(p, len - len % VMAC_NHBYTES, &ctx->__vmac_ctx); 569 589 570 590 return 0; 571 591 } ··· 602 572 vmac_t mac; 603 573 u8 nonce[16] = {}; 604 574 605 - mac = vmac(NULL, 0, nonce, NULL, ctx); 575 + /* vmac() ends up accessing outside the array bounds that 576 + * we specify. In appears to access up to the next 2-word 577 + * boundary. We'll just be uber cautious and zero the 578 + * unwritten bytes in the buffer. 579 + */ 580 + if (ctx->partial_size) { 581 + memset(ctx->partial + ctx->partial_size, 0, 582 + VMAC_NHBYTES - ctx->partial_size); 583 + } 584 + mac = vmac(ctx->partial, ctx->partial_size, nonce, NULL, ctx); 606 585 memcpy(out, &mac, sizeof(vmac_t)); 607 586 memset(&mac, 0, sizeof(vmac_t)); 608 587 memset(&ctx->__vmac_ctx, 0, sizeof(struct vmac_ctx)); 588 + ctx->partial_size = 0; 609 589 return 0; 610 590 } 611 591 ··· 713 673 714 674 MODULE_LICENSE("GPL"); 715 675 MODULE_DESCRIPTION("VMAC hash algorithm"); 716 -
+1
drivers/crypto/Kconfig
··· 254 254 tristate "Support for OMAP AES hw engine" 255 255 depends on ARCH_OMAP2 || ARCH_OMAP3 256 256 select CRYPTO_AES 257 + select CRYPTO_BLKCIPHER2 257 258 help 258 259 OMAP processors have AES module accelerator. Select this if you 259 260 want to use the OMAP module for AES algorithms.
+1
drivers/crypto/picoxcell_crypto.c
··· 1863 1863 static const struct platform_device_id spacc_id_table[] = { 1864 1864 { "picochip,spacc-ipsec", }, 1865 1865 { "picochip,spacc-l2", }, 1866 + { } 1866 1867 }; 1867 1868 1868 1869 static struct platform_driver spacc_driver = {
+1 -1
drivers/crypto/s5p-sss.c
··· 30 30 #include <crypto/ctr.h> 31 31 32 32 #include <plat/cpu.h> 33 - #include <plat/dma.h> 33 + #include <mach/dma.h> 34 34 35 35 #define _SBF(s, v) ((v) << (s)) 36 36 #define _BIT(b) _SBF(b, 1)
+1 -2
drivers/crypto/talitos.c
··· 936 936 sg_count--; 937 937 link_tbl_ptr--; 938 938 } 939 - link_tbl_ptr->len = cpu_to_be16(be16_to_cpu(link_tbl_ptr->len) 940 - + cryptlen); 939 + be16_add_cpu(&link_tbl_ptr->len, cryptlen); 941 940 942 941 /* tag end of link table */ 943 942 link_tbl_ptr->j_extent = DESC_PTR_LNKTBL_RETURN;
+7 -3
drivers/crypto/tegra-aes.c
··· 672 672 mutex_lock(&aes_lock); 673 673 674 674 ret = clk_prepare_enable(dd->aes_clk); 675 - if (ret) 675 + if (ret) { 676 + mutex_unlock(&aes_lock); 676 677 return ret; 678 + } 677 679 678 680 ctx->dd = dd; 679 681 dd->ctx = ctx; ··· 759 757 dd->flags = FLAGS_ENCRYPT | FLAGS_RNG; 760 758 761 759 ret = clk_prepare_enable(dd->aes_clk); 762 - if (ret) 760 + if (ret) { 761 + mutex_unlock(&aes_lock); 763 762 return ret; 763 + } 764 764 765 765 aes_set_key(dd); 766 766 ··· 1033 1029 if (dd->buf_out) 1034 1030 dma_free_coherent(dev, AES_HW_DMA_BUFFER_SIZE_BYTES, 1035 1031 dd->buf_out, dd->dma_buf_out); 1036 - if (IS_ERR(dd->aes_clk)) 1032 + if (!IS_ERR(dd->aes_clk)) 1037 1033 clk_put(dd->aes_clk); 1038 1034 if (aes_wq) 1039 1035 destroy_workqueue(aes_wq);
+1 -5
include/crypto/cast5.h
··· 3 3 4 4 #include <linux/types.h> 5 5 #include <linux/crypto.h> 6 + #include <crypto/cast_common.h> 6 7 7 8 #define CAST5_BLOCK_SIZE 8 8 9 #define CAST5_MIN_KEY_SIZE 5 ··· 19 18 20 19 void __cast5_encrypt(struct cast5_ctx *ctx, u8 *dst, const u8 *src); 21 20 void __cast5_decrypt(struct cast5_ctx *ctx, u8 *dst, const u8 *src); 22 - 23 - extern const u32 cast5_s1[256]; 24 - extern const u32 cast5_s2[256]; 25 - extern const u32 cast5_s3[256]; 26 - extern const u32 cast5_s4[256]; 27 21 28 22 #endif
+1 -5
include/crypto/cast6.h
··· 3 3 4 4 #include <linux/types.h> 5 5 #include <linux/crypto.h> 6 + #include <crypto/cast_common.h> 6 7 7 8 #define CAST6_BLOCK_SIZE 16 8 9 #define CAST6_MIN_KEY_SIZE 16 ··· 20 19 21 20 void __cast6_encrypt(struct cast6_ctx *ctx, u8 *dst, const u8 *src); 22 21 void __cast6_decrypt(struct cast6_ctx *ctx, u8 *dst, const u8 *src); 23 - 24 - extern const u32 cast6_s1[256]; 25 - extern const u32 cast6_s2[256]; 26 - extern const u32 cast6_s3[256]; 27 - extern const u32 cast6_s4[256]; 28 22 29 23 #endif
+9
include/crypto/cast_common.h
··· 1 + #ifndef _CRYPTO_CAST_COMMON_H 2 + #define _CRYPTO_CAST_COMMON_H 3 + 4 + extern const u32 cast_s1[256]; 5 + extern const u32 cast_s2[256]; 6 + extern const u32 cast_s3[256]; 7 + extern const u32 cast_s4[256]; 8 + 9 + #endif
+2
include/crypto/vmac.h
··· 56 56 struct vmac_ctx_t { 57 57 struct crypto_cipher *child; 58 58 struct vmac_ctx __vmac_ctx; 59 + u8 partial[VMAC_NHBYTES]; /* partial block */ 60 + int partial_size; /* size of the partial block */ 59 61 }; 60 62 61 63 #endif /* __CRYPTO_VMAC_H */
+2 -3
kernel/padata.c
··· 171 171 { 172 172 int cpu, num_cpus; 173 173 unsigned int next_nr, next_index; 174 - struct padata_parallel_queue *queue, *next_queue; 174 + struct padata_parallel_queue *next_queue; 175 175 struct padata_priv *padata; 176 176 struct padata_list *reorder; 177 177 ··· 204 204 goto out; 205 205 } 206 206 207 - queue = per_cpu_ptr(pd->pqueue, smp_processor_id()); 208 - if (queue->cpu_index == next_queue->cpu_index) { 207 + if (__this_cpu_read(pd->pqueue->cpu_index) == next_queue->cpu_index) { 209 208 padata = ERR_PTR(-ENODATA); 210 209 goto out; 211 210 }