lib/crypto: mldsa: Add FIPS cryptographic algorithm self-test
Subsystems (2)
Eric Biggers
maintainerPATCH 1/1 lib/crypto: mldsa: Add FIPS cryptographic algorithm self-test
Since ML-DSA is FIPS-approved, add the boot-time self-test which is apparently required.
Just add a test vector manually for now, borrowed from lib/crypto/tests/mldsa-testvecs.h (where in turn it's borrowed from leancrypto). The SHA-* FIPS test vectors are generated by scripts/crypto/gen-fips-testvecs.py instead, but the common Python libraries don't support ML-DSA yet.
---
This patch is targeting libcrypto-next
lib/crypto/fips-mldsa.h | 458 ++++++++++++++++++++++++++++++++++++++++ lib/crypto/mldsa.c | 31 +++ 2 files changed, 489 insertions(+) create mode 100644 lib/crypto/fips-mldsa.h
lib/crypto/fips-mldsa.h new file +458 -0
@@ -0,0 +1,458 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* ML-DSA test vector extracted from leancrypto */ + +#include <linux/fips.h> + +static const u8 fips_test_mldsa65_signature[]__initconst __maybe_unused = { +0xda ,0xcf ,0x8d ,0x67 ,0x59 ,0x60 ,0x6c ,0x39 ,0x2d ,0x89 ,0xb6 ,0xa1 , +0xf3 ,0x8c ,0x70 ,0xcf ,0x25 ,0x86 ,0x21 ,0xa1 ,0x9f ,0x20 ,0x9e ,0xf5 , +0xd2 ,0xdd ,0xbd ,0x99 ,0xfa ,0xe4 ,0xab ,0x77 ,0x31 ,0x65 ,0x18 ,0xa1 , +0xd1 ,0x3f ,0x21 ,0x70 ,0x36 ,0xe1 ,0xf9 ,0x5c ,0x28 ,0xb6 ,0x7d ,0x34 , +0xae ,0x66 ,0xc9 ,0x1c ,0x8e ,0xc6 ,0xf9 ,0x45 ,0x8c ,0xa9 ,0xb2 ,0xfb , +0x0f ,0x5b ,0xb8 ,0xf9 ,0xf5 ,0xe2 ,0x37 ,0x79 ,0x12 ,0xda ,0xa7 ,0x72 , +0x9e ,0x0d ,0xf8 ,0x88 ,0x5b ,0x34 ,0x49 ,0x6c ,0xed ,0xa3 ,0x7f ,0x86 , +0xd3 ,0xd9 ,0x2f ,0x44 ,0x08 ,0x0d ,0xb7 ,0xdb ,0x4a ,0xce ,0x02 ,0x14 , +0x02 ,0xd6 ,0x40 ,0x75 ,0xe3 ,0xc0 ,0x97 ,0xfc ,0x6c ,0x6a ,0x88 ,0x29 , +0x0c ,0xe2 ,0x3a ,0x2b ,0x28 ,0x82 ,0x8f ,0x27 ,0x09 ,0x69 ,0x91 ,0xc6 , +0xc3 ,0xb7 ,0x07 ,0x61 ,0x86 ,0x8d ,0x89 ,0x8a ,0xd5 ,0x00 ,0x3b ,0x4b , +0xfc ,0x6f ,0xb3 ,0x3f ,0x4c ,0x93 ,0x31 ,0xfc ,0x88 ,0x53 ,0x26 ,0xea , +0xe5 ,0x3a ,0xfc ,0xc1 ,0x59 ,0x16 ,0xf0 ,0xb7 ,0xac ,0xde ,0x1e ,0xd8 , +0x74 ,0x85 ,0x72 ,0xd9 ,0xbb ,0xbe ,0x76 ,0x32 ,0x25 ,0x9d ,0x21 ,0xbc , +0xfd ,0x8d ,0x32 ,0xfe ,0xae ,0x24 ,0xe5 ,0x4a ,0xcc ,0x5d ,0x15 ,0x23 , +0xd3 ,0x57 ,0xe7 ,0xa9 ,0x2c ,0x31 ,0xd7 ,0xc5 ,0x6b ,0x70 ,0x6c ,0x22 , +0x5a ,0x13 ,0x1f ,0x76 ,0x13 ,0x78 ,0x6f ,0xac ,0x42 ,0x4c ,0x46 ,0x81 , +0xa2 ,0x20 ,0x91 ,0x30 ,0xed ,0xcb ,0x90 ,0xfe ,0x3c ,0xa3 ,0xc7 ,0xb4 , +0x1f ,0x21 ,0x1d ,0x98 ,0x74 ,0x6a ,0x3e ,0xc8 ,0xcc ,0xd2 ,0x68 ,0x87 , +0x69 ,0xa9 ,0xdf ,0x50 ,0xd5 ,0x0a ,0x8e ,0x10 ,0x54 ,0xab ,0xea ,0x65 , +0x2a ,0x52 ,0xd7 ,0x22 ,0xae ,0x2f ,0x1e ,0xc3 ,0x16 ,0x58 ,0x20 ,0x18 , +0x6d ,0x35 ,0x46 ,0x31 ,0x43 ,0x5d ,0x62 ,0xfb ,0xb1 ,0x47 ,0x32 ,0xfa , +0x14 ,0xcc ,0x51 ,0xa3 ,0xcd ,0x99 ,0x4f ,0x97 ,0x0f ,0xca ,0x24 ,0x93 , +0x17 ,0xea ,0xa3 ,0xf3 ,0x1f ,0xbe ,0xb5 ,0xa3 ,0xac ,0x80 ,0xcc ,0x20 , +0x3b ,0xa6 ,0xd3 ,0x32 ,0x72 ,0x4e ,0xd9 ,0x25 ,0xf9 ,0xc2 ,0x24 ,0x15 , +0xbd ,0x1e ,0x1e ,0x41 ,0x8c ,0x18 ,0x8c ,0x58 ,0xe8 ,0x75 ,0x20 ,0xff , +0xa3 ,0xf4 ,0xd4 ,0xab ,0x75 ,0x78 ,0x4e ,0xbb ,0x7c ,0x94 ,0x93 ,0x28 , +0x5b ,0x07 ,0x3a ,0x3c ,0xc9 ,0xf1 ,0x55 ,0x3e ,0x33 ,0xed ,0xf8 ,0x72 , +0x55 ,0xab ,0x5a ,0xea ,0xbe ,0x65 ,0xfa ,0x81 ,0x50 ,0xc0 ,0x9d ,0x2d , +0xfb ,0x04 ,0x25 ,0x7c ,0xb9 ,0xee ,0xe2 ,0xa3 ,0x00 ,0x44 ,0xd3 ,0x9d , +0xee ,0x4f ,0x80 ,0x77 ,0xfb ,0x26 ,0x6b ,0x07 ,0xd0 ,0xff ,0x82 ,0x39 , +0x0e ,0x2b ,0x47 ,0xa3 ,0xe7 ,0x3e ,0xc5 ,0x4e ,0x15 ,0x8a ,0x48 ,0x28 , +0xfb ,0xf7 ,0xa4 ,0x86 ,0xfb ,0x77 ,0x60 ,0xcd ,0xc5 ,0x68 ,0x96 ,0xd7 , +0x4c ,0x3c ,0xf2 ,0x51 ,0x71 ,0x79 ,0x2e ,0x2e ,0x57 ,0x10 ,0xa7 ,0xfc , +0xd1 ,0xd4 ,0x61 ,0x71 ,0x81 ,0x85 ,0x74 ,0x09 ,0x7d ,0x80 ,0xd0 ,0xc2 , +0xe9 ,0xff ,0xb7 ,0x88 ,0x53 ,0x74 ,0x1e ,0xb0 ,0xca ,0x65 ,0x48 ,0x8e , +0xdb ,0x59 ,0x3a ,0xcb ,0x80 ,0xeb ,0xfd ,0xd2 ,0xc9 ,0x38 ,0x43 ,0xae , +0x76 ,0xf2 ,0xbb ,0x51 ,0xb2 ,0xcb ,0xe6 ,0x85 ,0x31 ,0xb5 ,0x62 ,0xd4 , +0x5e ,0x48 ,0x08 ,0xf1 ,0x40 ,0x5b ,0x16 ,0x83 ,0x5e ,0xa5 ,0x9c ,0x6b , +0x91 ,0x49 ,0x44 ,0xff ,0x3b ,0xa9 ,0x2b ,0xf3 ,0x06 ,0x33 ,0x9e ,0x6e , +0x3c ,0x66 ,0x7e ,0x27 ,0xa2 ,0x59 ,0x7b ,0xe3 ,0xb6 ,0xb4 ,0x28 ,0xeb , +0x93 ,0x35 ,0x87 ,0xac ,0x0e ,0x0b ,0x7e ,0xbc ,0x35 ,0x28 ,0x72 ,0x1f , +0x26 ,0x59 ,0xd0 ,0x1f ,0x63 ,0xe4 ,0x86 ,0x5d ,0x70 ,0xf3 ,0xa8 ,0xa4 , +0xb8 ,0xcd ,0xb3 ,0xf8 ,0x8d ,0xaa ,0x41 ,0xd2 ,0xcc ,0x0b ,0x15 ,0x66 , +0x22 ,0x83 ,0x92 ,0xe3 ,0x0b ,0xf9 ,0xea ,0xa0 ,0x33 ,0xa1 ,0x4e ,0x92 , +0xae ,0x81 ,0x95 ,0xa4 ,0x58 ,0x3f ,0xa9 ,0x15 ,0x52 ,0xf9 ,0xda ,0xb7 , +0x10 ,0x8d ,0xc6 ,0xab ,0x77 ,0xe9 ,0xbe ,0xad ,0xc9 ,0x3a ,0x6a ,0x8d , +0x92 ,0x6c ,0x69 ,0xff ,0x31 ,0x49 ,0x25 ,0x04 ,0xc8 ,0x93 ,0x6f ,0xc8 , +0xe7 ,0x60 ,0x7a ,0x76 ,0xb5 ,0xc1 ,0x07 ,0xef ,0xa3 ,0x39 ,0xa6 ,0xf2 , +0x36 ,0x04 ,0xde ,0x3c ,0x4a ,0x4e ,0x96 ,0xbd ,0x64 ,0x26 ,0x80 ,0x01 , +0x88 ,0x47 ,0xd2 ,0xa4 ,0x46 ,0xcd ,0xe1 ,0x30 ,0x7f ,0xa3 ,0x00 ,0x11 , +0x38 ,0x55 ,0xfa ,0xeb ,0x10 ,0xeb ,0xa0 ,0x65 ,0x04 ,0x09 ,0xc8 ,0xde , +0x9c ,0x73 ,0xba ,0x0c ,0xbd ,0xd3 ,0xa5 ,0x84 ,0x5e ,0xb9 ,0x3b ,0xd4 , +0x94 ,0xbd ,0xa6 ,0x53 ,0xbe ,0x93 ,0x69 ,0x3e ,0xaa ,0x32 ,0x31 ,0x06 , +0xc8 ,0x1b ,0x4a ,0x48 ,0xb5 ,0x17 ,0x85 ,0xbf ,0x72 ,0xec ,0xf5 ,0x29 , +0x8a ,0xd8 ,0xeb ,0x99 ,0x8b ,0x74 ,0x84 ,0x57 ,0x8c ,0xe1 ,0x85 ,0x94 , +0xa0 ,0xbc ,0x7a ,0x14 ,0xf0 ,0xf4 ,0x8b ,0x25 ,0x37 ,0x43 ,0xa1 ,0x34 , +0x09 ,0x71 ,0xca ,0x5c ,0x9f ,0x08 ,0x38 ,0xd9 ,0x9c ,0x0c ,0x0e ,0xcb , +0xe4 ,0xad ,0x4b ,0x2a ,0x89 ,0x67 ,0xf8 ,0x29 ,0x6c ,0x69 ,0x0e ,0x5d , +0xca ,0xfa ,0xa6 ,0x6b ,0x0e ,0xb5 ,0x94 ,0x17 ,0x71 ,0xf0 ,0xc9 ,0xcd , +0x02 ,0x1d ,0xa5 ,0xd5 ,0xc6 ,0xa7 ,0xbc ,0x5f ,0x6e ,0x67 ,0x43 ,0x68 , +0xce ,0xac ,0x54 ,0x81 ,0x2a ,0x25 ,0x22 ,0x52 ,0x35 ,0xad ,0x7b ,0xd5 , +0x06 ,0x8c ,0x00 ,0xfb ,0xca ,0xc4 ,0x0a ,0x49 ,0x1e ,0xc8 ,0xeb ,0x77 , +0xc1 ,0x63 ,0x23 ,0x96 ,0xbd ,0x35 ,0xfa ,0x13 ,0xae ,0xbf ,0x1d ,0x1e , +0x69 ,0x8d ,0xb3 ,0xe3 ,0x07 ,0xde ,0x4e ,0xd0 ,0x12 ,0xa9 ,0xc3 ,0x36 , +0x30 ,0x46 ,0xef ,0x92 ,0x76 ,0x17 ,0x8f ,0x10 ,0xe7 ,0xba ,0x99 ,0x4b , +0xdf ,0xad ,0xb8 ,0x11 ,0x80 ,0xdf ,0xe7 ,0xfd ,0x80 ,0x64 ,0xf7 ,0x2a , +0xac ,0x60 ,0x2a ,0x54 ,0x8f ,0x4f ,0xaf ,0xaf ,0x60 ,0xf9 ,0x67 ,0x20 , +0x80 ,0x53 ,0x5c ,0xb6 ,0x81 ,0xa6 ,0x2a ,0x74 ,0x2d ,0xc5 ,0x74 ,0x2a , +0x95 ,0x26 ,0x13 ,0x17 ,0x01 ,0xdd ,0x31 ,0xac ,0x5a ,0x05 ,0xda ,0xde , +0xba ,0xf6 ,0x37 ,0x13 ,0x8d ,0xe4 ,0xa8 ,0x93 ,0x46 ,0x9e ,0xa9 ,0x82 , +0x24 ,0x7e ,0xc8 ,0xda ,0x63 ,0x89 ,0xcd ,0x33 ,0xc9 ,0xf7 ,0xf9 ,0x71 , +0x35 ,0xe6 ,0xa5 ,0x5f ,0x6b ,0x3b ,0xbb ,0x0c ,0xe0 ,0xa4 ,0x0b ,0xe3 , +0x29 ,0xc0 ,0xae ,0x8e ,0xce ,0x03 ,0x09 ,0x73 ,0x0e ,0x1e ,0x9c ,0xe9 , +0x59 ,0xb6 ,0x8b ,0x78 ,0x67 ,0x32 ,0x8b ,0xf1 ,0x93 ,0xcc ,0x72 ,0x1b , +0x6f ,0xa2 ,0xf1 ,0x04 ,0x9c ,0xfa ,0x98 ,0x02 ,0xca ,0xdf ,0x35 ,0x3c , +0x38 ,0xac ,0xa8 ,0xdb ,0x90 ,0xae ,0xaa ,0xf9 ,0x70 ,0xfb ,0xed ,0xbd , +0xa6 ,0x25 ,0x14 ,0x58 ,0x09 ,0x8a ,0x36 ,0xaf ,0x41 ,0x09 ,0x19 ,0xcb , +0xd3 ,0x25 ,0x5d ,0x0e ,0xe6 ,0x20 ,0x14 ,0x71 ,0x24 ,0x79 ,0x19 ,0x55 , +0xaf ,0x51 ,0x5b ,0xa4 ,0xc0 ,0x93 ,0x9e ,0xdd ,0x88 ,0x31 ,0x13 ,0x96 , +0xbf ,0xca ,0x0a ,0xd7 ,0xbc ,0xc4 ,0x00 ,0xa1 ,0x10 ,0x2d ,0x92 ,0x79 , +0xf9 ,0x14 ,0xdb ,0xd2 ,0xba ,0x74 ,0xfa ,0xa8 ,0xe5 ,0x40 ,0x14 ,0xc2 , +0x56 ,0x3c ,0x7f ,0x50 ,0x07 ,0x60 ,0x86 ,0x93 ,0x51 ,0x2e ,0xf9 ,0x70 , +0x61 ,0x70 ,0x0e ,0xa4 ,0x87 ,0x75 ,0xcc ,0x6c ,0x72 ,0xb7 ,0x68 ,0x23 , +0xb7 ,0x3d ,0x76 ,0xaf ,0x96 ,0x9b ,0x4a ,0xe5 ,0x12 ,0x28 ,0x4a ,0x8f , +0x79 ,0x34 ,0xff ,0xec ,0x92 ,0xeb ,0x6b ,0xaf ,0xc9 ,0xbd ,0xc1 ,0x77 , +0x07 ,0xd0 ,0xfa ,0x55 ,0x57 ,0x10 ,0x0c ,0xad ,0x29 ,0x2a ,0x79 ,0xd6 , +0x09 ,0x9e ,0x7d ,0x18 ,0xd4 ,0xd6 ,0xdd ,0x72 ,0x1a ,0x8f ,0x24 ,0x11 , +0x70 ,0xd2 ,0x52 ,0x36 ,0x0f ,0x38 ,0x79 ,0x38 ,0x4a ,0x02 ,0x4f ,0x73 , +0x2a ,0xaa ,0x6a ,0xb5 ,0x0c ,0x72 ,0x32 ,0x85 ,0x21 ,0x76 ,0x1a ,0x8a , +0x7d ,0x51 ,0x0e ,0xf1 ,0xf9 ,0x19 ,0xfa ,0x6b ,0x9b ,0x22 ,0x71 ,0x8c , +0x13 ,0xcc ,0xba ,0x7d ,0xee ,0xd8 ,0x34 ,0xf6 ,0x85 ,0x60 ,0xe1 ,0xe4 , +0x59 ,0x6e ,0x32 ,0x60 ,0xd9 ,0xfa ,0xb7 ,0x56 ,0x54 ,0x25 ,0xd1 ,0x73 , +0x6a ,0xf2 ,0xa0 ,0xc7 ,0xa0 ,0x67 ,0x10 ,0x89 ,0x9c ,0x27 ,0x5f ,0x7f , +0x2e ,0x5a ,0x29 ,0x70 ,0x7a ,0x7b ,0xaf ,0x21 ,0xd0 ,0xf4 ,0x06 ,0xb9 , +0x2d ,0xf1 ,0xb8 ,0x32 ,0xed ,0xc5 ,0xc9 ,0xac ,0x2f ,0x54 ,0x0a ,0xf9 , +0x08 ,0x39 ,0x39 ,0x7d ,0x1d ,0xaf ,0xb4 ,0x5f ,0x4d ,0x75 ,0xc3 ,0xe8 , +0x52 ,0x3a ,0x47 ,0x72 ,0x2c ,0xa9 ,0x2d ,0xcb ,0x74 ,0x06 ,0xfe ,0x69 , +0xd3 ,0xf3 ,0x1a ,0xb2 ,0xd3 ,0x01 ,0xed ,0x6c ,0xc1 ,0xca ,0x4f ,0xaf , +0x11 ,0x9b ,0xa2 ,0x27 ,0x2a ,0x59 ,0x56 ,0x58 ,0xdf ,0x79 ,0x8b ,0xc9 , +0x87 ,0xe9 ,0x58 ,0x81 ,0x48 ,0xc6 ,0xb6 ,0x7d ,0x60 ,0x54 ,0x87 ,0x9c , +0x61 ,0xbb ,0x4b ,0xbb ,0x61 ,0xac ,0x0a ,0x5a ,0x66 ,0x7e ,0x70 ,0x8b , +0xfd ,0x92 ,0x76 ,0x4a ,0xa9 ,0xa5 ,0xc3 ,0xf4 ,0xf2 ,0x93 ,0x48 ,0xc4 , +0xf3 ,0x91 ,0x2b ,0x60 ,0x04 ,0x0e ,0xb0 ,0x6b ,0x60 ,0x5e ,0xf0 ,0xf1 , +0x54 ,0x41 ,0x56 ,0xdc ,0x25 ,0x57 ,0xc3 ,0xb6 ,0x0b ,0x5e ,0x15 ,0xb5 , +0x2a ,0x36 ,0x4f ,0xe7 ,0x1d ,0x70 ,0xa8 ,0xa7 ,0xec ,0xd6 ,0x74 ,0xba , +0xa4 ,0x79 ,0x83 ,0x7c ,0x9e ,0x1a ,0x5d ,0x32 ,0xc8 ,0xcb ,0x41 ,0xca , +0x04 ,0xec ,0x0b ,0x18 ,0x54 ,0xe1 ,0x67 ,0xbf ,0xa8 ,0x7a ,0xc3 ,0x0f , +0x27 ,0x2a ,0xaf ,0x2a ,0x41 ,0x19 ,0x1f ,0xe8 ,0xa2 ,0xe8 ,0xfa ,0xfc , +0x88 ,0x41 ,0x46 ,0xc3 ,0x1c ,0x44 ,0xe5 ,0xee ,0x47 ,0xec ,0xfe ,0xbf , +0xb8 ,0x29 ,0x2e ,0xae ,0x47 ,0x0a ,0x42 ,0x69 ,0x8a ,0x9a ,0x94 ,0x97 , +0x9e ,0xf5 ,0xb6 ,0x37 ,0x1c ,0x10 ,0xc2 ,0x99 ,0xa8 ,0xe9 ,0x9e ,0x0e , +0x6e ,0xb5 ,0xbe ,0xba ,0x1f ,0x77 ,0xa6 ,0x35 ,0x02 ,0x1e ,0x8c ,0xe6 , +0x02 ,0x53 ,0xe2 ,0x9a ,0xdd ,0x09 ,0x6e ,0x9b ,0x7a ,0x36 ,0x4f ,0x38 , +0x8d ,0x4c ,0xa4 ,0xb4 ,0xff ,0x90 ,0x76 ,0x0d ,0x11 ,0x7d ,0xe1 ,0xe9 , +0x7f ,0x2a ,0x4a ,0x80 ,0xe0 ,0xd8 ,0x3c ,0x23 ,0xd2 ,0xa5 ,0xe5 ,0x39 , +0x77 ,0xbf ,0x3d ,0x71 ,0x0d ,0x45 ,0xbb ,0x39 ,0x66 ,0x1a ,0x4d ,0x59 , +0xb7 ,0xd0 ,0x0a ,0xee ,0x87 ,0xee ,0x1f ,0xcf ,0x6f ,0xc2 ,0x50 ,0xb1 , +0xa5 ,0x4c ,0xee ,0x40 ,0x69 ,0xd7 ,0x36 ,0x38 ,0x14 ,0xcd ,0x6a ,0x9a , +0x90 ,0x40 ,0xad ,0x76 ,0xf1 ,0xa6 ,0xd4 ,0x3c ,0x75 ,0x10 ,0xba ,0xcb , +0xab ,0x22 ,0x28 ,0x5f ,0x0c ,0xe0 ,0xee ,0xf4 ,0xfd ,0x61 ,0x52 ,0x0a , +0x59 ,0xfe ,0x61 ,0xc5 ,0x40 ,0xf9 ,0x91 ,0x8e ,0x36 ,0x29 ,0x63 ,0x6c , +0x6e ,0x45 ,0xa5 ,0x42 ,0xe3 ,0x36 ,0x90 ,0xe7 ,0x90 ,0x9f ,0x58 ,0xbb , +0xf9 ,0x1b ,0xee ,0x2c ,0xbb ,0x3a ,0xfd ,0x3d ,0xbe ,0x3d ,0x45 ,0xf0 , +0xc2 ,0x18 ,0xaa ,0x46 ,0x10 ,0x23 ,0xe9 ,0x63 ,0xba ,0x7f ,0xc2 ,0xe1 , +0xf4 ,0x05 ,0xdd ,0x4a ,0x7c ,0xa8 ,0xab ,0xa9 ,0xbd ,0x6f ,0xdf ,0x48 , +0x59 ,0x11 ,0xd4 ,0xba ,0x75 ,0xb6 ,0x22 ,0xd4 ,0xd7 ,0x35 ,0x6f ,0x27 , +0x70 ,0xc7 ,0x3d ,0x90 ,0x06 ,0x39 ,0x2a ,0x16 ,0xd0 ,0x8b ,0xd7 ,0xfb , +0x5e ,0x85 ,0x2e ,0xb0 ,0xd8 ,0xc7 ,0xdb ,0xe5 ,0x24 ,0x3a ,0x6e ,0xc4 , +0x5e ,0xd4 ,0x22 ,0x25 ,0x14 ,0xee ,0xa5 ,0x30 ,0x8b ,0xd6 ,0x27 ,0x61 , +0x33 ,0x13 ,0x46 ,0x0b ,0x26 ,0x45 ,0xa6 ,0xb4 ,0xfa ,0x8d ,0xa3 ,0xf2 , +0x27 ,0xd2 ,0xc5 ,0x04 ,0xaa ,0x96 ,0xa4 ,0x55 ,0xfa ,0x40 ,0xf1 ,0xfc , +0x66 ,0x33 ,0x9e ,0x4b ,0x39 ,0x75 ,0xae ,0x7f ,0x52 ,0x87 ,0x7b ,0x8a , +0xf9 ,0x7d ,0x5f ,0x8a ,0x7e ,0xf7 ,0xfe ,0xc4 ,0x7f ,0xf4 ,0xf6 ,0x9a , +0x86 ,0x78 ,0x21 ,0x02 ,0x94 ,0x9e ,0x50 ,0x2d ,0xdc ,0xd6 ,0xa5 ,0x53 , +0xf1 ,0xef ,0x06 ,0xe8 ,0xb5 ,0x46 ,0x81 ,0xcc ,0x91 ,0x4f ,0x37 ,0xee , +0x27 ,0xcb ,0x91 ,0xad ,0xff ,0x1d ,0xd1 ,0x00 ,0xa8 ,0x96 ,0x22 ,0xaa , +0x63 ,0x23 ,0x2a ,0x7a ,0x75 ,0x6f ,0xe9 ,0x2d ,0x26 ,0xde ,0x11 ,0x97 , +0x4b ,0x17 ,0x3f ,0xde ,0x51 ,0x1a ,0x22 ,0xed ,0x38 ,0x6f ,0x3e ,0x7a , +0xd0 ,0xd6 ,0x60 ,0x06 ,0x7e ,0x3f ,0xa4 ,0x29 ,0xfa ,0x18 ,0x91 ,0xda , +0x73 ,0x38 ,0xe3 ,0xe3 ,0xb5 ,0xc0 ,0x5b ,0x4e ,0xe8 ,0x94 ,0xea ,0x45 , +0x6e ,0x5b ,0x50 ,0xaa ,0x38 ,0xb6 ,0x6f ,0xdb ,0x90 ,0x1b ,0x3b ,0x82 , +0xbb ,0x0d ,0x38 ,0xe3 ,0xca ,0xd9 ,0xf1 ,0x2e ,0x27 ,0x4c ,0x2c ,0x5a , +0x42 ,0xdf ,0x44 ,0xc8 ,0x07 ,0xe4 ,0x95 ,0xb5 ,0xec ,0x91 ,0x34 ,0x1c , +0x9a ,0x0c ,0x50 ,0x1a ,0xce ,0x67 ,0xe4 ,0x4b ,0x87 ,0x61 ,0x43 ,0x95 , +0x95 ,0xb8 ,0x8a ,0xf4 ,0xc9 ,0x92 ,0x33 ,0x33 ,0xe3 ,0xfe ,0x98 ,0x2a , +0xae ,0x8e ,0xf2 ,0x6b ,0x13 ,0x7c ,0xe4 ,0x44 ,0x40 ,0x66 ,0xea ,0x0c , +0xe4 ,0xdb ,0x16 ,0x65 ,0xa8 ,0x8b ,0x37 ,0x08 ,0xec ,0x1e ,0xfc ,0xa6 , +0xd0 ,0x9b ,0x9e ,0x0a ,0xd2 ,0xe3 ,0xcf ,0x5d ,0xb2 ,0xaf ,0x8e ,0x05 , +0x7d ,0x8d ,0x84 ,0xbc ,0x9f ,0xb1 ,0xe6 ,0x6a ,0x2e ,0x4b ,0x6d ,0x64 , +0x91 ,0x17 ,0x9d ,0xb5 ,0x35 ,0x15 ,0x02 ,0xe9 ,0x1b ,0x85 ,0xc1 ,0x89 , +0xc2 ,0x5a ,0x32 ,0x3a ,0x80 ,0x78 ,0x5e ,0xcc ,0x50 ,0x26 ,0xf5 ,0x11 , +0x01 ,0x79 ,0xf3 ,0xaf ,0xb6 ,0x40 ,0x00 ,0x73 ,0x8f ,0xeb ,0x5a ,0xd1 , +0x26 ,0x00 ,0xe2 ,0xa3 ,0xcd ,0xfd ,0xaa ,0x15 ,0x5b ,0x98 ,0x2a ,0x76 , +0x41 ,0x07 ,0xc2 ,0xde ,0xb6 ,0x71 ,0xe7 ,0xc3 ,0xe9 ,0x92 ,0xb3 ,0xd8 , +0xfe ,0xaf ,0x12 ,0x61 ,0x86 ,0x5b ,0x6e ,0x74 ,0x45 ,0x7b ,0x9b ,0x6f , +0x1a ,0x13 ,0x84 ,0xf6 ,0x31 ,0x5f ,0x5b ,0x6c ,0xde ,0x47 ,0xb8 ,0x73 , +0x32 ,0xc7 ,0x94 ,0x92 ,0xa5 ,0xc3 ,0x65 ,0xdf ,0x96 ,0x6c ,0xfd ,0xb7 , +0x80 ,0xfb ,0x47 ,0xba ,0x6e ,0x43 ,0xb3 ,0x7e ,0x86 ,0xc9 ,0x97 ,0x45 , +0xde ,0x3f ,0x3a ,0xf6 ,0xb0 ,0x9e ,0x9a ,0xcb ,0xfd ,0xf2 ,0x5c ,0xba , +0x6e ,0x3f ,0xed ,0xfa ,0x74 ,0x84 ,0xe2 ,0xb1 ,0xae ,0x66 ,0x57 ,0x0b , +0x96 ,0x6c ,0x77 ,0xe4 ,0x8a ,0x67 ,0x97 ,0xc7 ,0xe0 ,0x44 ,0xb2 ,0x83 , +0x2d ,0x3c ,0x2e ,0x01 ,0x19 ,0x2e ,0x4c ,0x74 ,0xe1 ,0x35 ,0x73 ,0xeb , +0x85 ,0x63 ,0x8c ,0x3a ,0xb8 ,0xbc ,0x25 ,0x6a ,0x8d ,0xaf ,0xd2 ,0xfb , +0xef ,0xd3 ,0x12 ,0x93 ,0x0b ,0x39 ,0xfa ,0x66 ,0xbe ,0x3b ,0xfd ,0x6c , +0x0b ,0xbb ,0xb2 ,0x5a ,0x78 ,0xa1 ,0xcf ,0x8c ,0x7d ,0x60 ,0x55 ,0xeb , +0x33 ,0x4e ,0x8e ,0xf9 ,0x19 ,0x4d ,0x42 ,0xd4 ,0xf8 ,0xd8 ,0xba ,0xad , +0x0a ,0x6e ,0x62 ,0xd4 ,0xe1 ,0x6a ,0xcc ,0xea ,0x09 ,0x91 ,0x8e ,0x62 , +0xc9 ,0x1e ,0x9e ,0x48 ,0xaa ,0xde ,0xf7 ,0xa2 ,0x5a ,0xcb ,0x83 ,0x20 , +0xe8 ,0xf5 ,0xd1 ,0xfe ,0x9d ,0x18 ,0x2f ,0xd6 ,0xf8 ,0x97 ,0x17 ,0xce , +0xc2 ,0x05 ,0x08 ,0xef ,0x61 ,0x70 ,0x9d ,0x95 ,0x79 ,0x59 ,0x4c ,0x06 , +0x24 ,0x3d ,0x24 ,0x69 ,0xff ,0x46 ,0xda ,0xbc ,0x71 ,0x7a ,0x74 ,0x93 , +0x58 ,0xf5 ,0xc8 ,0x91 ,0xfb ,0x66 ,0xed ,0x78 ,0x8f ,0xf8 ,0x28 ,0xa8 , +0x1d ,0xa5 ,0x3a ,0x13 ,0x76 ,0xc2 ,0xcc ,0xba ,0xb9 ,0x56 ,0x29 ,0x74 , +0xd6 ,0x14 ,0x75 ,0x58 ,0xe6 ,0x2e ,0x79 ,0x6e ,0x9d ,0x41 ,0x94 ,0x8a , +0xcf ,0xf1 ,0xb1 ,0xe0 ,0x36 ,0xe5 ,0x89 ,0x9a ,0x95 ,0xa1 ,0x11 ,0xd1 , +0xbe ,0x45 ,0xe4 ,0xb3 ,0xb0 ,0x62 ,0x32 ,0x1d ,0xba ,0xe0 ,0xde ,0x57 , +0x81 ,0x0e ,0x01 ,0x9b ,0x52 ,0x3d ,0xd5 ,0xde ,0x3b ,0x3a ,0xdd ,0x8f , +0xe3 ,0x2e ,0xce ,0x1e ,0x89 ,0x4d ,0x81 ,0xf0 ,0xf6 ,0x20 ,0x63 ,0x7a , +0x4c ,0xbb ,0x66 ,0xe0 ,0xbe ,0x2b ,0xee ,0xd0 ,0x3b ,0x60 ,0x1e ,0x65 , +0xd1 ,0x2c ,0x7c ,0x5c ,0x6c ,0x16 ,0x5b ,0x90 ,0xc8 ,0x05 ,0x10 ,0xf2 , +0xde ,0x33 ,0x90 ,0x35 ,0x69 ,0x24 ,0x3f ,0xc1 ,0x8f ,0x1e ,0x4a ,0x60 , +0xf1 ,0x03 ,0x65 ,0x46 ,0x40 ,0x76 ,0xe9 ,0x83 ,0x97 ,0xda ,0x0b ,0xb8 , +0x22 ,0xfa ,0x55 ,0x99 ,0xfd ,0x18 ,0x24 ,0xd2 ,0x66 ,0xb0 ,0x7b ,0x70 , +0x56 ,0x93 ,0xad ,0x09 ,0x95 ,0x8e ,0x1f ,0x2f ,0xe8 ,0x12 ,0x55 ,0xd4 , +0x1f ,0xde ,0x09 ,0x85 ,0x05 ,0xd1 ,0xd5 ,0x10 ,0x2c ,0x8c ,0x6b ,0x53 , +0x28 ,0xce ,0x06 ,0xc5 ,0x52 ,0x0f ,0xfa ,0x09 ,0x09 ,0x23 ,0x1b ,0xe3 , +0xbf ,0xb1 ,0x89 ,0x72 ,0x26 ,0x0d ,0xa6 ,0xbb ,0x7d ,0x9e ,0xdc ,0xf8 , +0xf5 ,0x0b ,0x8c ,0xe0 ,0xbc ,0x97 ,0x3b ,0x72 ,0xdd ,0xf5 ,0x9d ,0xc5 , +0xb6 ,0x37 ,0x2c ,0x76 ,0x5b ,0x58 ,0x67 ,0xdb ,0xed ,0x3b ,0x6e ,0xe5 , +0xe5 ,0x6d ,0x6f ,0x0d ,0x7e ,0xff ,0xa9 ,0x57 ,0x4a ,0x84 ,0x85 ,0x82 , +0xac ,0x00 ,0x50 ,0xa3 ,0x4f ,0x87 ,0xfe ,0x2a ,0x40 ,0x52 ,0x54 ,0x81 , +0x69 ,0x42 ,0x0b ,0x0c ,0xd7 ,0x18 ,0x98 ,0x01 ,0x8c ,0x5a ,0xa2 ,0xf4 , +0xe8 ,0x61 ,0xd1 ,0x38 ,0xfd ,0x0f ,0x63 ,0x75 ,0xd3 ,0x4b ,0x1d ,0xdc , +0xdf ,0xb2 ,0xeb ,0x94 ,0x97 ,0x5c ,0x2a ,0xb4 ,0x12 ,0x5c ,0x49 ,0x2b , +0xfc ,0xd0 ,0x8d ,0xfb ,0xe7 ,0xb3 ,0xcb ,0x0f ,0x3c ,0x2e ,0x04 ,0x36 , +0xa8 ,0x03 ,0xc9 ,0xd7 ,0x11 ,0x2d ,0x2a ,0x93 ,0xff ,0xda ,0x26 ,0xb0 , +0x54 ,0x7e ,0xaf ,0x30 ,0x7d ,0xce ,0x46 ,0x8a ,0x3d ,0x7c ,0xa4 ,0x7a , +0x2c ,0xfa ,0xba ,0xa1 ,0xc9 ,0x41 ,0xd3 ,0xb8 ,0x84 ,0x03 ,0x78 ,0xdd , +0xe9 ,0x57 ,0x19 ,0x62 ,0x62 ,0xff ,0x5b ,0x3b ,0x48 ,0x62 ,0x0e ,0xee , +0x19 ,0xb0 ,0x32 ,0x6e ,0x6a ,0x07 ,0xd8 ,0x4e ,0x25 ,0x76 ,0xa7 ,0xe3 , +0x98 ,0xa1 ,0x6f ,0xb6 ,0x99 ,0x32 ,0x67 ,0x7d ,0x46 ,0x42 ,0x4a ,0x82 , +0xd1 ,0x29 ,0x1b ,0x87 ,0xeb ,0x4b ,0x9e ,0xdf ,0x69 ,0x75 ,0xbd ,0x4f , +0xd3 ,0xde ,0xc9 ,0x83 ,0xe6 ,0xd6 ,0xea ,0x03 ,0x81 ,0x12 ,0xf3 ,0x5d , +0x99 ,0xf1 ,0xb1 ,0xd9 ,0x3e ,0xbe ,0xf3 ,0xa8 ,0xdc ,0xb6 ,0xf8 ,0x4b , +0x9e ,0x26 ,0x3f ,0xf0 ,0x7c ,0xb3 ,0xf4 ,0xca ,0x00 ,0x6c ,0x6c ,0xe5 , +0x43 ,0xa1 ,0xfd ,0x3a ,0xf8 ,0x8e ,0xe3 ,0x9f ,0x88 ,0xc5 ,0x44 ,0xfd , +0x24 ,0x69 ,0x76 ,0xd5 ,0xcb ,0xdc ,0x9d ,0x12 ,0xf3 ,0x13 ,0x7e ,0xe7 , +0xc3 ,0xa8 ,0x6a ,0xb2 ,0xe0 ,0xb3 ,0x1d ,0xab ,0x3b ,0xc9 ,0x77 ,0x3d , +0x0f ,0xc3 ,0xbe ,0x4b ,0x8b ,0x28 ,0xbd ,0x7c ,0xe6 ,0xb2 ,0x06 ,0x1f , +0xf9 ,0x8f ,0x16 ,0x62 ,0xbf ,0xc7 ,0x55 ,0x73 ,0xd4 ,0xf1 ,0x5a ,0x95 , +0x80 ,0xa3 ,0x4e ,0xaa ,0x60 ,0x17 ,0x3c ,0xc9 ,0x5e ,0xd4 ,0x0c ,0x56 , +0x7a ,0x77 ,0x8e ,0x7f ,0x67 ,0x08 ,0x2f ,0xd9 ,0x21 ,0x19 ,0xfd ,0x86 , +0x8c ,0x23 ,0x8d ,0xf6 ,0x92 ,0x1f ,0x36 ,0x2c ,0x7c ,0x83 ,0xbd ,0x2f , +0x6c ,0x63 ,0x7c ,0xb7 ,0x93 ,0x74 ,0x1b ,0xc2 ,0x95 ,0x34 ,0x26 ,0x1e , +0x07 ,0x87 ,0x3a ,0xb6 ,0xe2 ,0x39 ,0x71 ,0x9b ,0x20 ,0xcd ,0x63 ,0xf0 , +0xbf ,0x48 ,0xb5 ,0x0e ,0x49 ,0x86 ,0x50 ,0x80 ,0xbd ,0xd6 ,0x0e ,0xab , +0xd5 ,0x69 ,0x1b ,0xa4 ,0xb3 ,0x63 ,0x3c ,0x8f ,0xcb ,0x42 ,0xdb ,0xd7 , +0x1a ,0xf4 ,0xdf ,0x9e ,0x25 ,0xfc ,0xd4 ,0x00 ,0xcb ,0xec ,0x57 ,0x69 , +0x30 ,0x15 ,0x4d ,0x7a ,0x69 ,0x28 ,0x2f ,0x2b ,0x34 ,0x26 ,0xd1 ,0xe7 , +0x01 ,0x42 ,0x5e ,0x02 ,0xe2 ,0x75 ,0xe8 ,0x52 ,0x8a ,0xb4 ,0x71 ,0xfa , +0xc3 ,0x3d ,0xe6 ,0xac ,0xeb ,0xf3 ,0x93 ,0xe0 ,0x37 ,0xcd ,0x66 ,0x92 , +0x66 ,0x2c ,0xfe ,0x4b ,0xd6 ,0x3c ,0xf1 ,0x57 ,0xe5 ,0xcf ,0xf5 ,0xd0 , +0xdb ,0x0e ,0x1f ,0x82 ,0x65 ,0x3b ,0xab ,0x69 ,0x42 ,0x53 ,0x7d ,0xa4 , +0x7c ,0xb7 ,0x86 ,0xeb ,0x23 ,0x45 ,0xa8 ,0x4a ,0x73 ,0xfc ,0x38 ,0xc6 , +0xe5 ,0x2c ,0xab ,0x80 ,0xfb ,0x23 ,0xb2 ,0x0c ,0x53 ,0x28 ,0x21 ,0x37 , +0x54 ,0x9c ,0x72 ,0x51 ,0x0f ,0x44 ,0x50 ,0xd3 ,0xe1 ,0xd5 ,0xb2 ,0x27 , +0x83 ,0xb6 ,0xe9 ,0x4d ,0x64 ,0x5c ,0x17 ,0x0f ,0xe0 ,0x13 ,0xe4 ,0x26 , +0x6b ,0xd0 ,0xd8 ,0x25 ,0xe3 ,0x69 ,0x6a ,0x95 ,0x3f ,0x4a ,0x4e ,0xa0 , +0x58 ,0xbc ,0x28 ,0x47 ,0x8b ,0x68 ,0xe4 ,0x41 ,0x90 ,0x46 ,0x1b ,0x84 , +0xa0 ,0x7b ,0x46 ,0x46 ,0x03 ,0xee ,0x21 ,0x0d ,0x34 ,0xed ,0xff ,0x15 , +0x57 ,0x06 ,0xdf ,0x71 ,0x09 ,0xb2 ,0x66 ,0x0d ,0x6e ,0xcc ,0xa5 ,0x0c , +0xaf ,0x3f ,0x24 ,0x8f ,0xd1 ,0xc8 ,0x44 ,0x86 ,0xaf ,0xbf ,0xeb ,0x2f , +0xb9 ,0xee ,0xa7 ,0xcf ,0xe4 ,0xe8 ,0xec ,0x47 ,0x09 ,0xd8 ,0x95 ,0x9e , +0x3c ,0xda ,0x92 ,0x41 ,0x61 ,0xf5 ,0xc3 ,0xec ,0x00 ,0xe4 ,0xa3 ,0x0d , +0x4a ,0xb3 ,0xf6 ,0x82 ,0x05 ,0x38 ,0x70 ,0x6a ,0xd1 ,0x28 ,0x2c ,0xb3 , +0xc6 ,0xbb ,0x38 ,0xb3 ,0x06 ,0x7f ,0xd6 ,0x4c ,0xe7 ,0xfb ,0xef ,0x0d , +0x52 ,0x66 ,0xbe ,0xd8 ,0xa6 ,0x6f ,0xe8 ,0xd9 ,0x42 ,0x4f ,0xad ,0xe8 , +0xe8 ,0x6c ,0xf9 ,0xe9 ,0x42 ,0xd9 ,0x66 ,0x6e ,0xec ,0xfe ,0xf5 ,0x91 , +0xbf ,0x0a ,0x98 ,0xd8 ,0x7b ,0x23 ,0x12 ,0xa6 ,0x04 ,0xa8 ,0xb3 ,0x61 , +0x13 ,0x65 ,0xc0 ,0xe2 ,0x82 ,0xb9 ,0xb2 ,0x38 ,0x07 ,0x06 ,0xca ,0x64 , +0x6c ,0x23 ,0x93 ,0x60 ,0x1d ,0x4d ,0x38 ,0x5e ,0x8e ,0x90 ,0x16 ,0x4a , +0xfd ,0xb3 ,0xcd ,0x84 ,0x9c ,0xa5 ,0xfa ,0x73 ,0x2d ,0xcb ,0x87 ,0x31 , +0x3d ,0xf8 ,0xfc ,0xeb ,0xa7 ,0x56 ,0x2f ,0x5b ,0x95 ,0x9a ,0xc6 ,0x82 , +0x29 ,0x86 ,0x47 ,0xe2 ,0xc2 ,0x84 ,0x01 ,0xaf ,0xc8 ,0x0b ,0x2d ,0xfb , +0x34 ,0xba ,0x5d ,0x9d ,0xd1 ,0x85 ,0xd5 ,0x1e ,0x63 ,0xcb ,0x3c ,0xa8 , +0xfa ,0x79 ,0xef ,0x12 ,0xa6 ,0xb5 ,0xdb ,0xc5 ,0x1d ,0x6a ,0xa7 ,0x54 , +0x58 ,0x0c ,0xbe ,0x61 ,0xe5 ,0x96 ,0x7f ,0x4a ,0x3b ,0x59 ,0x32 ,0x2d , +0x06 ,0x44 ,0x83 ,0x5c ,0xad ,0xe9 ,0xfe ,0x7c ,0xd7 ,0x5b ,0x34 ,0xa1 , +0xa3 ,0xad ,0x9a ,0xbf ,0xd5 ,0x30 ,0xf0 ,0x22 ,0xfc ,0x94 ,0x7f ,0xd4 , +0xa4 ,0xca ,0x88 ,0x31 ,0xe7 ,0xf2 ,0x89 ,0x2d ,0xda ,0xe6 ,0x91 ,0xa6 , +0x27 ,0x22 ,0x74 ,0x9f ,0xc6 ,0x72 ,0x4f ,0xf6 ,0xa9 ,0xfe ,0x7a ,0xf0 , +0xa8 ,0x6b ,0x6c ,0x9f ,0xe9 ,0x2a ,0x9b ,0x23 ,0x9e ,0xb8 ,0x2b ,0x29 , +0x65 ,0xa7 ,0x5d ,0xbd ,0x10 ,0xe4 ,0x56 ,0x02 ,0x94 ,0xdd ,0xd1 ,0xab , +0x9b ,0x82 ,0x2d ,0x8d ,0xf6 ,0xd3 ,0x65 ,0x63 ,0x4a ,0xc4 ,0x86 ,0x61 , +0x37 ,0x9f ,0xdb ,0x4b ,0x34 ,0x20 ,0x0a ,0xca ,0x45 ,0x6c ,0x06 ,0xc4 , +0x9c ,0x74 ,0x4d ,0x83 ,0x6a ,0x8d ,0xad ,0xc6 ,0x61 ,0x3a ,0x8d ,0xde , +0x6c ,0xf9 ,0x8e ,0x33 ,0xa2 ,0xee ,0x99 ,0xc7 ,0xe4 ,0x52 ,0xb2 ,0x44 , +0x6f ,0x2f ,0x0f ,0x41 ,0xa9 ,0x1a ,0xd3 ,0x96 ,0x42 ,0xc6 ,0x49 ,0x12 , +0x6a ,0xf0 ,0x29 ,0xa9 ,0x0c ,0x9c ,0x50 ,0x5d ,0x1d ,0xd1 ,0x42 ,0x7e , +0x6f ,0x36 ,0x48 ,0x0f ,0x58 ,0x14 ,0x94 ,0xc0 ,0x10 ,0x1e ,0xe0 ,0xb2 , +0xdd ,0xba ,0x57 ,0x91 ,0x4d ,0xd5 ,0xdc ,0xa6 ,0x4c ,0x68 ,0x00 ,0x6c , +0xb3 ,0x5d ,0x32 ,0x13 ,0xbe ,0xa8 ,0xc3 ,0xfb ,0xd4 ,0x19 ,0x40 ,0xf5 , +0x6f ,0x63 ,0xa1 ,0x07 ,0xbf ,0xa2 ,0x8b ,0xfc ,0xfe ,0xf8 ,0xa1 ,0x33 , +0x70 ,0x07 ,0x6d ,0xc5 ,0x72 ,0xa0 ,0x39 ,0xd6 ,0xd7 ,0x76 ,0x6c ,0xfa , +0x1f ,0x04 ,0xd6 ,0x23 ,0xbf ,0x66 ,0x78 ,0x92 ,0x00 ,0x11 ,0x8a ,0x75 , +0x67 ,0x44 ,0xa6 ,0x7c ,0xd0 ,0x14 ,0xe6 ,0xd0 ,0x31 ,0x6d ,0xdb ,0xc5 , +0xb1 ,0xa7 ,0x99 ,0xc3 ,0xaf ,0x18 ,0x7a ,0x26 ,0x46 ,0xad ,0x6d ,0x0c , +0xb6 ,0xb5 ,0xad ,0xc1 ,0xcf ,0x60 ,0x99 ,0xf5 ,0x9f ,0x88 ,0xaf ,0x0e , +0x37 ,0x15 ,0xf9 ,0x2b ,0x1a ,0x5f ,0xfb ,0xc9 ,0xf8 ,0xd4 ,0xf0 ,0x97 , +0xd2 ,0x91 ,0xf4 ,0x94 ,0xa2 ,0xd3 ,0x3b ,0x8b ,0x0c ,0x22 ,0xa0 ,0xac , +0xb3 ,0xb5 ,0xdf ,0xf2 ,0x27 ,0x38 ,0x47 ,0x53 ,0x5b ,0x6e ,0x8f ,0x98 , +0x9e ,0xad ,0xb6 ,0xf5 ,0x0e ,0x17 ,0x20 ,0x35 ,0x54 ,0x6b ,0x73 ,0xa6 , +0x64 ,0x65 ,0xac ,0xb8 ,0xc1 ,0xd3 ,0xf7 ,0x07 ,0x82 ,0x93 ,0x9d ,0xcb , +0xcc ,0xe9 ,0x0c ,0x51 ,0x52 ,0x85 ,0x8b ,0x95 ,0xa6 ,0xb1 ,0xce ,0xdc , +0xfa ,0x00 ,0x00 ,0x08 ,0x14 ,0x1c ,0x23 ,0x2a ,0x35 , +}; + +static const u8 fips_test_mldsa65_public_key[]__initconst __maybe_unused = { +0x9f ,0x55 ,0x1e ,0x7f ,0x9c ,0x08 ,0xb2 ,0x83 ,0xfd ,0x5b ,0xa2 ,0xac , +0x4f ,0x26 ,0xc2 ,0xf5 ,0x06 ,0x05 ,0x96 ,0x08 ,0x24 ,0xad ,0xec ,0xe4 , +0x99 ,0xcc ,0x6c ,0xbd ,0x55 ,0x37 ,0x15 ,0x94 ,0xab ,0x31 ,0x9e ,0x56 , +0xe5 ,0xe4 ,0x55 ,0xec ,0x4d ,0x49 ,0x5b ,0x5a ,0x7a ,0xe8 ,0xc3 ,0x4a , +0x08 ,0x44 ,0x4a ,0xc2 ,0x2d ,0xe4 ,0x61 ,0x33 ,0x90 ,0x20 ,0x71 ,0x45 , +0xa5 ,0x45 ,0xd0 ,0x83 ,0x2b ,0x32 ,0x6c ,0xa7 ,0x9e ,0x76 ,0xcd ,0xfb , +0x58 ,0x15 ,0x9e ,0x74 ,0x0d ,0x67 ,0x57 ,0xb1 ,0x06 ,0x5b ,0x5d ,0xd5 , +0x1c ,0xbb ,0x95 ,0x40 ,0x1c ,0x71 ,0x31 ,0x03 ,0xef ,0xff ,0x04 ,0x6b , +0xdd ,0xa2 ,0xf0 ,0x32 ,0x00 ,0x72 ,0xbc ,0x87 ,0xb6 ,0x2c ,0x1f ,0x90 , +0x7f ,0x92 ,0xa0 ,0xb2 ,0x04 ,0xdd ,0xa9 ,0xaf ,0x7f ,0x01 ,0x28 ,0x4c , +0xb2 ,0x57 ,0x2d ,0x56 ,0x93 ,0xd0 ,0xc7 ,0x54 ,0x02 ,0x90 ,0x57 ,0x70 , +0x23 ,0x57 ,0xe8 ,0xe7 ,0x33 ,0x32 ,0x98 ,0xfc ,0x9b ,0x8e ,0x6e ,0x7b , +0xaa ,0x5d ,0xb5 ,0x4e ,0xe0 ,0x5d ,0x97 ,0xa3 ,0xea ,0x43 ,0x7e ,0xb3 , +0xa4 ,0x8c ,0xcf ,0xdc ,0xc0 ,0x51 ,0xa7 ,0x99 ,0x45 ,0x3d ,0x3c ,0xa0 , +0xba ,0xc5 ,0xff ,0xe1 ,0x89 ,0xb3 ,0x7d ,0xc3 ,0xdc ,0xe2 ,0x23 ,0x81 , +0xff ,0xa9 ,0xc7 ,0x93 ,0xc6 ,0x67 ,0xad ,0x94 ,0xcf ,0xeb ,0x91 ,0x78 , +0x15 ,0x25 ,0xf7 ,0xf5 ,0x06 ,0x08 ,0x2f ,0x0c ,0xee ,0x0b ,0x6a ,0x06 , +0x59 ,0xe0 ,0x1f ,0x2e ,0x5a ,0x12 ,0x06 ,0xf5 ,0xf4 ,0x8e ,0x75 ,0x57 , +0xa9 ,0x33 ,0x23 ,0x0f ,0xc2 ,0x6f ,0x02 ,0xf8 ,0x68 ,0x0f ,0x62 ,0x02 , +0x81 ,0xfe ,0x03 ,0x7c ,0xaf ,0xd7 ,0x42 ,0x5b ,0xcc ,0xe7 ,0x2b ,0xea , +0x49 ,0xab ,0x03 ,0x6d ,0x0a ,0x02 ,0xae ,0x47 ,0x79 ,0xce ,0xfd ,0x18 , +0x76 ,0x07 ,0x9e ,0xa6 ,0xbf ,0x7e ,0x8d ,0x73 ,0xf9 ,0x44 ,0xeb ,0x8c , +0xc5 ,0x59 ,0xb7 ,0x19 ,0xf6 ,0x73 ,0x53 ,0x42 ,0x2a ,0x55 ,0x7b ,0xb4 , +0x56 ,0x49 ,0x08 ,0x9e ,0x9a ,0x65 ,0x60 ,0x70 ,0x1d ,0xbd ,0xc6 ,0x85 , +0x29 ,0xde ,0xfe ,0x44 ,0xae ,0xdf ,0x25 ,0xfd ,0x5b ,0x74 ,0x6c ,0x96 , +0xe6 ,0x81 ,0x37 ,0x80 ,0xe0 ,0x9e ,0xf3 ,0x75 ,0x63 ,0xb4 ,0xc9 ,0x2f , +0x71 ,0xe6 ,0xeb ,0xdf ,0xaf ,0x7e ,0xff ,0x9e ,0xe0 ,0xbf ,0xca ,0xca , +0x11 ,0xed ,0xc6 ,0x04 ,0xd8 ,0x49 ,0x13 ,0x2c ,0x63 ,0xf1 ,0xb3 ,0x17 , +0x74 ,0xd9 ,0x50 ,0x3f ,0xb9 ,0x29 ,0x0e ,0x48 ,0xa7 ,0xf0 ,0xdc ,0x78 , +0x18 ,0x0e ,0x9f ,0xb7 ,0xde ,0x36 ,0x79 ,0x67 ,0xa4 ,0x23 ,0x08 ,0xe7 , +0x62 ,0xe8 ,0xa4 ,0xe5 ,0xcf ,0xff ,0x35 ,0x55 ,0x36 ,0x2e ,0x3a ,0xe4 , +0x45 ,0x6a ,0x80 ,0xf2 ,0xca ,0xe7 ,0x40 ,0x79 ,0x14 ,0xc4 ,0x62 ,0x38 , +0xbb ,0xd0 ,0x4e ,0x6c ,0xb5 ,0x85 ,0x42 ,0x3f ,0x35 ,0xf7 ,0xd7 ,0x54 , +0xb8 ,0x2b ,0x8b ,0xd5 ,0x6f ,0x16 ,0x61 ,0x27 ,0x23 ,0xac ,0xdb ,0xea , +0x9b ,0x3b ,0x99 ,0xcd ,0x79 ,0xe6 ,0x12 ,0x09 ,0x99 ,0x09 ,0xa4 ,0xe1 , +0x88 ,0x25 ,0x00 ,0x9e ,0x60 ,0x16 ,0x63 ,0xd7 ,0x42 ,0x9b ,0xcc ,0x36 , +0x9a ,0x8d ,0xa3 ,0x75 ,0x36 ,0xa1 ,0xa8 ,0xfc ,0xa2 ,0xfe ,0x29 ,0x26 , +0x4c ,0x93 ,0x21 ,0x44 ,0x6b ,0x1c ,0xba ,0xbd ,0xef ,0xff ,0x6d ,0x1f , +0x2b ,0x6c ,0x66 ,0x81 ,0x9a ,0x3a ,0x1d ,0x0b ,0xd7 ,0x24 ,0xd4 ,0xb8 , +0x93 ,0xb5 ,0x22 ,0xf9 ,0xd2 ,0xf4 ,0xa5 ,0x05 ,0x78 ,0x38 ,0xae ,0x58 , +0xf6 ,0x50 ,0x8f ,0x47 ,0x1d ,0xf3 ,0xfb ,0x0d ,0x04 ,0x14 ,0xd1 ,0xd6 , +0xd8 ,0x2e ,0xf2 ,0xbd ,0xf5 ,0x71 ,0x86 ,0x4c ,0xdd ,0x61 ,0x24 ,0x18 , +0x5b ,0x54 ,0xf5 ,0xcd ,0x99 ,0x89 ,0x01 ,0x8e ,0xd1 ,0x19 ,0x52 ,0xbc , +0x45 ,0xed ,0x0e ,0xec ,0x72 ,0x2f ,0x5a ,0xe7 ,0xdf ,0x36 ,0x1c ,0x57 , +0x9f ,0xb2 ,0x8b ,0xf2 ,0x78 ,0x1b ,0x3e ,0xc5 ,0x48 ,0x1f ,0x27 ,0x04 , +0x76 ,0x10 ,0x44 ,0xee ,0x5c ,0x68 ,0x8f ,0xca ,0xd7 ,0x31 ,0xfc ,0x5c , +0x40 ,0x03 ,0x2e ,0xbd ,0x1d ,0x59 ,0x13 ,0x57 ,0xbc ,0x33 ,0xc6 ,0xa1 , +0xa3 ,0xe5 ,0x55 ,0x79 ,0x9b ,0x7e ,0x49 ,0xbb ,0x23 ,0x96 ,0xc3 ,0x1c , +0xfe ,0x66 ,0xeb ,0x5b ,0x5f ,0xe5 ,0x03 ,0xc9 ,0xa4 ,0xac ,0x4d ,0xc4 , +0x50 ,0xbb ,0xd3 ,0xc1 ,0x91 ,0x48 ,0xe0 ,0x93 ,0x92 ,0x2a ,0xdb ,0x41 , +0x37 ,0x98 ,0xbc ,0xa2 ,0x7a ,0x09 ,0x92 ,0x0b ,0x1c ,0xe6 ,0x4b ,0x1e , +0x8e ,0x78 ,0x81 ,0x74 ,0x7d ,0x6b ,0x71 ,0xd5 ,0xe7 ,0x0e ,0x7b ,0xc2 , +0x74 ,0x5d ,0x89 ,0xf1 ,0xfa ,0x59 ,0xaa ,0xf7 ,0x86 ,0x66 ,0x7e ,0xc2 , +0x9c ,0xf4 ,0xd5 ,0x8d ,0xc0 ,0xb7 ,0xb7 ,0xa2 ,0xd5 ,0xcd ,0x51 ,0xc3 , +0x7d ,0xa9 ,0x5e ,0x46 ,0xba ,0x06 ,0xa3 ,0x4d ,0x60 ,0xd6 ,0x68 ,0xc6 , +0xf9 ,0x63 ,0x88 ,0x17 ,0x5c ,0x20 ,0xe1 ,0xc4 ,0x0f ,0x3f ,0xc1 ,0xa9 , +0xa7 ,0x3e ,0x39 ,0xef ,0x2f ,0xaf ,0xc4 ,0x69 ,0x29 ,0xe3 ,0xd4 ,0x8d , +0xe0 ,0x0e ,0x88 ,0xc2 ,0x93 ,0x43 ,0xfb ,0x28 ,0xcf ,0x5d ,0x85 ,0x50 , +0xf7 ,0xeb ,0x42 ,0xf5 ,0x87 ,0xde ,0xa5 ,0x65 ,0xef ,0x43 ,0x0c ,0x57 , +0x76 ,0x09 ,0xf4 ,0x5f ,0xde ,0x81 ,0x0a ,0xd9 ,0x59 ,0x41 ,0xa4 ,0x6a , +0xb7 ,0x05 ,0xc7 ,0xa5 ,0xfe ,0x49 ,0xd5 ,0x9b ,0x57 ,0x13 ,0x14 ,0x66 , +0xe2 ,0xb9 ,0xcc ,0x09 ,0x35 ,0xd4 ,0xb0 ,0xe0 ,0xd1 ,0x0d ,0x7e ,0x50 , +0x48 ,0x45 ,0x21 ,0x00 ,0x67 ,0xb2 ,0xad ,0xa7 ,0x46 ,0xe2 ,0x6f ,0x70 , +0xe5 ,0x3c ,0x88 ,0x04 ,0xaa ,0x21 ,0xde ,0x03 ,0xb6 ,0x6f ,0xfe ,0x43 , +0x51 ,0xdc ,0x2e ,0x5c ,0x6c ,0x77 ,0x8f ,0x8e ,0x9d ,0x1a ,0x5b ,0x35 , +0xc5 ,0xe4 ,0x48 ,0x82 ,0x17 ,0x4b ,0xf0 ,0xea ,0xc9 ,0x0e ,0xd2 ,0x8f , +0xcd ,0xd5 ,0x01 ,0xbd ,0x7f ,0x0f ,0xf5 ,0xae ,0x92 ,0x28 ,0x1e ,0x2c , +0xf4 ,0xe9 ,0x03 ,0xf7 ,0x0a ,0xeb ,0x84 ,0x18 ,0xa1 ,0x37 ,0x38 ,0x8a , +0x11 ,0xa2 ,0x5d ,0x8c ,0xf6 ,0xe4 ,0x3f ,0x5b ,0x87 ,0x07 ,0x6b ,0xb4 , +0x07 ,0xe0 ,0x8f ,0x30 ,0xc4 ,0xfa ,0x27 ,0xae ,0xfc ,0x02 ,0xd1 ,0x21 , +0x5c ,0xbc ,0x0b ,0x93 ,0x6e ,0x7e ,0xf9 ,0x6b ,0x80 ,0x7a ,0x25 ,0x84 , +0x20 ,0xf1 ,0x6a ,0xfa ,0x75 ,0xed ,0x57 ,0x61 ,0x62 ,0xa7 ,0xf6 ,0x5b , +0xe1 ,0xb0 ,0x38 ,0xc8 ,0xe9 ,0x6d ,0x3f ,0xef ,0x1e ,0x99 ,0x0b ,0xb7 , +0xc8 ,0x9f ,0x76 ,0x5c ,0x04 ,0x1f ,0x02 ,0x92 ,0x00 ,0xa7 ,0x38 ,0x3d , +0x00 ,0x3b ,0xa7 ,0xbc ,0x39 ,0x6e ,0xab ,0xf5 ,0x10 ,0xa8 ,0xba ,0xd6 , +0x28 ,0x6b ,0x0e ,0x00 ,0x48 ,0xf9 ,0x3b ,0x5c ,0xde ,0x59 ,0x93 ,0x46 , +0xd6 ,0x61 ,0x52 ,0x81 ,0x71 ,0x0f ,0x0e ,0x61 ,0xac ,0xc6 ,0x7f ,0x15 , +0x93 ,0xa7 ,0xc1 ,0x16 ,0xb5 ,0xef ,0x85 ,0xd1 ,0xa7 ,0x61 ,0xc2 ,0x85 , +0x1d ,0x61 ,0xc6 ,0xae ,0xb3 ,0x9e ,0x8d ,0x23 ,0xa3 ,0xc8 ,0xd5 ,0xf2 , +0xc7 ,0x1b ,0x7e ,0xef ,0xd2 ,0xdf ,0x25 ,0xaf ,0x4e ,0x81 ,0x15 ,0x59 , +0xe5 ,0x36 ,0xb1 ,0xf1 ,0xd5 ,0xda ,0x58 ,0xd8 ,0xd9 ,0x0d ,0x6d ,0xc9 , +0x25 ,0xb5 ,0xe8 ,0x1d ,0x3b ,0xca ,0x2d ,0xab ,0xf2 ,0xe2 ,0xe9 ,0x55 , +0xd7 ,0xf4 ,0xc7 ,0xd0 ,0x57 ,0x7a ,0x86 ,0x15 ,0x0a ,0x5a ,0x8b ,0xd7 , +0x3f ,0x66 ,0x0f ,0x80 ,0xb4 ,0xe0 ,0x5c ,0x33 ,0xed ,0xaf ,0x1b ,0x3b , +0x6d ,0x1c ,0xd9 ,0x8c ,0xb5 ,0x96 ,0xa3 ,0xfb ,0xcf ,0xcc ,0x97 ,0x1c , +0xae ,0x06 ,0x19 ,0x41 ,0x61 ,0xf8 ,0x97 ,0x6b ,0x82 ,0x5e ,0x1c ,0xbf , +0x6f ,0x43 ,0x3d ,0xe5 ,0x00 ,0xf5 ,0xfe ,0x66 ,0x48 ,0x26 ,0x31 ,0xa1 , +0x72 ,0x67 ,0x6e ,0xd4 ,0x5b ,0x6f ,0x66 ,0xde ,0x70 ,0x8b ,0x2b ,0xc3 , +0xa2 ,0x30 ,0xe9 ,0x55 ,0xc8 ,0xff ,0xf8 ,0xd0 ,0xdd ,0xa9 ,0x21 ,0x85 , +0x6e ,0x6c ,0x82 ,0x66 ,0xcc ,0x52 ,0xf0 ,0x9e ,0x1e ,0xb5 ,0x3a ,0xff , +0x4c ,0xf3 ,0xae ,0x02 ,0xc3 ,0x4b ,0x76 ,0x25 ,0xbd ,0xb0 ,0x21 ,0x54 , +0x61 ,0xda ,0x16 ,0xd3 ,0x23 ,0x86 ,0x41 ,0xa1 ,0x4c ,0x59 ,0x15 ,0x95 , +0x65 ,0x85 ,0xb6 ,0x8e ,0xa6 ,0x37 ,0xc0 ,0xa2 ,0x71 ,0x1d ,0x67 ,0x44 , +0x7b ,0xe5 ,0x4c ,0x4f ,0xb6 ,0x2c ,0x46 ,0xf7 ,0x29 ,0xa5 ,0xf2 ,0xd3 , +0x51 ,0x19 ,0x91 ,0x4d ,0xa7 ,0xb5 ,0x05 ,0xb9 ,0x6e ,0x61 ,0x6e ,0xf8 , +0xc0 ,0x01 ,0xe5 ,0x41 ,0x0a ,0x89 ,0x64 ,0x77 ,0xf2 ,0xc8 ,0x63 ,0x2d , +0x9d ,0x27 ,0x7f ,0x47 ,0x30 ,0x39 ,0xdf ,0xb6 ,0x6e ,0x4f ,0x00 ,0x3f , +0x15 ,0xc6 ,0xaf ,0x62 ,0xdf ,0x3f ,0x47 ,0xe8 ,0x42 ,0x90 ,0x77 ,0x23 , +0x7a ,0xaa ,0x99 ,0x53 ,0x03 ,0x63 ,0x60 ,0x59 ,0x07 ,0x52 ,0x3c ,0xb5 , +0x67 ,0x59 ,0xfe ,0x08 ,0xe6 ,0x43 ,0x0f ,0x3b ,0x08 ,0x7c ,0xc7 ,0x07 , +0x3c ,0xfa ,0x65 ,0xea ,0x69 ,0x51 ,0x41 ,0x31 ,0xb3 ,0x05 ,0x69 ,0xba , +0x2c ,0xbf ,0x89 ,0x25 ,0x9e ,0xfe ,0x07 ,0x13 ,0x78 ,0x0e ,0x16 ,0x54 , +0xdf ,0x23 ,0xdf ,0x10 ,0x69 ,0x79 ,0xd0 ,0x33 ,0xd7 ,0x21 ,0x8b ,0xc8 , +0x2a ,0xd0 ,0x74 ,0x0a ,0xfa ,0xb1 ,0x6f ,0xa3 ,0xcb ,0x1d ,0xca ,0x4f , +0x00 ,0x46 ,0x6c ,0x42 ,0x09 ,0xe0 ,0x30 ,0x89 ,0x08 ,0x33 ,0x9b ,0x7b , +0x7b ,0x0f ,0x69 ,0x5c ,0x0d ,0x34 ,0x91 ,0xfc ,0xfe ,0x22 ,0x82 ,0x02 , +0xcd ,0xfa ,0x97 ,0xe8 ,0x28 ,0x1d ,0xbc ,0x13 ,0x0b ,0xfd ,0x47 ,0xa1 , +0x7e ,0xa2 ,0x86 ,0x4d ,0x6f ,0x12 ,0x51 ,0x35 ,0x7d ,0x76 ,0x8a ,0x58 , +0x05 ,0xb6 ,0x39 ,0xa1 ,0x2f ,0xd7 ,0xda ,0xaf ,0x00 ,0xa0 ,0x1a ,0x94 , +0xd8 ,0x23 ,0x34 ,0x99 ,0x5c ,0xaf ,0xcc ,0x15 ,0x4b ,0x56 ,0xb2 ,0xd2 , +0x81 ,0x07 ,0xd3 ,0xf3 ,0x47 ,0xa2 ,0x45 ,0x93 ,0xcb ,0xae ,0xa7 ,0x6b , +0x3f ,0xf9 ,0xea ,0xfc ,0x0e ,0x64 ,0xf2 ,0x93 ,0x7f ,0x24 ,0x22 ,0x73 , +0x86 ,0xc7 ,0x2d ,0x75 ,0x9b ,0x41 ,0x8b ,0xfb ,0x3b ,0x26 ,0x2a ,0xe5 , +0x0b ,0xd4 ,0x00 ,0xe3 ,0x2c ,0x69 ,0x49 ,0x62 ,0x6c ,0x13 ,0x58 ,0x6e , +0xac ,0x43 ,0xe5 ,0x2b ,0x3b ,0x88 ,0xdc ,0xd4 ,0x41 ,0xe8 ,0xee ,0x4e , +0xc3 ,0x28 ,0x91 ,0x17 ,0x9a ,0x5a ,0xdb ,0x80 ,0x8b ,0x4d ,0x64 ,0xcc , +0xbe ,0x66 ,0xa4 ,0x62 ,0xfb ,0x13 ,0x44 ,0x10 ,0xd9 ,0xe4 ,0xd5 ,0xa5 , +0xae ,0x9e ,0x42 ,0x50 ,0xfc ,0x78 ,0xad ,0xfa ,0xc4 ,0xd0 ,0x5a ,0x60 , +0x9b ,0x45 ,0x2b ,0x61 ,0x5c ,0x57 ,0xb5 ,0x92 ,0x28 ,0xe9 ,0xf5 ,0x35 , +0x67 ,0xc1 ,0x5e ,0xa8 ,0x1c ,0x99 ,0x36 ,0x38 ,0xb8 ,0x5c ,0xff ,0x3d , +0xa0 ,0xfc ,0xb0 ,0xbc ,0x3d ,0x2c ,0xb4 ,0x36 ,0x17 ,0xb4 ,0x6d ,0xb5 , +0x39 ,0x45 ,0xa9 ,0x2a ,0x6b ,0xa2 ,0x24 ,0x44 ,0x30 ,0xab ,0x2c ,0x82 , +0x36 ,0xdc ,0xd6 ,0x36 ,0x5d ,0x0a ,0xdc ,0xee ,0x0f ,0x2b ,0x28 ,0x99 , +0xdc ,0x67 ,0x0d ,0xea ,0x6e ,0x42 ,0xb9 ,0x45 ,0x7f ,0xd2 ,0x96 ,0x1e , +0x60 ,0x42 ,0xeb ,0x1e ,0x5f ,0x8e ,0xa9 ,0xdc ,0xd3 ,0x8a ,0xd6 ,0xbd , +0x4e ,0x1f ,0x42 ,0x75 ,0x1d ,0xe2 ,0xc6 ,0x11 ,0xc9 ,0x80 ,0x1f ,0xfe , +0x99 ,0x52 ,0x4d ,0x7b ,0x35 ,0xf7 ,0xb7 ,0xc3 ,0xee ,0xd6 ,0x94 ,0xf5 , +0x74 ,0xa0 ,0x69 ,0xcd ,0x1f ,0x2b ,0xd0 ,0x87 ,0xf7 ,0x8c ,0x69 ,0xc5 , +0x96 ,0x70 ,0x91 ,0xe8 ,0x3d ,0xd2 ,0xcc ,0xf1 ,0x4c ,0xcd ,0xe2 ,0x14 , +0x00 ,0x10 ,0x4a ,0xd9 ,0x6a ,0x5d ,0x65 ,0x2c ,0x4b ,0x79 ,0x0c ,0xc4 , +0x78 ,0x5e ,0xc8 ,0xc5 ,0x37 ,0x74 ,0x6d ,0x50 ,0x5c ,0x34 ,0x1f ,0xe0 , +0xf4 ,0xe3 ,0xe1 ,0x86 ,0x68 ,0xb1 ,0xea ,0x70 ,0xf0 ,0xae ,0xe4 ,0x59 , +0xa1 ,0x08 ,0x7e ,0x35 ,0xa3 ,0x16 ,0xd2 ,0xb0 ,0xa3 ,0xd4 ,0xb0 ,0x74 , +0x8c ,0x05 ,0x79 ,0x73 ,0xfb ,0xe6 ,0x65 ,0x96 ,0x15 ,0x07 ,0xd5 ,0xaf , +0x88 ,0x9e ,0x6b ,0xf0 ,0xbb ,0x3f ,0xe6 ,0xd1 ,0x6a ,0xe7 ,0xc9 ,0xae , +0xd9 ,0xb0 ,0x16 ,0x1c ,0x40 ,0xeb ,0xdb ,0xc1 ,0xbf ,0x83 ,0xdb ,0x8a , +0x4f ,0x96 ,0xca ,0xd7 ,0x22 ,0x06 ,0x87 ,0x08 ,0x9d ,0x65 ,0x2f ,0xd9 , +0x8e ,0x95 ,0x6c ,0xcc ,0xbf ,0x76 ,0x2a ,0xea ,0x5c ,0x8e ,0x5b ,0x17 , +0x0f ,0x75 ,0x7b ,0xfa ,0xf9 ,0xfb ,0xaa ,0x92 ,0xc7 ,0x7e ,0x63 ,0x63 , +0x54 ,0xa4 ,0xff ,0xf6 ,0xc0 ,0xc0 ,0xf5 ,0x70 ,0xd8 ,0xe3 ,0xa4 ,0x79 , +0x16 ,0xf0 ,0x6f ,0x90 ,0x5e ,0xb7 ,0xab ,0x6f ,0xab ,0x75 ,0x3b ,0xe1 , +0x4c ,0xa8 ,0x0b ,0x72 ,0x5f ,0x5f ,0x11 ,0x22 ,0x36 ,0x71 ,0x20 ,0xd3 , +0x5b ,0x5e ,0x07 ,0x06 ,0x76 ,0x1a ,0xcc ,0x5e ,0x7c ,0x97 ,0x7d ,0xb2 , +0x6b ,0xf8 ,0x39 ,0x89 ,0x37 ,0xb6 ,0x6d ,0xea ,0x74 ,0x57 ,0x28 ,0xd7 , +0x0e ,0x9b ,0xeb ,0x28 ,0x88 ,0x90 ,0xfd ,0x2d ,0x16 ,0x21 ,0x74 ,0x26 , +0xc5 ,0xb8 ,0x44 ,0xad ,0x9f ,0x97 ,0xf9 ,0x65 ,0x36 ,0xd8 ,0x00 ,0x59 , +0x17 ,0x49 ,0xf9 ,0xc7 ,0xb3 ,0x84 ,0xb9 ,0xe2 ,0x95 ,0xe0 ,0xd1 ,0x7f , +0x5f ,0xaa ,0xd7 ,0xfd ,0x6a ,0x6a ,0x83 ,0x14 ,0x46 ,0x1d ,0x12 ,0x8d , +0x09 ,0xc3 ,0xa5 ,0xca ,0x72 ,0xa3 ,0x25 ,0x65 ,0xb6 ,0x40 ,0x25 ,0x04 , +0x51 ,0xab ,0x22 ,0xeb ,0xd7 ,0x69 ,0xc9 ,0x22 ,0x9c ,0xa0 ,0x19 ,0x5c , +0x1a ,0xfd ,0x41 ,0x8f ,0x98 ,0xc5 ,0x71 ,0xb8 ,0x6f ,0x76 ,0xae ,0xfa , +0x9b ,0x03 ,0xab ,0x43 ,0x81 ,0x3b ,0x66 ,0xae ,0xf0 ,0xd2 ,0xb7 ,0xee , +0x9a ,0xe3 ,0xae ,0x45 ,0xc1 ,0x86 ,0xb0 ,0xce ,0x9e ,0x2b ,0xec ,0xb8 , +0xcf ,0xca ,0x0e ,0x8c ,0x33 ,0xfa ,0xa7 ,0xef ,0xf7 ,0xfc ,0xa1 ,0x41 , +0x49 ,0xd3 ,0x6d ,0xb5 ,0x58 ,0xe4 ,0x0e ,0x24 ,0xd2 ,0x8a ,0x74 ,0xc9 , +0x56 ,0x2e ,0x53 ,0xc7 ,0x7a ,0x38 ,0x0f ,0x4b ,0xd9 ,0xf9 ,0x2f ,0xfa , +0x7d ,0xee ,0x14 ,0x18 ,0xce ,0x75 ,0x42 ,0x6c ,0x03 ,0x34 ,0xce ,0x80 , +0xec ,0xf2 ,0x05 ,0xf0 ,0xdf ,0xcd ,0xf8 ,0xdb ,0x26 ,0x7d ,0xb6 ,0x3d , +0x28 ,0x24 ,0x7e ,0x7e ,0x39 ,0x9f ,0xa6 ,0xc6 ,0xeb ,0x2a ,0xc8 ,0x17 , +0x94 ,0xa9 ,0x89 ,0xf5 ,0xdf ,0xcb ,0x77 ,0xfd ,0xc9 ,0x9e ,0x68 ,0x98 , +0x7d ,0x04 ,0x50 ,0x3c ,0x64 ,0x1d ,0x66 ,0xb0 ,0x97 ,0x06 ,0xb6 ,0x08 , +0x5b ,0xe4 ,0x17 ,0x44 ,0xd6 ,0x94 ,0x39 ,0x6b ,0x03 ,0x2c ,0xcb ,0x5a , +0x8d ,0x86 ,0x08 ,0x23 ,0x4f ,0x95 ,0xa8 ,0x1a , +}; + +static const u8 fips_test_mldsa65_message[]__initconst __maybe_unused = { +0x1a ,0x84 ,0x21 ,0x0d ,0x35 ,0x7a ,0x88 ,0xc8 ,0x6a ,0x11 ,0xe3 , +0x15 ,0x24 ,0xec ,0x0d ,0x2e ,0x76 ,0xb9 ,0xcf ,0x2b ,0x04 ,0x25 , +0x16 ,0xae ,0x62 ,0x42 ,0xa0 ,0x20 ,0x68 ,0x25 ,0x3e ,0xb4 ,0x75 , +0xa7 ,0x1d ,0x64 ,0xc3 ,0xd1 ,0x08 ,0x07 ,0x67 ,0xb6 ,0xf7 ,0x76 , +0x76 ,0xf6 ,0xd6 ,0x62 ,0x66 ,0x04 ,0x89 ,0x0c ,0x8f ,0x07 ,0xac , +0xc8 ,0x51 ,0x77 ,0xd9 ,0x47 ,0x5e ,0xb5 ,0x22 ,0x20 , +};
lib/crypto/mldsa.c +31 -0
@@ -11,10 +11,11 @@#include <linux/export.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/string.h> #include <linux/unaligned.h> +#include "fips-mldsa.h" #define Q 8380417/* The prime q = 2^23 - 2^13 + 1 */ #define QINV_MOD_2_32 58728449/* Multiplicative inverse of q mod 2^32 */ #define N 256/* Number of components per ring element */ #define D 13/* Number of bits dropped from the public key vector t */
@@ -646,7 +647,37 @@ int mldsa_verify(enum mldsa_alg alg, const u8 *sig, size_t sig_len,/* ||z||_infinity < gamma1 - beta was already checked in decode_z(). */ return 0 ; }EXPORT_SYMBOL_GPL (mldsa_verify); +#ifdef CONFIG_CRYPTO_FIPS +static int __init mldsa_mod_init (void ) +{ +if (fips_enabled) { +/* +* FIPS cryptographic algorithm self-test. As per the FIPS +* Implementation Guidance, testing any ML-DSA parameter set +* satisfies the test requirement for all of them, and only a +* positive test is required. +*/ +int err =mldsa_verify (MLDSA65 , fips_test_mldsa65_signature, +sizeof (fips_test_mldsa65_signature), + fips_test_mldsa65_message, +sizeof (fips_test_mldsa65_message), + fips_test_mldsa65_public_key, +sizeof (fips_test_mldsa65_public_key)); +if (err) +panic ("mldsa: FIPS self-test failed; err=%pe\n" , +ERR_PTR (err)); + } +return 0 ; +} +subsys_initcall (mldsa_mod_init); + +static void __exit mldsa_mod_exit(void) +{ +} +module_exit (mldsa_mod_exit); +#endif /* CONFIG_CRYPTO_FIPS */ +MODULE_DESCRIPTION ("ML-DSA signature verification" );MODULE_LICENSE ("GPL" );
base-commit: cb35268f1fcf233112a51b564aaac445bc2d7ba9
Signature · 1 line
2.52.0
Quoted 10 lines · Eric Biggers
Since ML-DSA is FIPS-approved, add the boot-time self-test which is apparently required.
Just add a test vector manually for now, borrowed from
lib/crypto/tests/mldsa-testvecs.h(where in turn it's borrowed from leancrypto). The SHA-* FIPS test vectors are generated byscripts/crypto/gen-fips-testvecs.pyinstead, but the common Python libraries don't support ML-DSA yet.
Quoted 5 lines
Signed-off-by Eric Biggers <[email protected]>---
This patch is targeting libcrypto-next
Quoted 528 lines
lib/crypto/fips-mldsa.h | 458 ++++++++++++++++++++++++++++++++++++++++ lib/crypto/mldsa.c | 31 +++ 2 files changed, 489 insertions(+) create mode 100644 lib/crypto/fips-mldsa.hlib/crypto/fips-mldsa.h new file +458
-0@@ -0,0 +1,458 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* ML-DSA test vector extracted from leancrypto */ + +#include <linux/fips.h> + +static const u8 fips_test_mldsa65_signature[]__initconst __maybe_unused = { +0xda ,0xcf ,0x8d ,0x67 ,0x59 ,0x60 ,0x6c ,0x39 ,0x2d ,0x89 ,0xb6 ,0xa1 , +0xf3 ,0x8c ,0x70 ,0xcf ,0x25 ,0x86 ,0x21 ,0xa1 ,0x9f ,0x20 ,0x9e ,0xf5 , +0xd2 ,0xdd ,0xbd ,0x99 ,0xfa ,0xe4 ,0xab ,0x77 ,0x31 ,0x65 ,0x18 ,0xa1 , +0xd1 ,0x3f ,0x21 ,0x70 ,0x36 ,0xe1 ,0xf9 ,0x5c ,0x28 ,0xb6 ,0x7d ,0x34 , +0xae ,0x66 ,0xc9 ,0x1c ,0x8e ,0xc6 ,0xf9 ,0x45 ,0x8c ,0xa9 ,0xb2 ,0xfb , +0x0f ,0x5b ,0xb8 ,0xf9 ,0xf5 ,0xe2 ,0x37 ,0x79 ,0x12 ,0xda ,0xa7 ,0x72 , +0x9e ,0x0d ,0xf8 ,0x88 ,0x5b ,0x34 ,0x49 ,0x6c ,0xed ,0xa3 ,0x7f ,0x86 , +0xd3 ,0xd9 ,0x2f ,0x44 ,0x08 ,0x0d ,0xb7 ,0xdb ,0x4a ,0xce ,0x02 ,0x14 , +0x02 ,0xd6 ,0x40 ,0x75 ,0xe3 ,0xc0 ,0x97 ,0xfc ,0x6c ,0x6a ,0x88 ,0x29 , +0x0c ,0xe2 ,0x3a ,0x2b ,0x28 ,0x82 ,0x8f ,0x27 ,0x09 ,0x69 ,0x91 ,0xc6 , +0xc3 ,0xb7 ,0x07 ,0x61 ,0x86 ,0x8d ,0x89 ,0x8a ,0xd5 ,0x00 ,0x3b ,0x4b , +0xfc ,0x6f ,0xb3 ,0x3f ,0x4c ,0x93 ,0x31 ,0xfc ,0x88 ,0x53 ,0x26 ,0xea , +0xe5 ,0x3a ,0xfc ,0xc1 ,0x59 ,0x16 ,0xf0 ,0xb7 ,0xac ,0xde ,0x1e ,0xd8 , +0x74 ,0x85 ,0x72 ,0xd9 ,0xbb ,0xbe ,0x76 ,0x32 ,0x25 ,0x9d ,0x21 ,0xbc , +0xfd ,0x8d ,0x32 ,0xfe ,0xae ,0x24 ,0xe5 ,0x4a ,0xcc ,0x5d ,0x15 ,0x23 , +0xd3 ,0x57 ,0xe7 ,0xa9 ,0x2c ,0x31 ,0xd7 ,0xc5 ,0x6b ,0x70 ,0x6c ,0x22 , +0x5a ,0x13 ,0x1f ,0x76 ,0x13 ,0x78 ,0x6f ,0xac ,0x42 ,0x4c ,0x46 ,0x81 , +0xa2 ,0x20 ,0x91 ,0x30 ,0xed ,0xcb ,0x90 ,0xfe ,0x3c ,0xa3 ,0xc7 ,0xb4 , +0x1f ,0x21 ,0x1d ,0x98 ,0x74 ,0x6a ,0x3e ,0xc8 ,0xcc ,0xd2 ,0x68 ,0x87 , +0x69 ,0xa9 ,0xdf ,0x50 ,0xd5 ,0x0a ,0x8e ,0x10 ,0x54 ,0xab ,0xea ,0x65 , +0x2a ,0x52 ,0xd7 ,0x22 ,0xae ,0x2f ,0x1e ,0xc3 ,0x16 ,0x58 ,0x20 ,0x18 , +0x6d ,0x35 ,0x46 ,0x31 ,0x43 ,0x5d ,0x62 ,0xfb ,0xb1 ,0x47 ,0x32 ,0xfa , +0x14 ,0xcc ,0x51 ,0xa3 ,0xcd ,0x99 ,0x4f ,0x97 ,0x0f ,0xca ,0x24 ,0x93 , +0x17 ,0xea ,0xa3 ,0xf3 ,0x1f ,0xbe ,0xb5 ,0xa3 ,0xac ,0x80 ,0xcc ,0x20 , +0x3b ,0xa6 ,0xd3 ,0x32 ,0x72 ,0x4e ,0xd9 ,0x25 ,0xf9 ,0xc2 ,0x24 ,0x15 , +0xbd ,0x1e ,0x1e ,0x41 ,0x8c ,0x18 ,0x8c ,0x58 ,0xe8 ,0x75 ,0x20 ,0xff , +0xa3 ,0xf4 ,0xd4 ,0xab ,0x75 ,0x78 ,0x4e ,0xbb ,0x7c ,0x94 ,0x93 ,0x28 , +0x5b ,0x07 ,0x3a ,0x3c ,0xc9 ,0xf1 ,0x55 ,0x3e ,0x33 ,0xed ,0xf8 ,0x72 , +0x55 ,0xab ,0x5a ,0xea ,0xbe ,0x65 ,0xfa ,0x81 ,0x50 ,0xc0 ,0x9d ,0x2d , +0xfb ,0x04 ,0x25 ,0x7c ,0xb9 ,0xee ,0xe2 ,0xa3 ,0x00 ,0x44 ,0xd3 ,0x9d , +0xee ,0x4f ,0x80 ,0x77 ,0xfb ,0x26 ,0x6b ,0x07 ,0xd0 ,0xff ,0x82 ,0x39 , +0x0e ,0x2b ,0x47 ,0xa3 ,0xe7 ,0x3e ,0xc5 ,0x4e ,0x15 ,0x8a ,0x48 ,0x28 , +0xfb ,0xf7 ,0xa4 ,0x86 ,0xfb ,0x77 ,0x60 ,0xcd ,0xc5 ,0x68 ,0x96 ,0xd7 , +0x4c ,0x3c ,0xf2 ,0x51 ,0x71 ,0x79 ,0x2e ,0x2e ,0x57 ,0x10 ,0xa7 ,0xfc , +0xd1 ,0xd4 ,0x61 ,0x71 ,0x81 ,0x85 ,0x74 ,0x09 ,0x7d ,0x80 ,0xd0 ,0xc2 , +0xe9 ,0xff ,0xb7 ,0x88 ,0x53 ,0x74 ,0x1e ,0xb0 ,0xca ,0x65 ,0x48 ,0x8e , +0xdb ,0x59 ,0x3a ,0xcb ,0x80 ,0xeb ,0xfd ,0xd2 ,0xc9 ,0x38 ,0x43 ,0xae , +0x76 ,0xf2 ,0xbb ,0x51 ,0xb2 ,0xcb ,0xe6 ,0x85 ,0x31 ,0xb5 ,0x62 ,0xd4 , +0x5e ,0x48 ,0x08 ,0xf1 ,0x40 ,0x5b ,0x16 ,0x83 ,0x5e ,0xa5 ,0x9c ,0x6b , +0x91 ,0x49 ,0x44 ,0xff ,0x3b ,0xa9 ,0x2b ,0xf3 ,0x06 ,0x33 ,0x9e ,0x6e , +0x3c ,0x66 ,0x7e ,0x27 ,0xa2 ,0x59 ,0x7b ,0xe3 ,0xb6 ,0xb4 ,0x28 ,0xeb , +0x93 ,0x35 ,0x87 ,0xac ,0x0e ,0x0b ,0x7e ,0xbc ,0x35 ,0x28 ,0x72 ,0x1f , +0x26 ,0x59 ,0xd0 ,0x1f ,0x63 ,0xe4 ,0x86 ,0x5d ,0x70 ,0xf3 ,0xa8 ,0xa4 , +0xb8 ,0xcd ,0xb3 ,0xf8 ,0x8d ,0xaa ,0x41 ,0xd2 ,0xcc ,0x0b ,0x15 ,0x66 , +0x22 ,0x83 ,0x92 ,0xe3 ,0x0b ,0xf9 ,0xea ,0xa0 ,0x33 ,0xa1 ,0x4e ,0x92 , +0xae ,0x81 ,0x95 ,0xa4 ,0x58 ,0x3f ,0xa9 ,0x15 ,0x52 ,0xf9 ,0xda ,0xb7 , +0x10 ,0x8d ,0xc6 ,0xab ,0x77 ,0xe9 ,0xbe ,0xad ,0xc9 ,0x3a ,0x6a ,0x8d , +0x92 ,0x6c ,0x69 ,0xff ,0x31 ,0x49 ,0x25 ,0x04 ,0xc8 ,0x93 ,0x6f ,0xc8 , +0xe7 ,0x60 ,0x7a ,0x76 ,0xb5 ,0xc1 ,0x07 ,0xef ,0xa3 ,0x39 ,0xa6 ,0xf2 , +0x36 ,0x04 ,0xde ,0x3c ,0x4a ,0x4e ,0x96 ,0xbd ,0x64 ,0x26 ,0x80 ,0x01 , +0x88 ,0x47 ,0xd2 ,0xa4 ,0x46 ,0xcd ,0xe1 ,0x30 ,0x7f ,0xa3 ,0x00 ,0x11 , +0x38 ,0x55 ,0xfa ,0xeb ,0x10 ,0xeb ,0xa0 ,0x65 ,0x04 ,0x09 ,0xc8 ,0xde , +0x9c ,0x73 ,0xba ,0x0c ,0xbd ,0xd3 ,0xa5 ,0x84 ,0x5e ,0xb9 ,0x3b ,0xd4 , +0x94 ,0xbd ,0xa6 ,0x53 ,0xbe ,0x93 ,0x69 ,0x3e ,0xaa ,0x32 ,0x31 ,0x06 , +0xc8 ,0x1b ,0x4a ,0x48 ,0xb5 ,0x17 ,0x85 ,0xbf ,0x72 ,0xec ,0xf5 ,0x29 , +0x8a ,0xd8 ,0xeb ,0x99 ,0x8b ,0x74 ,0x84 ,0x57 ,0x8c ,0xe1 ,0x85 ,0x94 , +0xa0 ,0xbc ,0x7a ,0x14 ,0xf0 ,0xf4 ,0x8b ,0x25 ,0x37 ,0x43 ,0xa1 ,0x34 , +0x09 ,0x71 ,0xca ,0x5c ,0x9f ,0x08 ,0x38 ,0xd9 ,0x9c ,0x0c ,0x0e ,0xcb , +0xe4 ,0xad ,0x4b ,0x2a ,0x89 ,0x67 ,0xf8 ,0x29 ,0x6c ,0x69 ,0x0e ,0x5d , +0xca ,0xfa ,0xa6 ,0x6b ,0x0e ,0xb5 ,0x94 ,0x17 ,0x71 ,0xf0 ,0xc9 ,0xcd , +0x02 ,0x1d ,0xa5 ,0xd5 ,0xc6 ,0xa7 ,0xbc ,0x5f ,0x6e ,0x67 ,0x43 ,0x68 , +0xce ,0xac ,0x54 ,0x81 ,0x2a ,0x25 ,0x22 ,0x52 ,0x35 ,0xad ,0x7b ,0xd5 , +0x06 ,0x8c ,0x00 ,0xfb ,0xca ,0xc4 ,0x0a ,0x49 ,0x1e ,0xc8 ,0xeb ,0x77 , +0xc1 ,0x63 ,0x23 ,0x96 ,0xbd ,0x35 ,0xfa ,0x13 ,0xae ,0xbf ,0x1d ,0x1e , +0x69 ,0x8d ,0xb3 ,0xe3 ,0x07 ,0xde ,0x4e ,0xd0 ,0x12 ,0xa9 ,0xc3 ,0x36 , +0x30 ,0x46 ,0xef ,0x92 ,0x76 ,0x17 ,0x8f ,0x10 ,0xe7 ,0xba ,0x99 ,0x4b , +0xdf ,0xad ,0xb8 ,0x11 ,0x80 ,0xdf ,0xe7 ,0xfd ,0x80 ,0x64 ,0xf7 ,0x2a , +0xac ,0x60 ,0x2a ,0x54 ,0x8f ,0x4f ,0xaf ,0xaf ,0x60 ,0xf9 ,0x67 ,0x20 , +0x80 ,0x53 ,0x5c ,0xb6 ,0x81 ,0xa6 ,0x2a ,0x74 ,0x2d ,0xc5 ,0x74 ,0x2a , +0x95 ,0x26 ,0x13 ,0x17 ,0x01 ,0xdd ,0x31 ,0xac ,0x5a ,0x05 ,0xda ,0xde , +0xba ,0xf6 ,0x37 ,0x13 ,0x8d ,0xe4 ,0xa8 ,0x93 ,0x46 ,0x9e ,0xa9 ,0x82 , +0x24 ,0x7e ,0xc8 ,0xda ,0x63 ,0x89 ,0xcd ,0x33 ,0xc9 ,0xf7 ,0xf9 ,0x71 , +0x35 ,0xe6 ,0xa5 ,0x5f ,0x6b ,0x3b ,0xbb ,0x0c ,0xe0 ,0xa4 ,0x0b ,0xe3 , +0x29 ,0xc0 ,0xae ,0x8e ,0xce ,0x03 ,0x09 ,0x73 ,0x0e ,0x1e ,0x9c ,0xe9 , +0x59 ,0xb6 ,0x8b ,0x78 ,0x67 ,0x32 ,0x8b ,0xf1 ,0x93 ,0xcc ,0x72 ,0x1b , +0x6f ,0xa2 ,0xf1 ,0x04 ,0x9c ,0xfa ,0x98 ,0x02 ,0xca ,0xdf ,0x35 ,0x3c , +0x38 ,0xac ,0xa8 ,0xdb ,0x90 ,0xae ,0xaa ,0xf9 ,0x70 ,0xfb ,0xed ,0xbd , +0xa6 ,0x25 ,0x14 ,0x58 ,0x09 ,0x8a ,0x36 ,0xaf ,0x41 ,0x09 ,0x19 ,0xcb , +0xd3 ,0x25 ,0x5d ,0x0e ,0xe6 ,0x20 ,0x14 ,0x71 ,0x24 ,0x79 ,0x19 ,0x55 , +0xaf ,0x51 ,0x5b ,0xa4 ,0xc0 ,0x93 ,0x9e ,0xdd ,0x88 ,0x31 ,0x13 ,0x96 , +0xbf ,0xca ,0x0a ,0xd7 ,0xbc ,0xc4 ,0x00 ,0xa1 ,0x10 ,0x2d ,0x92 ,0x79 , +0xf9 ,0x14 ,0xdb ,0xd2 ,0xba ,0x74 ,0xfa ,0xa8 ,0xe5 ,0x40 ,0x14 ,0xc2 , +0x56 ,0x3c ,0x7f ,0x50 ,0x07 ,0x60 ,0x86 ,0x93 ,0x51 ,0x2e ,0xf9 ,0x70 , +0x61 ,0x70 ,0x0e ,0xa4 ,0x87 ,0x75 ,0xcc ,0x6c ,0x72 ,0xb7 ,0x68 ,0x23 , +0xb7 ,0x3d ,0x76 ,0xaf ,0x96 ,0x9b ,0x4a ,0xe5 ,0x12 ,0x28 ,0x4a ,0x8f , +0x79 ,0x34 ,0xff ,0xec ,0x92 ,0xeb ,0x6b ,0xaf ,0xc9 ,0xbd ,0xc1 ,0x77 , +0x07 ,0xd0 ,0xfa ,0x55 ,0x57 ,0x10 ,0x0c ,0xad ,0x29 ,0x2a ,0x79 ,0xd6 , +0x09 ,0x9e ,0x7d ,0x18 ,0xd4 ,0xd6 ,0xdd ,0x72 ,0x1a ,0x8f ,0x24 ,0x11 , +0x70 ,0xd2 ,0x52 ,0x36 ,0x0f ,0x38 ,0x79 ,0x38 ,0x4a ,0x02 ,0x4f ,0x73 , +0x2a ,0xaa ,0x6a ,0xb5 ,0x0c ,0x72 ,0x32 ,0x85 ,0x21 ,0x76 ,0x1a ,0x8a , +0x7d ,0x51 ,0x0e ,0xf1 ,0xf9 ,0x19 ,0xfa ,0x6b ,0x9b ,0x22 ,0x71 ,0x8c , +0x13 ,0xcc ,0xba ,0x7d ,0xee ,0xd8 ,0x34 ,0xf6 ,0x85 ,0x60 ,0xe1 ,0xe4 , +0x59 ,0x6e ,0x32 ,0x60 ,0xd9 ,0xfa ,0xb7 ,0x56 ,0x54 ,0x25 ,0xd1 ,0x73 , +0x6a ,0xf2 ,0xa0 ,0xc7 ,0xa0 ,0x67 ,0x10 ,0x89 ,0x9c ,0x27 ,0x5f ,0x7f , +0x2e ,0x5a ,0x29 ,0x70 ,0x7a ,0x7b ,0xaf ,0x21 ,0xd0 ,0xf4 ,0x06 ,0xb9 , +0x2d ,0xf1 ,0xb8 ,0x32 ,0xed ,0xc5 ,0xc9 ,0xac ,0x2f ,0x54 ,0x0a ,0xf9 , +0x08 ,0x39 ,0x39 ,0x7d ,0x1d ,0xaf ,0xb4 ,0x5f ,0x4d ,0x75 ,0xc3 ,0xe8 , +0x52 ,0x3a ,0x47 ,0x72 ,0x2c ,0xa9 ,0x2d ,0xcb ,0x74 ,0x06 ,0xfe ,0x69 , +0xd3 ,0xf3 ,0x1a ,0xb2 ,0xd3 ,0x01 ,0xed ,0x6c ,0xc1 ,0xca ,0x4f ,0xaf , +0x11 ,0x9b ,0xa2 ,0x27 ,0x2a ,0x59 ,0x56 ,0x58 ,0xdf ,0x79 ,0x8b ,0xc9 , +0x87 ,0xe9 ,0x58 ,0x81 ,0x48 ,0xc6 ,0xb6 ,0x7d ,0x60 ,0x54 ,0x87 ,0x9c , +0x61 ,0xbb ,0x4b ,0xbb ,0x61 ,0xac ,0x0a ,0x5a ,0x66 ,0x7e ,0x70 ,0x8b , +0xfd ,0x92 ,0x76 ,0x4a ,0xa9 ,0xa5 ,0xc3 ,0xf4 ,0xf2 ,0x93 ,0x48 ,0xc4 , +0xf3 ,0x91 ,0x2b ,0x60 ,0x04 ,0x0e ,0xb0 ,0x6b ,0x60 ,0x5e ,0xf0 ,0xf1 , +0x54 ,0x41 ,0x56 ,0xdc ,0x25 ,0x57 ,0xc3 ,0xb6 ,0x0b ,0x5e ,0x15 ,0xb5 , +0x2a ,0x36 ,0x4f ,0xe7 ,0x1d ,0x70 ,0xa8 ,0xa7 ,0xec ,0xd6 ,0x74 ,0xba , +0xa4 ,0x79 ,0x83 ,0x7c ,0x9e ,0x1a ,0x5d ,0x32 ,0xc8 ,0xcb ,0x41 ,0xca , +0x04 ,0xec ,0x0b ,0x18 ,0x54 ,0xe1 ,0x67 ,0xbf ,0xa8 ,0x7a ,0xc3 ,0x0f , +0x27 ,0x2a ,0xaf ,0x2a ,0x41 ,0x19 ,0x1f ,0xe8 ,0xa2 ,0xe8 ,0xfa ,0xfc , +0x88 ,0x41 ,0x46 ,0xc3 ,0x1c ,0x44 ,0xe5 ,0xee ,0x47 ,0xec ,0xfe ,0xbf , +0xb8 ,0x29 ,0x2e ,0xae ,0x47 ,0x0a ,0x42 ,0x69 ,0x8a ,0x9a ,0x94 ,0x97 , +0x9e ,0xf5 ,0xb6 ,0x37 ,0x1c ,0x10 ,0xc2 ,0x99 ,0xa8 ,0xe9 ,0x9e ,0x0e , +0x6e ,0xb5 ,0xbe ,0xba ,0x1f ,0x77 ,0xa6 ,0x35 ,0x02 ,0x1e ,0x8c ,0xe6 , +0x02 ,0x53 ,0xe2 ,0x9a ,0xdd ,0x09 ,0x6e ,0x9b ,0x7a ,0x36 ,0x4f ,0x38 , +0x8d ,0x4c ,0xa4 ,0xb4 ,0xff ,0x90 ,0x76 ,0x0d ,0x11 ,0x7d ,0xe1 ,0xe9 , +0x7f ,0x2a ,0x4a ,0x80 ,0xe0 ,0xd8 ,0x3c ,0x23 ,0xd2 ,0xa5 ,0xe5 ,0x39 , +0x77 ,0xbf ,0x3d ,0x71 ,0x0d ,0x45 ,0xbb ,0x39 ,0x66 ,0x1a ,0x4d ,0x59 , +0xb7 ,0xd0 ,0x0a ,0xee ,0x87 ,0xee ,0x1f ,0xcf ,0x6f ,0xc2 ,0x50 ,0xb1 , +0xa5 ,0x4c ,0xee ,0x40 ,0x69 ,0xd7 ,0x36 ,0x38 ,0x14 ,0xcd ,0x6a ,0x9a , +0x90 ,0x40 ,0xad ,0x76 ,0xf1 ,0xa6 ,0xd4 ,0x3c ,0x75 ,0x10 ,0xba ,0xcb , +0xab ,0x22 ,0x28 ,0x5f ,0x0c ,0xe0 ,0xee ,0xf4 ,0xfd ,0x61 ,0x52 ,0x0a , +0x59 ,0xfe ,0x61 ,0xc5 ,0x40 ,0xf9 ,0x91 ,0x8e ,0x36 ,0x29 ,0x63 ,0x6c , +0x6e ,0x45 ,0xa5 ,0x42 ,0xe3 ,0x36 ,0x90 ,0xe7 ,0x90 ,0x9f ,0x58 ,0xbb , +0xf9 ,0x1b ,0xee ,0x2c ,0xbb ,0x3a ,0xfd ,0x3d ,0xbe ,0x3d ,0x45 ,0xf0 , +0xc2 ,0x18 ,0xaa ,0x46 ,0x10 ,0x23 ,0xe9 ,0x63 ,0xba ,0x7f ,0xc2 ,0xe1 , +0xf4 ,0x05 ,0xdd ,0x4a ,0x7c ,0xa8 ,0xab ,0xa9 ,0xbd ,0x6f ,0xdf ,0x48 , +0x59 ,0x11 ,0xd4 ,0xba ,0x75 ,0xb6 ,0x22 ,0xd4 ,0xd7 ,0x35 ,0x6f ,0x27 , +0x70 ,0xc7 ,0x3d ,0x90 ,0x06 ,0x39 ,0x2a ,0x16 ,0xd0 ,0x8b ,0xd7 ,0xfb , +0x5e ,0x85 ,0x2e ,0xb0 ,0xd8 ,0xc7 ,0xdb ,0xe5 ,0x24 ,0x3a ,0x6e ,0xc4 , +0x5e ,0xd4 ,0x22 ,0x25 ,0x14 ,0xee ,0xa5 ,0x30 ,0x8b ,0xd6 ,0x27 ,0x61 , +0x33 ,0x13 ,0x46 ,0x0b ,0x26 ,0x45 ,0xa6 ,0xb4 ,0xfa ,0x8d ,0xa3 ,0xf2 , +0x27 ,0xd2 ,0xc5 ,0x04 ,0xaa ,0x96 ,0xa4 ,0x55 ,0xfa ,0x40 ,0xf1 ,0xfc , +0x66 ,0x33 ,0x9e ,0x4b ,0x39 ,0x75 ,0xae ,0x7f ,0x52 ,0x87 ,0x7b ,0x8a , +0xf9 ,0x7d ,0x5f ,0x8a ,0x7e ,0xf7 ,0xfe ,0xc4 ,0x7f ,0xf4 ,0xf6 ,0x9a , +0x86 ,0x78 ,0x21 ,0x02 ,0x94 ,0x9e ,0x50 ,0x2d ,0xdc ,0xd6 ,0xa5 ,0x53 , +0xf1 ,0xef ,0x06 ,0xe8 ,0xb5 ,0x46 ,0x81 ,0xcc ,0x91 ,0x4f ,0x37 ,0xee , +0x27 ,0xcb ,0x91 ,0xad ,0xff ,0x1d ,0xd1 ,0x00 ,0xa8 ,0x96 ,0x22 ,0xaa , +0x63 ,0x23 ,0x2a ,0x7a ,0x75 ,0x6f ,0xe9 ,0x2d ,0x26 ,0xde ,0x11 ,0x97 , +0x4b ,0x17 ,0x3f ,0xde ,0x51 ,0x1a ,0x22 ,0xed ,0x38 ,0x6f ,0x3e ,0x7a , +0xd0 ,0xd6 ,0x60 ,0x06 ,0x7e ,0x3f ,0xa4 ,0x29 ,0xfa ,0x18 ,0x91 ,0xda , +0x73 ,0x38 ,0xe3 ,0xe3 ,0xb5 ,0xc0 ,0x5b ,0x4e ,0xe8 ,0x94 ,0xea ,0x45 , +0x6e ,0x5b ,0x50 ,0xaa ,0x38 ,0xb6 ,0x6f ,0xdb ,0x90 ,0x1b ,0x3b ,0x82 , +0xbb ,0x0d ,0x38 ,0xe3 ,0xca ,0xd9 ,0xf1 ,0x2e ,0x27 ,0x4c ,0x2c ,0x5a , +0x42 ,0xdf ,0x44 ,0xc8 ,0x07 ,0xe4 ,0x95 ,0xb5 ,0xec ,0x91 ,0x34 ,0x1c , +0x9a ,0x0c ,0x50 ,0x1a ,0xce ,0x67 ,0xe4 ,0x4b ,0x87 ,0x61 ,0x43 ,0x95 , +0x95 ,0xb8 ,0x8a ,0xf4 ,0xc9 ,0x92 ,0x33 ,0x33 ,0xe3 ,0xfe ,0x98 ,0x2a , +0xae ,0x8e ,0xf2 ,0x6b ,0x13 ,0x7c ,0xe4 ,0x44 ,0x40 ,0x66 ,0xea ,0x0c , +0xe4 ,0xdb ,0x16 ,0x65 ,0xa8 ,0x8b ,0x37 ,0x08 ,0xec ,0x1e ,0xfc ,0xa6 , +0xd0 ,0x9b ,0x9e ,0x0a ,0xd2 ,0xe3 ,0xcf ,0x5d ,0xb2 ,0xaf ,0x8e ,0x05 , +0x7d ,0x8d ,0x84 ,0xbc ,0x9f ,0xb1 ,0xe6 ,0x6a ,0x2e ,0x4b ,0x6d ,0x64 , +0x91 ,0x17 ,0x9d ,0xb5 ,0x35 ,0x15 ,0x02 ,0xe9 ,0x1b ,0x85 ,0xc1 ,0x89 , +0xc2 ,0x5a ,0x32 ,0x3a ,0x80 ,0x78 ,0x5e ,0xcc ,0x50 ,0x26 ,0xf5 ,0x11 , +0x01 ,0x79 ,0xf3 ,0xaf ,0xb6 ,0x40 ,0x00 ,0x73 ,0x8f ,0xeb ,0x5a ,0xd1 , +0x26 ,0x00 ,0xe2 ,0xa3 ,0xcd ,0xfd ,0xaa ,0x15 ,0x5b ,0x98 ,0x2a ,0x76 , +0x41 ,0x07 ,0xc2 ,0xde ,0xb6 ,0x71 ,0xe7 ,0xc3 ,0xe9 ,0x92 ,0xb3 ,0xd8 , +0xfe ,0xaf ,0x12 ,0x61 ,0x86 ,0x5b ,0x6e ,0x74 ,0x45 ,0x7b ,0x9b ,0x6f , +0x1a ,0x13 ,0x84 ,0xf6 ,0x31 ,0x5f ,0x5b ,0x6c ,0xde ,0x47 ,0xb8 ,0x73 , +0x32 ,0xc7 ,0x94 ,0x92 ,0xa5 ,0xc3 ,0x65 ,0xdf ,0x96 ,0x6c ,0xfd ,0xb7 , +0x80 ,0xfb ,0x47 ,0xba ,0x6e ,0x43 ,0xb3 ,0x7e ,0x86 ,0xc9 ,0x97 ,0x45 , +0xde ,0x3f ,0x3a ,0xf6 ,0xb0 ,0x9e ,0x9a ,0xcb ,0xfd ,0xf2 ,0x5c ,0xba , +0x6e ,0x3f ,0xed ,0xfa ,0x74 ,0x84 ,0xe2 ,0xb1 ,0xae ,0x66 ,0x57 ,0x0b , +0x96 ,0x6c ,0x77 ,0xe4 ,0x8a ,0x67 ,0x97 ,0xc7 ,0xe0 ,0x44 ,0xb2 ,0x83 , +0x2d ,0x3c ,0x2e ,0x01 ,0x19 ,0x2e ,0x4c ,0x74 ,0xe1 ,0x35 ,0x73 ,0xeb , +0x85 ,0x63 ,0x8c ,0x3a ,0xb8 ,0xbc ,0x25 ,0x6a ,0x8d ,0xaf ,0xd2 ,0xfb , +0xef ,0xd3 ,0x12 ,0x93 ,0x0b ,0x39 ,0xfa ,0x66 ,0xbe ,0x3b ,0xfd ,0x6c , +0x0b ,0xbb ,0xb2 ,0x5a ,0x78 ,0xa1 ,0xcf ,0x8c ,0x7d ,0x60 ,0x55 ,0xeb , +0x33 ,0x4e ,0x8e ,0xf9 ,0x19 ,0x4d ,0x42 ,0xd4 ,0xf8 ,0xd8 ,0xba ,0xad , +0x0a ,0x6e ,0x62 ,0xd4 ,0xe1 ,0x6a ,0xcc ,0xea ,0x09 ,0x91 ,0x8e ,0x62 , +0xc9 ,0x1e ,0x9e ,0x48 ,0xaa ,0xde ,0xf7 ,0xa2 ,0x5a ,0xcb ,0x83 ,0x20 , +0xe8 ,0xf5 ,0xd1 ,0xfe ,0x9d ,0x18 ,0x2f ,0xd6 ,0xf8 ,0x97 ,0x17 ,0xce , +0xc2 ,0x05 ,0x08 ,0xef ,0x61 ,0x70 ,0x9d ,0x95 ,0x79 ,0x59 ,0x4c ,0x06 , +0x24 ,0x3d ,0x24 ,0x69 ,0xff ,0x46 ,0xda ,0xbc ,0x71 ,0x7a ,0x74 ,0x93 , +0x58 ,0xf5 ,0xc8 ,0x91 ,0xfb ,0x66 ,0xed ,0x78 ,0x8f ,0xf8 ,0x28 ,0xa8 , +0x1d ,0xa5 ,0x3a ,0x13 ,0x76 ,0xc2 ,0xcc ,0xba ,0xb9 ,0x56 ,0x29 ,0x74 , +0xd6 ,0x14 ,0x75 ,0x58 ,0xe6 ,0x2e ,0x79 ,0x6e ,0x9d ,0x41 ,0x94 ,0x8a , +0xcf ,0xf1 ,0xb1 ,0xe0 ,0x36 ,0xe5 ,0x89 ,0x9a ,0x95 ,0xa1 ,0x11 ,0xd1 , +0xbe ,0x45 ,0xe4 ,0xb3 ,0xb0 ,0x62 ,0x32 ,0x1d ,0xba ,0xe0 ,0xde ,0x57 , +0x81 ,0x0e ,0x01 ,0x9b ,0x52 ,0x3d ,0xd5 ,0xde ,0x3b ,0x3a ,0xdd ,0x8f , +0xe3 ,0x2e ,0xce ,0x1e ,0x89 ,0x4d ,0x81 ,0xf0 ,0xf6 ,0x20 ,0x63 ,0x7a , +0x4c ,0xbb ,0x66 ,0xe0 ,0xbe ,0x2b ,0xee ,0xd0 ,0x3b ,0x60 ,0x1e ,0x65 , +0xd1 ,0x2c ,0x7c ,0x5c ,0x6c ,0x16 ,0x5b ,0x90 ,0xc8 ,0x05 ,0x10 ,0xf2 , +0xde ,0x33 ,0x90 ,0x35 ,0x69 ,0x24 ,0x3f ,0xc1 ,0x8f ,0x1e ,0x4a ,0x60 , +0xf1 ,0x03 ,0x65 ,0x46 ,0x40 ,0x76 ,0xe9 ,0x83 ,0x97 ,0xda ,0x0b ,0xb8 , +0x22 ,0xfa ,0x55 ,0x99 ,0xfd ,0x18 ,0x24 ,0xd2 ,0x66 ,0xb0 ,0x7b ,0x70 , +0x56 ,0x93 ,0xad ,0x09 ,0x95 ,0x8e ,0x1f ,0x2f ,0xe8 ,0x12 ,0x55 ,0xd4 , +0x1f ,0xde ,0x09 ,0x85 ,0x05 ,0xd1 ,0xd5 ,0x10 ,0x2c ,0x8c ,0x6b ,0x53 , +0x28 ,0xce ,0x06 ,0xc5 ,0x52 ,0x0f ,0xfa ,0x09 ,0x09 ,0x23 ,0x1b ,0xe3 , +0xbf ,0xb1 ,0x89 ,0x72 ,0x26 ,0x0d ,0xa6 ,0xbb ,0x7d ,0x9e ,0xdc ,0xf8 , +0xf5 ,0x0b ,0x8c ,0xe0 ,0xbc ,0x97 ,0x3b ,0x72 ,0xdd ,0xf5 ,0x9d ,0xc5 , +0xb6 ,0x37 ,0x2c ,0x76 ,0x5b ,0x58 ,0x67 ,0xdb ,0xed ,0x3b ,0x6e ,0xe5 , +0xe5 ,0x6d ,0x6f ,0x0d ,0x7e ,0xff ,0xa9 ,0x57 ,0x4a ,0x84 ,0x85 ,0x82 , +0xac ,0x00 ,0x50 ,0xa3 ,0x4f ,0x87 ,0xfe ,0x2a ,0x40 ,0x52 ,0x54 ,0x81 , +0x69 ,0x42 ,0x0b ,0x0c ,0xd7 ,0x18 ,0x98 ,0x01 ,0x8c ,0x5a ,0xa2 ,0xf4 , +0xe8 ,0x61 ,0xd1 ,0x38 ,0xfd ,0x0f ,0x63 ,0x75 ,0xd3 ,0x4b ,0x1d ,0xdc , +0xdf ,0xb2 ,0xeb ,0x94 ,0x97 ,0x5c ,0x2a ,0xb4 ,0x12 ,0x5c ,0x49 ,0x2b , +0xfc ,0xd0 ,0x8d ,0xfb ,0xe7 ,0xb3 ,0xcb ,0x0f ,0x3c ,0x2e ,0x04 ,0x36 , +0xa8 ,0x03 ,0xc9 ,0xd7 ,0x11 ,0x2d ,0x2a ,0x93 ,0xff ,0xda ,0x26 ,0xb0 , +0x54 ,0x7e ,0xaf ,0x30 ,0x7d ,0xce ,0x46 ,0x8a ,0x3d ,0x7c ,0xa4 ,0x7a , +0x2c ,0xfa ,0xba ,0xa1 ,0xc9 ,0x41 ,0xd3 ,0xb8 ,0x84 ,0x03 ,0x78 ,0xdd , +0xe9 ,0x57 ,0x19 ,0x62 ,0x62 ,0xff ,0x5b ,0x3b ,0x48 ,0x62 ,0x0e ,0xee , +0x19 ,0xb0 ,0x32 ,0x6e ,0x6a ,0x07 ,0xd8 ,0x4e ,0x25 ,0x76 ,0xa7 ,0xe3 , +0x98 ,0xa1 ,0x6f ,0xb6 ,0x99 ,0x32 ,0x67 ,0x7d ,0x46 ,0x42 ,0x4a ,0x82 , +0xd1 ,0x29 ,0x1b ,0x87 ,0xeb ,0x4b ,0x9e ,0xdf ,0x69 ,0x75 ,0xbd ,0x4f , +0xd3 ,0xde ,0xc9 ,0x83 ,0xe6 ,0xd6 ,0xea ,0x03 ,0x81 ,0x12 ,0xf3 ,0x5d , +0x99 ,0xf1 ,0xb1 ,0xd9 ,0x3e ,0xbe ,0xf3 ,0xa8 ,0xdc ,0xb6 ,0xf8 ,0x4b , +0x9e ,0x26 ,0x3f ,0xf0 ,0x7c ,0xb3 ,0xf4 ,0xca ,0x00 ,0x6c ,0x6c ,0xe5 , +0x43 ,0xa1 ,0xfd ,0x3a ,0xf8 ,0x8e ,0xe3 ,0x9f ,0x88 ,0xc5 ,0x44 ,0xfd , +0x24 ,0x69 ,0x76 ,0xd5 ,0xcb ,0xdc ,0x9d ,0x12 ,0xf3 ,0x13 ,0x7e ,0xe7 , +0xc3 ,0xa8 ,0x6a ,0xb2 ,0xe0 ,0xb3 ,0x1d ,0xab ,0x3b ,0xc9 ,0x77 ,0x3d , +0x0f ,0xc3 ,0xbe ,0x4b ,0x8b ,0x28 ,0xbd ,0x7c ,0xe6 ,0xb2 ,0x06 ,0x1f , +0xf9 ,0x8f ,0x16 ,0x62 ,0xbf ,0xc7 ,0x55 ,0x73 ,0xd4 ,0xf1 ,0x5a ,0x95 , +0x80 ,0xa3 ,0x4e ,0xaa ,0x60 ,0x17 ,0x3c ,0xc9 ,0x5e ,0xd4 ,0x0c ,0x56 , +0x7a ,0x77 ,0x8e ,0x7f ,0x67 ,0x08 ,0x2f ,0xd9 ,0x21 ,0x19 ,0xfd ,0x86 , +0x8c ,0x23 ,0x8d ,0xf6 ,0x92 ,0x1f ,0x36 ,0x2c ,0x7c ,0x83 ,0xbd ,0x2f , +0x6c ,0x63 ,0x7c ,0xb7 ,0x93 ,0x74 ,0x1b ,0xc2 ,0x95 ,0x34 ,0x26 ,0x1e , +0x07 ,0x87 ,0x3a ,0xb6 ,0xe2 ,0x39 ,0x71 ,0x9b ,0x20 ,0xcd ,0x63 ,0xf0 , +0xbf ,0x48 ,0xb5 ,0x0e ,0x49 ,0x86 ,0x50 ,0x80 ,0xbd ,0xd6 ,0x0e ,0xab , +0xd5 ,0x69 ,0x1b ,0xa4 ,0xb3 ,0x63 ,0x3c ,0x8f ,0xcb ,0x42 ,0xdb ,0xd7 , +0x1a ,0xf4 ,0xdf ,0x9e ,0x25 ,0xfc ,0xd4 ,0x00 ,0xcb ,0xec ,0x57 ,0x69 , +0x30 ,0x15 ,0x4d ,0x7a ,0x69 ,0x28 ,0x2f ,0x2b ,0x34 ,0x26 ,0xd1 ,0xe7 , +0x01 ,0x42 ,0x5e ,0x02 ,0xe2 ,0x75 ,0xe8 ,0x52 ,0x8a ,0xb4 ,0x71 ,0xfa , +0xc3 ,0x3d ,0xe6 ,0xac ,0xeb ,0xf3 ,0x93 ,0xe0 ,0x37 ,0xcd ,0x66 ,0x92 , +0x66 ,0x2c ,0xfe ,0x4b ,0xd6 ,0x3c ,0xf1 ,0x57 ,0xe5 ,0xcf ,0xf5 ,0xd0 , +0xdb ,0x0e ,0x1f ,0x82 ,0x65 ,0x3b ,0xab ,0x69 ,0x42 ,0x53 ,0x7d ,0xa4 , +0x7c ,0xb7 ,0x86 ,0xeb ,0x23 ,0x45 ,0xa8 ,0x4a ,0x73 ,0xfc ,0x38 ,0xc6 , +0xe5 ,0x2c ,0xab ,0x80 ,0xfb ,0x23 ,0xb2 ,0x0c ,0x53 ,0x28 ,0x21 ,0x37 , +0x54 ,0x9c ,0x72 ,0x51 ,0x0f ,0x44 ,0x50 ,0xd3 ,0xe1 ,0xd5 ,0xb2 ,0x27 , +0x83 ,0xb6 ,0xe9 ,0x4d ,0x64 ,0x5c ,0x17 ,0x0f ,0xe0 ,0x13 ,0xe4 ,0x26 , +0x6b ,0xd0 ,0xd8 ,0x25 ,0xe3 ,0x69 ,0x6a ,0x95 ,0x3f ,0x4a ,0x4e ,0xa0 , +0x58 ,0xbc ,0x28 ,0x47 ,0x8b ,0x68 ,0xe4 ,0x41 ,0x90 ,0x46 ,0x1b ,0x84 , +0xa0 ,0x7b ,0x46 ,0x46 ,0x03 ,0xee ,0x21 ,0x0d ,0x34 ,0xed ,0xff ,0x15 , +0x57 ,0x06 ,0xdf ,0x71 ,0x09 ,0xb2 ,0x66 ,0x0d ,0x6e ,0xcc ,0xa5 ,0x0c , +0xaf ,0x3f ,0x24 ,0x8f ,0xd1 ,0xc8 ,0x44 ,0x86 ,0xaf ,0xbf ,0xeb ,0x2f , +0xb9 ,0xee ,0xa7 ,0xcf ,0xe4 ,0xe8 ,0xec ,0x47 ,0x09 ,0xd8 ,0x95 ,0x9e , +0x3c ,0xda ,0x92 ,0x41 ,0x61 ,0xf5 ,0xc3 ,0xec ,0x00 ,0xe4 ,0xa3 ,0x0d , +0x4a ,0xb3 ,0xf6 ,0x82 ,0x05 ,0x38 ,0x70 ,0x6a ,0xd1 ,0x28 ,0x2c ,0xb3 , +0xc6 ,0xbb ,0x38 ,0xb3 ,0x06 ,0x7f ,0xd6 ,0x4c ,0xe7 ,0xfb ,0xef ,0x0d , +0x52 ,0x66 ,0xbe ,0xd8 ,0xa6 ,0x6f ,0xe8 ,0xd9 ,0x42 ,0x4f ,0xad ,0xe8 , +0xe8 ,0x6c ,0xf9 ,0xe9 ,0x42 ,0xd9 ,0x66 ,0x6e ,0xec ,0xfe ,0xf5 ,0x91 , +0xbf ,0x0a ,0x98 ,0xd8 ,0x7b ,0x23 ,0x12 ,0xa6 ,0x04 ,0xa8 ,0xb3 ,0x61 , +0x13 ,0x65 ,0xc0 ,0xe2 ,0x82 ,0xb9 ,0xb2 ,0x38 ,0x07 ,0x06 ,0xca ,0x64 , +0x6c ,0x23 ,0x93 ,0x60 ,0x1d ,0x4d ,0x38 ,0x5e ,0x8e ,0x90 ,0x16 ,0x4a , +0xfd ,0xb3 ,0xcd ,0x84 ,0x9c ,0xa5 ,0xfa ,0x73 ,0x2d ,0xcb ,0x87 ,0x31 , +0x3d ,0xf8 ,0xfc ,0xeb ,0xa7 ,0x56 ,0x2f ,0x5b ,0x95 ,0x9a ,0xc6 ,0x82 , +0x29 ,0x86 ,0x47 ,0xe2 ,0xc2 ,0x84 ,0x01 ,0xaf ,0xc8 ,0x0b ,0x2d ,0xfb , +0x34 ,0xba ,0x5d ,0x9d ,0xd1 ,0x85 ,0xd5 ,0x1e ,0x63 ,0xcb ,0x3c ,0xa8 , +0xfa ,0x79 ,0xef ,0x12 ,0xa6 ,0xb5 ,0xdb ,0xc5 ,0x1d ,0x6a ,0xa7 ,0x54 , +0x58 ,0x0c ,0xbe ,0x61 ,0xe5 ,0x96 ,0x7f ,0x4a ,0x3b ,0x59 ,0x32 ,0x2d , +0x06 ,0x44 ,0x83 ,0x5c ,0xad ,0xe9 ,0xfe ,0x7c ,0xd7 ,0x5b ,0x34 ,0xa1 , +0xa3 ,0xad ,0x9a ,0xbf ,0xd5 ,0x30 ,0xf0 ,0x22 ,0xfc ,0x94 ,0x7f ,0xd4 , +0xa4 ,0xca ,0x88 ,0x31 ,0xe7 ,0xf2 ,0x89 ,0x2d ,0xda ,0xe6 ,0x91 ,0xa6 , +0x27 ,0x22 ,0x74 ,0x9f ,0xc6 ,0x72 ,0x4f ,0xf6 ,0xa9 ,0xfe ,0x7a ,0xf0 , +0xa8 ,0x6b ,0x6c ,0x9f ,0xe9 ,0x2a ,0x9b ,0x23 ,0x9e ,0xb8 ,0x2b ,0x29 , +0x65 ,0xa7 ,0x5d ,0xbd ,0x10 ,0xe4 ,0x56 ,0x02 ,0x94 ,0xdd ,0xd1 ,0xab , +0x9b ,0x82 ,0x2d ,0x8d ,0xf6 ,0xd3 ,0x65 ,0x63 ,0x4a ,0xc4 ,0x86 ,0x61 , +0x37 ,0x9f ,0xdb ,0x4b ,0x34 ,0x20 ,0x0a ,0xca ,0x45 ,0x6c ,0x06 ,0xc4 , +0x9c ,0x74 ,0x4d ,0x83 ,0x6a ,0x8d ,0xad ,0xc6 ,0x61 ,0x3a ,0x8d ,0xde , +0x6c ,0xf9 ,0x8e ,0x33 ,0xa2 ,0xee ,0x99 ,0xc7 ,0xe4 ,0x52 ,0xb2 ,0x44 , +0x6f ,0x2f ,0x0f ,0x41 ,0xa9 ,0x1a ,0xd3 ,0x96 ,0x42 ,0xc6 ,0x49 ,0x12 , +0x6a ,0xf0 ,0x29 ,0xa9 ,0x0c ,0x9c ,0x50 ,0x5d ,0x1d ,0xd1 ,0x42 ,0x7e , +0x6f ,0x36 ,0x48 ,0x0f ,0x58 ,0x14 ,0x94 ,0xc0 ,0x10 ,0x1e ,0xe0 ,0xb2 , +0xdd ,0xba ,0x57 ,0x91 ,0x4d ,0xd5 ,0xdc ,0xa6 ,0x4c ,0x68 ,0x00 ,0x6c , +0xb3 ,0x5d ,0x32 ,0x13 ,0xbe ,0xa8 ,0xc3 ,0xfb ,0xd4 ,0x19 ,0x40 ,0xf5 , +0x6f ,0x63 ,0xa1 ,0x07 ,0xbf ,0xa2 ,0x8b ,0xfc ,0xfe ,0xf8 ,0xa1 ,0x33 , +0x70 ,0x07 ,0x6d ,0xc5 ,0x72 ,0xa0 ,0x39 ,0xd6 ,0xd7 ,0x76 ,0x6c ,0xfa , +0x1f ,0x04 ,0xd6 ,0x23 ,0xbf ,0x66 ,0x78 ,0x92 ,0x00 ,0x11 ,0x8a ,0x75 , +0x67 ,0x44 ,0xa6 ,0x7c ,0xd0 ,0x14 ,0xe6 ,0xd0 ,0x31 ,0x6d ,0xdb ,0xc5 , +0xb1 ,0xa7 ,0x99 ,0xc3 ,0xaf ,0x18 ,0x7a ,0x26 ,0x46 ,0xad ,0x6d ,0x0c , +0xb6 ,0xb5 ,0xad ,0xc1 ,0xcf ,0x60 ,0x99 ,0xf5 ,0x9f ,0x88 ,0xaf ,0x0e , +0x37 ,0x15 ,0xf9 ,0x2b ,0x1a ,0x5f ,0xfb ,0xc9 ,0xf8 ,0xd4 ,0xf0 ,0x97 , +0xd2 ,0x91 ,0xf4 ,0x94 ,0xa2 ,0xd3 ,0x3b ,0x8b ,0x0c ,0x22 ,0xa0 ,0xac , +0xb3 ,0xb5 ,0xdf ,0xf2 ,0x27 ,0x38 ,0x47 ,0x53 ,0x5b ,0x6e ,0x8f ,0x98 , +0x9e ,0xad ,0xb6 ,0xf5 ,0x0e ,0x17 ,0x20 ,0x35 ,0x54 ,0x6b ,0x73 ,0xa6 , +0x64 ,0x65 ,0xac ,0xb8 ,0xc1 ,0xd3 ,0xf7 ,0x07 ,0x82 ,0x93 ,0x9d ,0xcb , +0xcc ,0xe9 ,0x0c ,0x51 ,0x52 ,0x85 ,0x8b ,0x95 ,0xa6 ,0xb1 ,0xce ,0xdc , +0xfa ,0x00 ,0x00 ,0x08 ,0x14 ,0x1c ,0x23 ,0x2a ,0x35 , +}; + +static const u8 fips_test_mldsa65_public_key[]__initconst __maybe_unused = { +0x9f ,0x55 ,0x1e ,0x7f ,0x9c ,0x08 ,0xb2 ,0x83 ,0xfd ,0x5b ,0xa2 ,0xac , +0x4f ,0x26 ,0xc2 ,0xf5 ,0x06 ,0x05 ,0x96 ,0x08 ,0x24 ,0xad ,0xec ,0xe4 , +0x99 ,0xcc ,0x6c ,0xbd ,0x55 ,0x37 ,0x15 ,0x94 ,0xab ,0x31 ,0x9e ,0x56 , +0xe5 ,0xe4 ,0x55 ,0xec ,0x4d ,0x49 ,0x5b ,0x5a ,0x7a ,0xe8 ,0xc3 ,0x4a , +0x08 ,0x44 ,0x4a ,0xc2 ,0x2d ,0xe4 ,0x61 ,0x33 ,0x90 ,0x20 ,0x71 ,0x45 , +0xa5 ,0x45 ,0xd0 ,0x83 ,0x2b ,0x32 ,0x6c ,0xa7 ,0x9e ,0x76 ,0xcd ,0xfb , +0x58 ,0x15 ,0x9e ,0x74 ,0x0d ,0x67 ,0x57 ,0xb1 ,0x06 ,0x5b ,0x5d ,0xd5 , +0x1c ,0xbb ,0x95 ,0x40 ,0x1c ,0x71 ,0x31 ,0x03 ,0xef ,0xff ,0x04 ,0x6b , +0xdd ,0xa2 ,0xf0 ,0x32 ,0x00 ,0x72 ,0xbc ,0x87 ,0xb6 ,0x2c ,0x1f ,0x90 , +0x7f ,0x92 ,0xa0 ,0xb2 ,0x04 ,0xdd ,0xa9 ,0xaf ,0x7f ,0x01 ,0x28 ,0x4c , +0xb2 ,0x57 ,0x2d ,0x56 ,0x93 ,0xd0 ,0xc7 ,0x54 ,0x02 ,0x90 ,0x57 ,0x70 , +0x23 ,0x57 ,0xe8 ,0xe7 ,0x33 ,0x32 ,0x98 ,0xfc ,0x9b ,0x8e ,0x6e ,0x7b , +0xaa ,0x5d ,0xb5 ,0x4e ,0xe0 ,0x5d ,0x97 ,0xa3 ,0xea ,0x43 ,0x7e ,0xb3 , +0xa4 ,0x8c ,0xcf ,0xdc ,0xc0 ,0x51 ,0xa7 ,0x99 ,0x45 ,0x3d ,0x3c ,0xa0 , +0xba ,0xc5 ,0xff ,0xe1 ,0x89 ,0xb3 ,0x7d ,0xc3 ,0xdc ,0xe2 ,0x23 ,0x81 , +0xff ,0xa9 ,0xc7 ,0x93 ,0xc6 ,0x67 ,0xad ,0x94 ,0xcf ,0xeb ,0x91 ,0x78 , +0x15 ,0x25 ,0xf7 ,0xf5 ,0x06 ,0x08 ,0x2f ,0x0c ,0xee ,0x0b ,0x6a ,0x06 , +0x59 ,0xe0 ,0x1f ,0x2e ,0x5a ,0x12 ,0x06 ,0xf5 ,0xf4 ,0x8e ,0x75 ,0x57 , +0xa9 ,0x33 ,0x23 ,0x0f ,0xc2 ,0x6f ,0x02 ,0xf8 ,0x68 ,0x0f ,0x62 ,0x02 , +0x81 ,0xfe ,0x03 ,0x7c ,0xaf ,0xd7 ,0x42 ,0x5b ,0xcc ,0xe7 ,0x2b ,0xea , +0x49 ,0xab ,0x03 ,0x6d ,0x0a ,0x02 ,0xae ,0x47 ,0x79 ,0xce ,0xfd ,0x18 , +0x76 ,0x07 ,0x9e ,0xa6 ,0xbf ,0x7e ,0x8d ,0x73 ,0xf9 ,0x44 ,0xeb ,0x8c , +0xc5 ,0x59 ,0xb7 ,0x19 ,0xf6 ,0x73 ,0x53 ,0x42 ,0x2a ,0x55 ,0x7b ,0xb4 , +0x56 ,0x49 ,0x08 ,0x9e ,0x9a ,0x65 ,0x60 ,0x70 ,0x1d ,0xbd ,0xc6 ,0x85 , +0x29 ,0xde ,0xfe ,0x44 ,0xae ,0xdf ,0x25 ,0xfd ,0x5b ,0x74 ,0x6c ,0x96 , +0xe6 ,0x81 ,0x37 ,0x80 ,0xe0 ,0x9e ,0xf3 ,0x75 ,0x63 ,0xb4 ,0xc9 ,0x2f , +0x71 ,0xe6 ,0xeb ,0xdf ,0xaf ,0x7e ,0xff ,0x9e ,0xe0 ,0xbf ,0xca ,0xca , +0x11 ,0xed ,0xc6 ,0x04 ,0xd8 ,0x49 ,0x13 ,0x2c ,0x63 ,0xf1 ,0xb3 ,0x17 , +0x74 ,0xd9 ,0x50 ,0x3f ,0xb9 ,0x29 ,0x0e ,0x48 ,0xa7 ,0xf0 ,0xdc ,0x78 , +0x18 ,0x0e ,0x9f ,0xb7 ,0xde ,0x36 ,0x79 ,0x67 ,0xa4 ,0x23 ,0x08 ,0xe7 , +0x62 ,0xe8 ,0xa4 ,0xe5 ,0xcf ,0xff ,0x35 ,0x55 ,0x36 ,0x2e ,0x3a ,0xe4 , +0x45 ,0x6a ,0x80 ,0xf2 ,0xca ,0xe7 ,0x40 ,0x79 ,0x14 ,0xc4 ,0x62 ,0x38 , +0xbb ,0xd0 ,0x4e ,0x6c ,0xb5 ,0x85 ,0x42 ,0x3f ,0x35 ,0xf7 ,0xd7 ,0x54 , +0xb8 ,0x2b ,0x8b ,0xd5 ,0x6f ,0x16 ,0x61 ,0x27 ,0x23 ,0xac ,0xdb ,0xea , +0x9b ,0x3b ,0x99 ,0xcd ,0x79 ,0xe6 ,0x12 ,0x09 ,0x99 ,0x09 ,0xa4 ,0xe1 , +0x88 ,0x25 ,0x00 ,0x9e ,0x60 ,0x16 ,0x63 ,0xd7 ,0x42 ,0x9b ,0xcc ,0x36 , +0x9a ,0x8d ,0xa3 ,0x75 ,0x36 ,0xa1 ,0xa8 ,0xfc ,0xa2 ,0xfe ,0x29 ,0x26 , +0x4c ,0x93 ,0x21 ,0x44 ,0x6b ,0x1c ,0xba ,0xbd ,0xef ,0xff ,0x6d ,0x1f , +0x2b ,0x6c ,0x66 ,0x81 ,0x9a ,0x3a ,0x1d ,0x0b ,0xd7 ,0x24 ,0xd4 ,0xb8 , +0x93 ,0xb5 ,0x22 ,0xf9 ,0xd2 ,0xf4 ,0xa5 ,0x05 ,0x78 ,0x38 ,0xae ,0x58 , +0xf6 ,0x50 ,0x8f ,0x47 ,0x1d ,0xf3 ,0xfb ,0x0d ,0x04 ,0x14 ,0xd1 ,0xd6 , +0xd8 ,0x2e ,0xf2 ,0xbd ,0xf5 ,0x71 ,0x86 ,0x4c ,0xdd ,0x61 ,0x24 ,0x18 , +0x5b ,0x54 ,0xf5 ,0xcd ,0x99 ,0x89 ,0x01 ,0x8e ,0xd1 ,0x19 ,0x52 ,0xbc , +0x45 ,0xed ,0x0e ,0xec ,0x72 ,0x2f ,0x5a ,0xe7 ,0xdf ,0x36 ,0x1c ,0x57 , +0x9f ,0xb2 ,0x8b ,0xf2 ,0x78 ,0x1b ,0x3e ,0xc5 ,0x48 ,0x1f ,0x27 ,0x04 , +0x76 ,0x10 ,0x44 ,0xee ,0x5c ,0x68 ,0x8f ,0xca ,0xd7 ,0x31 ,0xfc ,0x5c , +0x40 ,0x03 ,0x2e ,0xbd ,0x1d ,0x59 ,0x13 ,0x57 ,0xbc ,0x33 ,0xc6 ,0xa1 , +0xa3 ,0xe5 ,0x55 ,0x79 ,0x9b ,0x7e ,0x49 ,0xbb ,0x23 ,0x96 ,0xc3 ,0x1c , +0xfe ,0x66 ,0xeb ,0x5b ,0x5f ,0xe5 ,0x03 ,0xc9 ,0xa4 ,0xac ,0x4d ,0xc4 , +0x50 ,0xbb ,0xd3 ,0xc1 ,0x91 ,0x48 ,0xe0 ,0x93 ,0x92 ,0x2a ,0xdb ,0x41 , +0x37 ,0x98 ,0xbc ,0xa2 ,0x7a ,0x09 ,0x92 ,0x0b ,0x1c ,0xe6 ,0x4b ,0x1e , +0x8e ,0x78 ,0x81 ,0x74 ,0x7d ,0x6b ,0x71 ,0xd5 ,0xe7 ,0x0e ,0x7b ,0xc2 , +0x74 ,0x5d ,0x89 ,0xf1 ,0xfa ,0x59 ,0xaa ,0xf7 ,0x86 ,0x66 ,0x7e ,0xc2 , +0x9c ,0xf4 ,0xd5 ,0x8d ,0xc0 ,0xb7 ,0xb7 ,0xa2 ,0xd5 ,0xcd ,0x51 ,0xc3 , +0x7d ,0xa9 ,0x5e ,0x46 ,0xba ,0x06 ,0xa3 ,0x4d ,0x60 ,0xd6 ,0x68 ,0xc6 , +0xf9 ,0x63 ,0x88 ,0x17 ,0x5c ,0x20 ,0xe1 ,0xc4 ,0x0f ,0x3f ,0xc1 ,0xa9 , +0xa7 ,0x3e ,0x39 ,0xef ,0x2f ,0xaf ,0xc4 ,0x69 ,0x29 ,0xe3 ,0xd4 ,0x8d , +0xe0 ,0x0e ,0x88 ,0xc2 ,0x93 ,0x43 ,0xfb ,0x28 ,0xcf ,0x5d ,0x85 ,0x50 , +0xf7 ,0xeb ,0x42 ,0xf5 ,0x87 ,0xde ,0xa5 ,0x65 ,0xef ,0x43 ,0x0c ,0x57 , +0x76 ,0x09 ,0xf4 ,0x5f ,0xde ,0x81 ,0x0a ,0xd9 ,0x59 ,0x41 ,0xa4 ,0x6a , +0xb7 ,0x05 ,0xc7 ,0xa5 ,0xfe ,0x49 ,0xd5 ,0x9b ,0x57 ,0x13 ,0x14 ,0x66 , +0xe2 ,0xb9 ,0xcc ,0x09 ,0x35 ,0xd4 ,0xb0 ,0xe0 ,0xd1 ,0x0d ,0x7e ,0x50 , +0x48 ,0x45 ,0x21 ,0x00 ,0x67 ,0xb2 ,0xad ,0xa7 ,0x46 ,0xe2 ,0x6f ,0x70 , +0xe5 ,0x3c ,0x88 ,0x04 ,0xaa ,0x21 ,0xde ,0x03 ,0xb6 ,0x6f ,0xfe ,0x43 , +0x51 ,0xdc ,0x2e ,0x5c ,0x6c ,0x77 ,0x8f ,0x8e ,0x9d ,0x1a ,0x5b ,0x35 , +0xc5 ,0xe4 ,0x48 ,0x82 ,0x17 ,0x4b ,0xf0 ,0xea ,0xc9 ,0x0e ,0xd2 ,0x8f , +0xcd ,0xd5 ,0x01 ,0xbd ,0x7f ,0x0f ,0xf5 ,0xae ,0x92 ,0x28 ,0x1e ,0x2c , +0xf4 ,0xe9 ,0x03 ,0xf7 ,0x0a ,0xeb ,0x84 ,0x18 ,0xa1 ,0x37 ,0x38 ,0x8a , +0x11 ,0xa2 ,0x5d ,0x8c ,0xf6 ,0xe4 ,0x3f ,0x5b ,0x87 ,0x07 ,0x6b ,0xb4 , +0x07 ,0xe0 ,0x8f ,0x30 ,0xc4 ,0xfa ,0x27 ,0xae ,0xfc ,0x02 ,0xd1 ,0x21 , +0x5c ,0xbc ,0x0b ,0x93 ,0x6e ,0x7e ,0xf9 ,0x6b ,0x80 ,0x7a ,0x25 ,0x84 , +0x20 ,0xf1 ,0x6a ,0xfa ,0x75 ,0xed ,0x57 ,0x61 ,0x62 ,0xa7 ,0xf6 ,0x5b , +0xe1 ,0xb0 ,0x38 ,0xc8 ,0xe9 ,0x6d ,0x3f ,0xef ,0x1e ,0x99 ,0x0b ,0xb7 , +0xc8 ,0x9f ,0x76 ,0x5c ,0x04 ,0x1f ,0x02 ,0x92 ,0x00 ,0xa7 ,0x38 ,0x3d , +0x00 ,0x3b ,0xa7 ,0xbc ,0x39 ,0x6e ,0xab ,0xf5 ,0x10 ,0xa8 ,0xba ,0xd6 , +0x28 ,0x6b ,0x0e ,0x00 ,0x48 ,0xf9 ,0x3b ,0x5c ,0xde ,0x59 ,0x93 ,0x46 , +0xd6 ,0x61 ,0x52 ,0x81 ,0x71 ,0x0f ,0x0e ,0x61 ,0xac ,0xc6 ,0x7f ,0x15 , +0x93 ,0xa7 ,0xc1 ,0x16 ,0xb5 ,0xef ,0x85 ,0xd1 ,0xa7 ,0x61 ,0xc2 ,0x85 , +0x1d ,0x61 ,0xc6 ,0xae ,0xb3 ,0x9e ,0x8d ,0x23 ,0xa3 ,0xc8 ,0xd5 ,0xf2 , +0xc7 ,0x1b ,0x7e ,0xef ,0xd2 ,0xdf ,0x25 ,0xaf ,0x4e ,0x81 ,0x15 ,0x59 , +0xe5 ,0x36 ,0xb1 ,0xf1 ,0xd5 ,0xda ,0x58 ,0xd8 ,0xd9 ,0x0d ,0x6d ,0xc9 , +0x25 ,0xb5 ,0xe8 ,0x1d ,0x3b ,0xca ,0x2d ,0xab ,0xf2 ,0xe2 ,0xe9 ,0x55 , +0xd7 ,0xf4 ,0xc7 ,0xd0 ,0x57 ,0x7a ,0x86 ,0x15 ,0x0a ,0x5a ,0x8b ,0xd7 , +0x3f ,0x66 ,0x0f ,0x80 ,0xb4 ,0xe0 ,0x5c ,0x33 ,0xed ,0xaf ,0x1b ,0x3b , +0x6d ,0x1c ,0xd9 ,0x8c ,0xb5 ,0x96 ,0xa3 ,0xfb ,0xcf ,0xcc ,0x97 ,0x1c , +0xae ,0x06 ,0x19 ,0x41 ,0x61 ,0xf8 ,0x97 ,0x6b ,0x82 ,0x5e ,0x1c ,0xbf , +0x6f ,0x43 ,0x3d ,0xe5 ,0x00 ,0xf5 ,0xfe ,0x66 ,0x48 ,0x26 ,0x31 ,0xa1 , +0x72 ,0x67 ,0x6e ,0xd4 ,0x5b ,0x6f ,0x66 ,0xde ,0x70 ,0x8b ,0x2b ,0xc3 , +0xa2 ,0x30 ,0xe9 ,0x55 ,0xc8 ,0xff ,0xf8 ,0xd0 ,0xdd ,0xa9 ,0x21 ,0x85 , +0x6e ,0x6c ,0x82 ,0x66 ,0xcc ,0x52 ,0xf0 ,0x9e ,0x1e ,0xb5 ,0x3a ,0xff , +0x4c ,0xf3 ,0xae ,0x02 ,0xc3 ,0x4b ,0x76 ,0x25 ,0xbd ,0xb0 ,0x21 ,0x54 , +0x61 ,0xda ,0x16 ,0xd3 ,0x23 ,0x86 ,0x41 ,0xa1 ,0x4c ,0x59 ,0x15 ,0x95 , +0x65 ,0x85 ,0xb6 ,0x8e ,0xa6 ,0x37 ,0xc0 ,0xa2 ,0x71 ,0x1d ,0x67 ,0x44 , +0x7b ,0xe5 ,0x4c ,0x4f ,0xb6 ,0x2c ,0x46 ,0xf7 ,0x29 ,0xa5 ,0xf2 ,0xd3 , +0x51 ,0x19 ,0x91 ,0x4d ,0xa7 ,0xb5 ,0x05 ,0xb9 ,0x6e ,0x61 ,0x6e ,0xf8 , +0xc0 ,0x01 ,0xe5 ,0x41 ,0x0a ,0x89 ,0x64 ,0x77 ,0xf2 ,0xc8 ,0x63 ,0x2d , +0x9d ,0x27 ,0x7f ,0x47 ,0x30 ,0x39 ,0xdf ,0xb6 ,0x6e ,0x4f ,0x00 ,0x3f , +0x15 ,0xc6 ,0xaf ,0x62 ,0xdf ,0x3f ,0x47 ,0xe8 ,0x42 ,0x90 ,0x77 ,0x23 , +0x7a ,0xaa ,0x99 ,0x53 ,0x03 ,0x63 ,0x60 ,0x59 ,0x07 ,0x52 ,0x3c ,0xb5 , +0x67 ,0x59 ,0xfe ,0x08 ,0xe6 ,0x43 ,0x0f ,0x3b ,0x08 ,0x7c ,0xc7 ,0x07 , +0x3c ,0xfa ,0x65 ,0xea ,0x69 ,0x51 ,0x41 ,0x31 ,0xb3 ,0x05 ,0x69 ,0xba , +0x2c ,0xbf ,0x89 ,0x25 ,0x9e ,0xfe ,0x07 ,0x13 ,0x78 ,0x0e ,0x16 ,0x54 , +0xdf ,0x23 ,0xdf ,0x10 ,0x69 ,0x79 ,0xd0 ,0x33 ,0xd7 ,0x21 ,0x8b ,0xc8 , +0x2a ,0xd0 ,0x74 ,0x0a ,0xfa ,0xb1 ,0x6f ,0xa3 ,0xcb ,0x1d ,0xca ,0x4f , +0x00 ,0x46 ,0x6c ,0x42 ,0x09 ,0xe0 ,0x30 ,0x89 ,0x08 ,0x33 ,0x9b ,0x7b , +0x7b ,0x0f ,0x69 ,0x5c ,0x0d ,0x34 ,0x91 ,0xfc ,0xfe ,0x22 ,0x82 ,0x02 , +0xcd ,0xfa ,0x97 ,0xe8 ,0x28 ,0x1d ,0xbc ,0x13 ,0x0b ,0xfd ,0x47 ,0xa1 , +0x7e ,0xa2 ,0x86 ,0x4d ,0x6f ,0x12 ,0x51 ,0x35 ,0x7d ,0x76 ,0x8a ,0x58 , +0x05 ,0xb6 ,0x39 ,0xa1 ,0x2f ,0xd7 ,0xda ,0xaf ,0x00 ,0xa0 ,0x1a ,0x94 , +0xd8 ,0x23 ,0x34 ,0x99 ,0x5c ,0xaf ,0xcc ,0x15 ,0x4b ,0x56 ,0xb2 ,0xd2 , +0x81 ,0x07 ,0xd3 ,0xf3 ,0x47 ,0xa2 ,0x45 ,0x93 ,0xcb ,0xae ,0xa7 ,0x6b , +0x3f ,0xf9 ,0xea ,0xfc ,0x0e ,0x64 ,0xf2 ,0x93 ,0x7f ,0x24 ,0x22 ,0x73 , +0x86 ,0xc7 ,0x2d ,0x75 ,0x9b ,0x41 ,0x8b ,0xfb ,0x3b ,0x26 ,0x2a ,0xe5 , +0x0b ,0xd4 ,0x00 ,0xe3 ,0x2c ,0x69 ,0x49 ,0x62 ,0x6c ,0x13 ,0x58 ,0x6e , +0xac ,0x43 ,0xe5 ,0x2b ,0x3b ,0x88 ,0xdc ,0xd4 ,0x41 ,0xe8 ,0xee ,0x4e , +0xc3 ,0x28 ,0x91 ,0x17 ,0x9a ,0x5a ,0xdb ,0x80 ,0x8b ,0x4d ,0x64 ,0xcc , +0xbe ,0x66 ,0xa4 ,0x62 ,0xfb ,0x13 ,0x44 ,0x10 ,0xd9 ,0xe4 ,0xd5 ,0xa5 , +0xae ,0x9e ,0x42 ,0x50 ,0xfc ,0x78 ,0xad ,0xfa ,0xc4 ,0xd0 ,0x5a ,0x60 , +0x9b ,0x45 ,0x2b ,0x61 ,0x5c ,0x57 ,0xb5 ,0x92 ,0x28 ,0xe9 ,0xf5 ,0x35 , +0x67 ,0xc1 ,0x5e ,0xa8 ,0x1c ,0x99 ,0x36 ,0x38 ,0xb8 ,0x5c ,0xff ,0x3d , +0xa0 ,0xfc ,0xb0 ,0xbc ,0x3d ,0x2c ,0xb4 ,0x36 ,0x17 ,0xb4 ,0x6d ,0xb5 , +0x39 ,0x45 ,0xa9 ,0x2a ,0x6b ,0xa2 ,0x24 ,0x44 ,0x30 ,0xab ,0x2c ,0x82 , +0x36 ,0xdc ,0xd6 ,0x36 ,0x5d ,0x0a ,0xdc ,0xee ,0x0f ,0x2b ,0x28 ,0x99 , +0xdc ,0x67 ,0x0d ,0xea ,0x6e ,0x42 ,0xb9 ,0x45 ,0x7f ,0xd2 ,0x96 ,0x1e , +0x60 ,0x42 ,0xeb ,0x1e ,0x5f ,0x8e ,0xa9 ,0xdc ,0xd3 ,0x8a ,0xd6 ,0xbd , +0x4e ,0x1f ,0x42 ,0x75 ,0x1d ,0xe2 ,0xc6 ,0x11 ,0xc9 ,0x80 ,0x1f ,0xfe , +0x99 ,0x52 ,0x4d ,0x7b ,0x35 ,0xf7 ,0xb7 ,0xc3 ,0xee ,0xd6 ,0x94 ,0xf5 , +0x74 ,0xa0 ,0x69 ,0xcd ,0x1f ,0x2b ,0xd0 ,0x87 ,0xf7 ,0x8c ,0x69 ,0xc5 , +0x96 ,0x70 ,0x91 ,0xe8 ,0x3d ,0xd2 ,0xcc ,0xf1 ,0x4c ,0xcd ,0xe2 ,0x14 , +0x00 ,0x10 ,0x4a ,0xd9 ,0x6a ,0x5d ,0x65 ,0x2c ,0x4b ,0x79 ,0x0c ,0xc4 , +0x78 ,0x5e ,0xc8 ,0xc5 ,0x37 ,0x74 ,0x6d ,0x50 ,0x5c ,0x34 ,0x1f ,0xe0 , +0xf4 ,0xe3 ,0xe1 ,0x86 ,0x68 ,0xb1 ,0xea ,0x70 ,0xf0 ,0xae ,0xe4 ,0x59 , +0xa1 ,0x08 ,0x7e ,0x35 ,0xa3 ,0x16 ,0xd2 ,0xb0 ,0xa3 ,0xd4 ,0xb0 ,0x74 , +0x8c ,0x05 ,0x79 ,0x73 ,0xfb ,0xe6 ,0x65 ,0x96 ,0x15 ,0x07 ,0xd5 ,0xaf , +0x88 ,0x9e ,0x6b ,0xf0 ,0xbb ,0x3f ,0xe6 ,0xd1 ,0x6a ,0xe7 ,0xc9 ,0xae , +0xd9 ,0xb0 ,0x16 ,0x1c ,0x40 ,0xeb ,0xdb ,0xc1 ,0xbf ,0x83 ,0xdb ,0x8a , +0x4f ,0x96 ,0xca ,0xd7 ,0x22 ,0x06 ,0x87 ,0x08 ,0x9d ,0x65 ,0x2f ,0xd9 , +0x8e ,0x95 ,0x6c ,0xcc ,0xbf ,0x76 ,0x2a ,0xea ,0x5c ,0x8e ,0x5b ,0x17 , +0x0f ,0x75 ,0x7b ,0xfa ,0xf9 ,0xfb ,0xaa ,0x92 ,0xc7 ,0x7e ,0x63 ,0x63 , +0x54 ,0xa4 ,0xff ,0xf6 ,0xc0 ,0xc0 ,0xf5 ,0x70 ,0xd8 ,0xe3 ,0xa4 ,0x79 , +0x16 ,0xf0 ,0x6f ,0x90 ,0x5e ,0xb7 ,0xab ,0x6f ,0xab ,0x75 ,0x3b ,0xe1 , +0x4c ,0xa8 ,0x0b ,0x72 ,0x5f ,0x5f ,0x11 ,0x22 ,0x36 ,0x71 ,0x20 ,0xd3 , +0x5b ,0x5e ,0x07 ,0x06 ,0x76 ,0x1a ,0xcc ,0x5e ,0x7c ,0x97 ,0x7d ,0xb2 , +0x6b ,0xf8 ,0x39 ,0x89 ,0x37 ,0xb6 ,0x6d ,0xea ,0x74 ,0x57 ,0x28 ,0xd7 , +0x0e ,0x9b ,0xeb ,0x28 ,0x88 ,0x90 ,0xfd ,0x2d ,0x16 ,0x21 ,0x74 ,0x26 , +0xc5 ,0xb8 ,0x44 ,0xad ,0x9f ,0x97 ,0xf9 ,0x65 ,0x36 ,0xd8 ,0x00 ,0x59 , +0x17 ,0x49 ,0xf9 ,0xc7 ,0xb3 ,0x84 ,0xb9 ,0xe2 ,0x95 ,0xe0 ,0xd1 ,0x7f , +0x5f ,0xaa ,0xd7 ,0xfd ,0x6a ,0x6a ,0x83 ,0x14 ,0x46 ,0x1d ,0x12 ,0x8d , +0x09 ,0xc3 ,0xa5 ,0xca ,0x72 ,0xa3 ,0x25 ,0x65 ,0xb6 ,0x40 ,0x25 ,0x04 , +0x51 ,0xab ,0x22 ,0xeb ,0xd7 ,0x69 ,0xc9 ,0x22 ,0x9c ,0xa0 ,0x19 ,0x5c , +0x1a ,0xfd ,0x41 ,0x8f ,0x98 ,0xc5 ,0x71 ,0xb8 ,0x6f ,0x76 ,0xae ,0xfa , +0x9b ,0x03 ,0xab ,0x43 ,0x81 ,0x3b ,0x66 ,0xae ,0xf0 ,0xd2 ,0xb7 ,0xee , +0x9a ,0xe3 ,0xae ,0x45 ,0xc1 ,0x86 ,0xb0 ,0xce ,0x9e ,0x2b ,0xec ,0xb8 , +0xcf ,0xca ,0x0e ,0x8c ,0x33 ,0xfa ,0xa7 ,0xef ,0xf7 ,0xfc ,0xa1 ,0x41 , +0x49 ,0xd3 ,0x6d ,0xb5 ,0x58 ,0xe4 ,0x0e ,0x24 ,0xd2 ,0x8a ,0x74 ,0xc9 , +0x56 ,0x2e ,0x53 ,0xc7 ,0x7a ,0x38 ,0x0f ,0x4b ,0xd9 ,0xf9 ,0x2f ,0xfa , +0x7d ,0xee ,0x14 ,0x18 ,0xce ,0x75 ,0x42 ,0x6c ,0x03 ,0x34 ,0xce ,0x80 , +0xec ,0xf2 ,0x05 ,0xf0 ,0xdf ,0xcd ,0xf8 ,0xdb ,0x26 ,0x7d ,0xb6 ,0x3d , +0x28 ,0x24 ,0x7e ,0x7e ,0x39 ,0x9f ,0xa6 ,0xc6 ,0xeb ,0x2a ,0xc8 ,0x17 , +0x94 ,0xa9 ,0x89 ,0xf5 ,0xdf ,0xcb ,0x77 ,0xfd ,0xc9 ,0x9e ,0x68 ,0x98 , +0x7d ,0x04 ,0x50 ,0x3c ,0x64 ,0x1d ,0x66 ,0xb0 ,0x97 ,0x06 ,0xb6 ,0x08 , +0x5b ,0xe4 ,0x17 ,0x44 ,0xd6 ,0x94 ,0x39 ,0x6b ,0x03 ,0x2c ,0xcb ,0x5a , +0x8d ,0x86 ,0x08 ,0x23 ,0x4f ,0x95 ,0xa8 ,0x1a , +}; + +static const u8 fips_test_mldsa65_message[]__initconst __maybe_unused = { +0x1a ,0x84 ,0x21 ,0x0d ,0x35 ,0x7a ,0x88 ,0xc8 ,0x6a ,0x11 ,0xe3 , +0x15 ,0x24 ,0xec ,0x0d ,0x2e ,0x76 ,0xb9 ,0xcf ,0x2b ,0x04 ,0x25 , +0x16 ,0xae ,0x62 ,0x42 ,0xa0 ,0x20 ,0x68 ,0x25 ,0x3e ,0xb4 ,0x75 , +0xa7 ,0x1d ,0x64 ,0xc3 ,0xd1 ,0x08 ,0x07 ,0x67 ,0xb6 ,0xf7 ,0x76 , +0x76 ,0xf6 ,0xd6 ,0x62 ,0x66 ,0x04 ,0x89 ,0x0c ,0x8f ,0x07 ,0xac , +0xc8 ,0x51 ,0x77 ,0xd9 ,0x47 ,0x5e ,0xb5 ,0x22 ,0x20 , +};lib/crypto/mldsa.c +31
-0@@ -11,10 +11,11 @@#include <linux/export.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/string.h> #include <linux/unaligned.h> +#include "fips-mldsa.h" #define Q 8380417/* The prime q = 2^23 - 2^13 + 1 */ #define QINV_MOD_2_32 58728449/* Multiplicative inverse of q mod 2^32 */ #define N 256/* Number of components per ring element */ #define D 13/* Number of bits dropped from the public key vector t */ @@ -646,7 +647,37 @@ int mldsa_verify(enum mldsa_alg alg, const u8 *sig, size_t sig_len,/* ||z||_infinity < gamma1 - beta was already checked in decode_z(). */ return 0 ; }EXPORT_SYMBOL_GPL (mldsa_verify); +#ifdef CONFIG_CRYPTO_FIPS +static int __init mldsa_mod_init (void ) +{ +if (fips_enabled) { +/* +* FIPS cryptographic algorithm self-test. As per the FIPS +* Implementation Guidance, testing any ML-DSA parameter set +* satisfies the test requirement for all of them, and only a +* positive test is required. +*/ +int err =mldsa_verify (MLDSA65 , fips_test_mldsa65_signature, +sizeof (fips_test_mldsa65_signature), + fips_test_mldsa65_message, +sizeof (fips_test_mldsa65_message), + fips_test_mldsa65_public_key, +sizeof (fips_test_mldsa65_public_key)); +if (err) +panic ("mldsa: FIPS self-test failed; err=%pe\n" , +ERR_PTR (err)); + } +return 0 ; +} +subsys_initcall (mldsa_mod_init); + +static void __exit mldsa_mod_exit(void) +{ +} +module_exit (mldsa_mod_exit); +#endif /* CONFIG_CRYPTO_FIPS */ +MODULE_DESCRIPTION ("ML-DSA signature verification" );MODULE_LICENSE ("GPL" );base-commit:
cb35268f1fcf233112a51b564aaac445bc2d7ba9--
2.52.0
Quoted 10 lines · Eric Biggers
Since ML-DSA is FIPS-approved, add the boot-time self-test which is apparently required.
Just add a test vector manually for now, borrowed from
lib/crypto/tests/mldsa-testvecs.h(where in turn it's borrowed from leancrypto). The SHA-* FIPS test vectors are generated byscripts/crypto/gen-fips-testvecs.pyinstead, but the common Python libraries don't support ML-DSA yet.Signed-off-by Eric Biggers <[email protected]>